- med större korpus Olof Stange & Claes Toll - Språkteknologi
Innehållsförteckning Inledning s. 3 Bakgrund s. 3 Metod s. 3-4 Problem s. 4 Resultat s. 4-5 Analys s. 6-8 Sammanfattning s. 8 Källförteckning s. 9 Bilagor s. 9 2
Inledning är ett tillvägagångssätt för att relatera ord till varandra. Genom att gå igenom fritext kan metoden skapa samband mellan liknande ord med hjälp av deras omgivning. Hur bra metoden fungerar beror på ett antal olika variabler. Resultat man uppnår kan exempelvis ha sin grund i hur stor textmängd man arbetar med, hur stort kontextfönster man väljer att sätta upp för varje ord eller dokument samt hur många dimensioner man arbetar med. I det här arbetet ska vi undersöka hur storleken på textmängden påverkar resultatet. Vi kommer att utgå från ett större textmaterial och jämföra hur mycket varje ny textmängd som läggs till förbättrar utfallet. Resultatet testas med hjälp av orddelen på högskoleprovet där det ord som är närmast i betydelse är det rätta svaret (se kurshemsidan för mer information). Uppgiften bygger på laborationen Statistisk lexikal semantik i. Vi har använt oss av javaprogrammet OrdHP med de inställningar som visade upp de bästa resultaten på Laboration 3. 1 Bakgrund (RI) är en metod för att utvinna relaterade ord ur fritext. Inledningsvis förknippas varje ord eller dokument med en unik och mångdimensionell slumpvektor där ett antal 1:or och -1:or placeras ut. Resten av elementen i vektorn är 0. Metoden går sedan igenom texten och skapar en kontextvektor för varje ord. När ett ord befinner sig i fokus sätts ett kontextfönster upp som innehåller det fokuserade ordet samt ett antal ord före och efter. De omkringliggande ordens slumpvektorer läggs till i det fokuserade ordets kontextvektor. Detta innebär att liknande ord kommer att få likartade kontextvektorer. Måttet av likhet kan sedan mätas genom att ta det kartesiska avståndet mellan dessa vektorer. 2 Metod Till en början valde vi ut två olika korpus Parole (ca 19 miljoner ord) samt ett annat svenskt korpus från kurshemsidan (ca 3,3 miljoner ord). Parole är uppbyggt av romaner, dagstidningar, tidskrifter och texter från mitten av 1970-talet och ca 20 år framåt 3 medan korpuset från kurshemsidan består av okända texter. Orden i Parole var ordklasstaggade, men eftersom detta inte var av intresse för oss, inledde vi med att plocka ut orden med hjälp av ett egenprogrammerat Pythonprogram. Orden kopierades istället till nya filer med löptext om max 10000 tecken. Filernas storlek bestämdes med utgångspunkt i att allt material också behövde lemmatiseras, då orden på högskoleprovet är representerade i grundform. Vid liknande tester tidigare har det också visat sig ge bättre resultat med lemmatiserade texter än utan. 4 Det lemmatiseringsverktyg vi använde oss av var ett program på KTH-servern Skrutten 2 som ordklasstaggar och lemmatiserar alla ord. Uppkopplingen till Skrutten 2 sker via protokollet telnet och teckenbegränsningen var just 10000 tecken för varje uppkoppling. Utifrån svaret från servern plockade vi återigen ut orden utan ordklasstaggarna och skapade nya lemmatiserade filer i löptext. På detta sätt genererade vi ca 18500 filer från Parole och ca 3600 filer från vårt mindre korpus. Därefter tränade vi datorn på vår träningsmängd och testade mot 1 Bilaga 2 2 Sahlgren, sid 2-4 3 Bilaga 1 4 Sahlgren, sid 7 3
orddelen på högskoleprovet. Vi skapade avslutningsvis ett eget korpus med utgångspunkt i de resultat vi fick från våra andra korpus. De ord som ingick i detta korpus var de ord vi inte hade tillräckligt med information om i vårt textmaterial. Vi skapade detta nya korpus med hjälp av google-sökningar. Problem Vi har inte råkat ut för några större problem under vårt arbete. Något som vi dock upplevde som en begränsning var skolans datorer. Vi har som studenter i grunden 350 mb lagringsutrymme och enbart Parole-textfilen var på nästan 500 mb. Vi löste detta genom att generera filerna på egna datorer. När vi sedan skulle träna datorn på vår träningsmängd var vi begränsade i minne och återigen fick vi använda oss av våra privata datorer. Uppkopplingen via telnet mot skrutten2 har fungerat relativt bra. I några filer har det funnits annorlunda tecken (_ i ett ord, ex. ord_1, citattecken och tre punkter i rad) vilka inte har accepterats av lemmatiseringsverktyget. Dessa filer ligger jämt fördelade över korpuset (Parole) och blev inte lemmatiserade och används därför inte i vår träningsmängd. Vi bedömer att ca 1,5 miljon ord från Parole inte har använts i vår träningsmängd på grund av detta. Vi råkade även ut för ett strömavbrott på KTH som gjorde det omöjligt att få kontakt med skolans servrar. Detta strömavbrott pågick i drygt två timmar men servrarna var inte uppe i drift förrän efter ytterligare några timmar, vilket gjorde att vi förlorade nästan en arbetsdag. Resultat Med våra tre korpus fick vi följande resultat: Correct Missed Unsufficient Total Mellankorpus 5 27 27 59 Parole 11 41 7 59 Eget korpus 4 3 0 7 Tabell 1. För att kunna jämföra siffrorna i en graf har vi multiplicerat resultat i Eget korpus så att totalsumman blir 59 även här. Hur detta påverkar tolkningen av resultatet diskuterar vi nedan i analysen. Med de nya värdena får vi resultaten: Correct Missed Unsufficient Total Mellankorpus 5 27 27 59 Parole 11 41 7 59 Eget korpus 33,71 25,29 0 59 Tabell 2. 4
45 40 35 30 25 20 15 Mellankorpus Parole Eget korpus 10 5 0 Graf till tabell 2. Correct Missed Unsufficient Vi har delat upp Parole i sju lika stora delar à 3000 filer som vi har testat mot orddelen, resultatet presenteras nedan med antal rätt svar i varje delkorpus. Filnummer 0-3000 3000-6000 6000-9000 9000-12000 12000-15000 15000-18000 18000-21000 Antal rätt 3 4 7 6 6 7 8 Tabell 3. 9 8 7 6 5 4 3 2 1 0 Delkorpus av Parole Antal rätt Graf till tabell 3. Vi jämför resultaten på alla delmängder och tar ut antal unika rätt på varje delmängd och då får vi totalt 26 unika rätt. Detta kan jämföras med resultatet från tabell 1 då vi fick 11 rätt på hela korpuset (Parole). 5
Analys Inledningsvis bör vi omnämna att Parole är ett äldre korpus med texter från 1975 fram till 1997. Detta tror vi dock inte har påverkat resultatet då lejonparten av frågorna på högskoleprovets orddel behandlar äldre ord och uttryck. Däremot har det bristfälliga resultatet till viss del grund i att variablerna i inlärningen inte är anpassade till vår datamängd. Stopplistan som användes i programmet är delvis anpassad till en mycket mindre mängd text än vad vi har använt och är dessutom utformad för de ord som var frekvent representerade i just den texten den var avsedd för. Det är därutöver troligt att ett bättre resultat hade uppnåtts med hjälp av att modifiera övriga variabler i programmet såsom kontextfönstrets storlek, antalet dimensioner på vektorerna och hur viktningsschemat är formulerat. För att vårt program skall kunna svara på en fråga krävs det att det finns information om alla ord, d.v.s. att de har dykt upp tillräckligt många gånger i vårt korpus. Utan den informationen går det inte att ta det kartesiska avståndet mellan vektorerna vilket medför att våra ord och kontexter inte kan jämföras med varandra. I ett balanserat korpus är det inte säkert att orden som finns på just högskoleprovet är vanligt förekommande och således är det svårt för programmet att införskaffa tillräckligt med information för att kunna besvara frågorna korrekt. Vid liknande tester tidigare har det allmänt visat sig att det är viktigt att ha ett korpus representativt för uppgiften, d.v.s. ett korpus vars inriktning överensstämmer med det vi vill testa. 5 Detta kan anses självklart men kan förbättra resultatet avsevärt. Om du exempelvis vill plocka fram information om medicinska ord är det vägande att välja ett korpus som helt eller delvis innehåller medicinska texter. På så sätt är det större chans att hitta relevanta ord och kontexter som är betydelsefulla vilket förenklar inlärningen och följaktligen också resultatet. RI är en metod som lämpar sig bra för stora textmängder eftersom den är både snabbare och kräver mindre lagringsutrymme än liknande metoder såsom LSA (Latent Semantic Analysis). 6 Metoden är också effektiv i den bemärkelsen att den börjar hitta samband mellan ord och kontexter redan innan hela textmaterialet är bearbetat. 7 I våra tester kan vi tydligt se att antalet rätt blir fler och antalet ord som saknar information blir färre i takt med att vi ökar textmängden. Däremot är resultaten inte så tillfredställande som vi hade trott och hoppats på. En förklaring till detta kan vara att viktningsschemat inte är tillämpat för storleken på våra korpus. I takt med att man använder större textmängder krävs det ett utökat fokus på ett relevant viktningsschema för att förbättra precisionen. Gorman och Curran har utfört tester som visar att olika viktningsscheman lämpar sig olika bra beroende på hur stort korpus man använder. 8 Eftersom vi inte har anpassat vårt viktningsschema finns det en risk att det vi har använt oss av inte lämpar sig för vår storlek på korpus. När vi tittar på resultaten från de olika delmängderna av Parole 9 ser vi att vi får ganska dåliga resultat i början och att det sedan ökar och ligger konstant i mitten för att öka något på slutet igen. För att förstå dessa variationer måste vi se hur Parole är 5 Gorman, Curran, sid 457 6 Cohen et al, sid 243-245 7 Gorman, Curran, sid 458 8 Gorman, Curran, sid 462 9 tabell 3 6
uppbyggt. Som vi nämnt ovan är den uppbyggd av romaner, dagstidningar, tidskrifter och webbtexter. Med den fördelning vi ser i Parole 10 kan vi direkt göra en koppling till våra resultat. När vi använder oss av romantexterna som träningsmängd blir resultatet dåligt, med dagstidningarna något bättre för att med tidskrifter och webbtexter uppnå de bästa resultaten. Med informationen om att resultatet blir bättre med ett relevant korpus 11 kan vi konstatera att för vår testmängd (orddelen på högskoleprovet) verkar vetenskapliga tidskrifter och webbtexter vara de mest relevanta texterna i ett korpus. För varje delmängd har vi fått ett visst antal rätt och när vi jämför alla delmängder får vi totalt 26 unika rätt. Detta kan jämföras med de 11 rätt vi fick när vi tränade på hela Parole. Skillnaden i antal rätt kan bero på att språkbruket och innehållet ser helt olika ut i t.ex. en roman och en vetenskaplig text. En del ord förekommer mer frekvent i romaner och förekommer inte alls i vetenskapliga texter och vice versa. Att resultatet blir så mycket sämre med romaner som träningsmängd än dagstidningar och vetenskapliga texter beror på hur ordet används. I en vetenskaplig text används ordet ofta i sin grundläggande och korrekta betydelse medan det i en roman används i en bredare mening och därför återfinns det i olika kontexter. 12 Detta förklarar också varför vi inte får 26 rätt när vi tränar på hela korpuset. Även om ett ord blir rätt i en delmängd kan det användas i fel kontext eller betydelse i en annan och kontextvektorn hamnar längre ifrån än en annan kontextvektor och vi får således ett fel svar. I dagstidningar eller webtexter kan ett ord hamna i helt olika kontexter beroende på vid vilket år eller tidpunkt man väljer att hämta informationen. I oktober 2006 gjorde Nordkorea kärnvapentester och om man tittade på ett blogkorpus fram till oktober hamnade ordet nuclear i kontext med Iran och kärnkraft, för att under oktober månad hamna i kontext med Korea, sanktion och bomb. 13 Detta är också en förklaring till varför delmängderna får fler unika rätt tillsammans än hela korpuset. Med vårt eget korpus fick vi över 50% rätta svar och vi kan återigen konstatera att ett relevant korpus förbättrar resultaten. Dock vill vi inte dra för stora slutsatser om den exakta andelen rätt då testmängden varit betydligt mindre än i de övriga fallen, 7 ord jämfört med 59 ord. levererar inte ett hundraprocentigt resultat när det kommer till högskoleprovet. I liknande tester som har utförts tidigare har de bästa resultaten varit uppemot tre fjärdedelar rätta svar. 14 Trots att resultaten inte är perfekta finns det mycket metoden kan bidra med. Inom 'information retrieval' kan flera olika metoder och tekniker samfällt bidra till att urskilja relevant information från olika textmängder. Informationssökning handlar i slutändan inte om att gissa rätt på högskoleprovet utan att lyfta fram information som är verkligt viktig i olika sammanhang. Genom RI kan man utvinna relationer mellan ord på ett enkelt och effektivt sätt vilket kan bidra till en utökad förståelse av olika texters koherens. 15 Trots att metoden gissade fel på många ord på högskoleprovet kan vi ändå dra vissa 10 Bilaga 1 11 Gorman, Curran, sid 457 12 Chatterjee, Mohan, sid 309 13 Jurgens, Stevens, sid 13 14 Sahlgren, sid 7 15 Rosell, föreläsning 7
slutsatser utifrån resultatet. Om vi exempelvis tittar på det missade ordet 'otidighet' så kan vi se att metoden visserligen gissade fel men att den rätta synonymen oförskämdhets kontext ligger betydligt närmare än de två övriga förslagen. otidighet => oförskämdhet [oärlighet(0,135), oförskämdhet(0,114), ombytlighet(0,008), osjälvständighet(-0,014)] Genom denna information kan vi sedan dra ett antal olika slutsatser. Vi kan till exempel använda metoden som hjälp för att utesluta de ord vars kontextvektorer ligger längst ifrån det rätta svaret. Inom informationssökning vill man effektivisera inhämtningen så mycket som möjligt och att begränsa valmöjligheter på detta sätt kan vara bidragande till att uppnå ökad effektivitet. Det kan också vara semantiskt intressant att studera felaktiga svar för att få fram information om ords användning i förhållande till deras originalbetydelser. Sammanfattning är en metod för att utvinna relaterade ord ur fritext. Vi har testat hur mängden text påverkar resultatet genom att låta metoden svara på orddelen på högskoleprovet. I takt med att vi ökat textmängderna har vi erhållit mer information om orden vilket gradvis har lett till ett bättre resultat. Prestationen har dock inte varit lika bra som vi förväntat oss vilket kan härledas till ett antal olika faktorer. Delvis är det viktigt att ha ett korpus och därmed texter som är relevanta för uppgiften. Därtill måste metodens variabelinställningar, stopplista och viktningsschema anpassas till den rådande textmängden. Vi kan alltså konstatera att det inte enbart räcker med att öka textmängderna för att uppnå förbättrade resultat inom RI. 8
Källförteckning N. Chatterjee, S. Mohan. Discovering Word Senses from Text Using Random Indexing, CICLing, 2008 J. Gorman, J. Curran. Random indexing using Statistical Weight Functions, University of Sidney, 2006 M. Sahlgren. An introduction to, SICS, 2005 T. Cohen, R. Schvaneveldt, D. Widdows. Reflective and indirect inference: A scalable method for discovery of implicit connections, Journal of Biomedical Informatics, Volume 43, Issue 2, April 2010 D Jurgens, K Stevens. Event Detection in Blogs using Temporal, University of California, Los Angeles 2006 M. Rosell. Förläsning: Statistisk Lexikal Semantik, KTH, 2012-11-14 Parole (hämtad från http://spraakbanken.gu.se/swe/resurs/parole) Korpus från kursen (hämtad från kurskatalogen /info/sprakt12/korpus) Bilagor Bilaga 1, Textfördelning av Parole samt årtal Romaner 4,4 miljoner ord (1976-1981) Dagstidningar 13,6 miljoner ord (1976-1997) Tidskrifter 0,4 miljoner ord (1995-1996) Webbtexter 1 miljon ord (1997) Bilaga 2, Kopia av inställningar från OrdHP dimensionality = 1800 random_degree = 8 seed = 710225 left_window_size = 4 right_window_size = 4 weighting_scheme = moj.ri.weighting.mangesws stoplist = True stoplist_name = Stoplist.txt shortest_word = 3 longest_word = 25 minimum_words_per_file = 2 9