Klustring av svenska tidningsartiklar Magnus Rosell rosell@nada.kth.se http://www.nada.kth.se/ rosell/
Klustring Kategorisering eller klassificering att föra texter till på förhand bestämda kategorier Klustring dela in en mängd texter i kluster (grupper) efter innehåll, så att texterna inom ett kluster är mer lika varandra än texter i andra kluster. Detta skapar en (okänd) klassificering. Klustring har tidigare (missvisande) kallats Automatic Classification
Representation Representation av texter som i informationssökning; vector space model med tf- och idf-viktning Likhetsmått, tex cosine measure Ett kluster kan representeras med en vektor i samma rum. Denna kan kallas centroid eller klustercentrum och beräknas tex som medelvärdet (komponentvis) av alla de i klustret ingående texterna.
Utvärdering Hur ser en bra indelning av texter ut? Inre mått använder inte yttre information. Yttre mått använder yttre information, tex en färdig kategorisering.
Inre mått Likhetsmåttet kan användas till utvärdering. Ju mer lika klustren är sig själva desto mer samlade"är de. Problemet med inre mått är att de beror av representationen. Klustringar med olika representation kan inte jämföras med varandra.
Yttre mått Yttre mått litar till yttre information. Vad är en bra indelning? Precision, P, och täckning, R, ger värde för varje enskilt kluster: P ij = n ij /n i R ij = n ij /n j där n i är antalet texter i kluster i, n j antalet texter i kategori j och n ij är antalet texter ur kategori j iklusteri.
Yttre mått (forts) F-measure (högre bättre): F ij = 2P ijr ij P ij + R ij F-measure för hela klustringen (hierarkisk): F = i n i n max {F ij } j där max är taget över alla kluster på alla nivåer och n är totala antalet texter
Yttre mått (forts) Entropi (lägre bättre, mer ordnat) är det mått jag främst använt. Sannolikhet : p ij = n ij n i där n ij är antalet texter ur kategori j i kluster i och n i är antalet texter i kluster i.
Yttre mått (forts) Entropi för kluster i: E i = j p ij log p ij Entropi för hela klustringen: E tot = i n i n E i
Två algoritmer K-mean (icke hierarkisk, partionerande) Snabb: O(n) textjämförelser, n antal texter Agglomerativ klustring (hierarkisk) Långsam: O(n 2 ) textjämförelser Det finns många varianter av dessa båda. Jag beskriver dem enkelt och generellt.
K-mean Skapa k kluster med centroider (ta tex slumpmässigt k texter och låt dessa bilda var sitt kluster) Gå igenom alla texter och för varje text till det kluster den är mest lik Beräkna de nya centroiderna Upprepa 2 och 3 tills ett stoppkriterie uppfyllts
Agglomerativ klustring Låt alla texter bli ett eget kluster Beräkna likhet mellan alla kluster Slåihopdetvåmestlikaklustren Uppdatera likheterna mellan klustren Upprepa 3 och 4 tills ett stoppkriterie uppfyllts
Vilken av algoritmerna är bäst? Agglomerativ klustring har länge ansetts bättre än k-mean, men Steinbach et al visar med tester att k-mean är bättre för textklustring. De ger också en trolig förklaring: två texter kan ligga närmast varandra i representationsrummet utan att tillhöra samma klass. K-mean fångar globala tendenser medan agglomerativ klustring arbetar lokalt.
Feature reduction (Särdragsreduktion?) LSI Latent Semantic Indexing Reducera rummet till n dimensioner (mha SVD Singular Value Decomposition). Representera texterna i detta nya rum (global projektion). Tar lång tid. Trunkering spar bara de m viktigaste termerna i varje text (lokal projektion). Schütze et al visar med tester att trunkering ger lika bra resultat som LSI. Det räcker att trunkera centroiderna.
Svenska Stemming förbättrar klustringsresultat (entropi) med ungefär 10% i snitt (OBS uppskattning) Uppdelning av sammansatta ord förbättrar också resultatet.
Uppdelning av sammansatta ord Om man söker efter minister"vill man (kanske) även hitta försvarsminister". Bättre på engelska minister of defence". En sökning efter försvarsministerger goda resultat. Sämre på engelska träffar även enbart ministeröch defence". I klustring vill man att texter som handlar om liknande saker ska bli lika varandra.
Uppdelning av sammansatta ord (forts) Rättstavningsprogrammet STAVA (http://www.nada.kth.se/ viggo/stava/) delar upp sammansatta ord i ordled och kontrollerar dessa var för sig. Vissa ord som inte bör delas upp (ur ett "informationsperspektiv) delas upp: miss+förstånd, efter+gift, god+tar, rätt+visa, för+råda, till+dra, stor+slagen, upp+tagen Stopplista med ord som inte bör delas upp.
Uppdelning av sammansatta ord (forts) Vissa delord har väldigt liten betydelse: topp+form, upp+dela, ner+slagen, för+historia, till+fråga Stopplista för vissa ordled: miss, för, upp etc.
Uppdelning av sammansatta ord (forts) Hur ska orden och ordleden viktas?
Tidningsartikelspecifikt (ett sammansatt ord!) Tidningsartiklar har titlar och fetstil. Jag har försökt vikta ord som förekom i titel och fetstil högre. Det gav tyvärr ingen förbättring. Jag klustrade på bara titlarna. Det gav dåliga resultat.
Exempel KTH News Corpus Dagens Nyheter och Aftonbladet är indelade i kategorier (Inrikes, Sport, Kultur, Ekonomi etc)
Några referenser A Comparison of Document Clustering Techniques Michael Steinbach, George Karypis, Vipin Kumar Projections for Efficient Document Clustering Henrich Schütze, Craig Silverstein Scatter/Gather: A Cluster-based Approch to Browsing Large Document Collections Douglass R. Cutting, David R. Karger, Jan O. Pedersen, John W. Tukey Information Retrieval C.J. Van Rijsbergen Klustring av svenska tidningsartiklar (exjobb) Magnus Rosell