Taltaggning av Daniel Hasselrot 781105-0157, d98-dha@nada.kth.se 13 oktober 2003 Sammanfattning Denna rapport är skriven i kursen Språkteknologi och behandlar taggning av årtal i en text. Metoden som används för taggning är statistikbaserad och bygger på analys av bigram av ordklasser.
Innehållsförteckning Inledning... 2 Problembeskrivning... 2 Metod... 2 Taggning av ordklasser... 2 Statistisk analys... 3 Resultat... 4 Diskussion... 4 Källförteckning... 4 1
Inledning Problembeskrivning Uppgiften gick ut på att automatisk bestämma om ett tal i en mening är ett årtal eller ett räkneord. För en människa är det oftast trivialt att avgöra vad som är årtal eller inte. Men för en dator är kan även en sådan tillsynes enkel uppgift vara komplicerad. Svårigheten ligger i att tolkningen av ett tal är beroende av i vilket sammanhang som talet förekommer. Årtal kan se ut på en mängd olika sätt och till exempel kan följande tal i vissa sammanhang beteckna årtal och räkneord i andra: 1943, 50-tal, 03, 43. Vår tydning bygger på tidigare erfarenheter, textens ämne, grammatik m.m. Att låta datorn göra en semantisk analys av en text är mycket svårt. Istället får vi nöja oss med den information vi kan få fram genom att analysera ordklasser och orden runt om talet. Metod De finns två sätt att gå till väga för att tagga årtal. Man kan själv försöka komma på regler som täcker in talen eller så kan man genom statistisk analys komma fram till regler. Det är svårt att skriva enkla regler som ska täcka in alla enskilda fall. Inte ens regler om tillåtna ändelser såsom -talet är hundraprocentiga. Jämför till exempel följande meningar: 50-talet var underbart och 50-talet passagerare skadade i busskrasch. Oftast krävs även en mängd regler för att hantera specialfall. Till exempel 1000-tals och 1100-tals där 1000-tals oftast används som räkneord medan 1100-tals till exempel kan användas i meningen en 1100-tals lampa. Än svårare är det att klassificera tal utan ändelser. Istället för att skapa en regelbaserad analys valde jag att med hjälp av statistik avgöra om talet är ett årtal eller ej. Genom att göra antagandet att klassificeringen av ett tal är beroende av vilka ord som står innan och vilka som följer talet kan en statistikbaserad analys tas fram. Inom språkteknologin är det vanligt att man använder sig av N-gram när man ska bestämma ett ords klass, det vill säga att man tar hänsyn till de N föregående orden. Jag använder mig även av det N-efterföljande orden i mitt program. För att inte N-grams matrisen ska bli för stor och kravet på statistik för omfattande använder jag mig av bigram (N=2). Sannolikheten för att ett visst tal är ett årtal tas fram genom att analysera bigrammen av ordklasserna före och efter talet. Taggning av ordklasser För att ta reda på vilka ordklasser orden i texten tillhör använde jag grammatikkontrollprogrammet Granskas taggningar. Granskas taggar själv årtalen men denna taggning tog jag bort och taggade istället alla tal med samma typ av taggning. I den korpus som ska användas som träningsmängd 2
la jag även till en tag manuellt som anger om talet är ett årtal eller ej. Texten läses sedan in i programmet och bigrammet före och efter varje tal sparas. Exempelmeningen, År 1983 grundades företaget., taggas som: År <nn.neu.sin.ind.nom> 1983 <?> grundades <vb.prt.sfo> företaget <nn.neu.sin.def.nom>. <mad> Taggningen är av en modifierad variant av SUC 1 taggningen där nn står för substantiv och vb för verb. Taggen <?> är min markering för att ordet kan vara ett årtal. Från denna mening fås bigrammen <substantiv, tal> och <tal, verb>. För att avgöra om talet överhuvudtaget är möjligt årtal använder jag mig av ett reguljärauttryck som utgår från dessa enkla regler: Ett årtal får inte bestå av mer en fyra siffror. Fyrsiffriga och tre siffriga årtal får inte börja med en nolla. Inga skiljetecken såsom. eller, får förekomma i talen. De reguljära uttrycken tar även hand om årtalsändelser såsom -talet och -tal. Dessa ändelser klassificeras och kan sedan användas i den statistiska analysen. Enbart bigram där talet är ett möjligt årtal sparas. Statistisk analys Vi betecknar ordklassen före det möjliga årtalet som k 1 och det som följer efter för k 2. X betecknar sannolikheten att talet är ett årtal. Det vi är ute efter är P(X k 1, k 2 ). Det vill säga sannolikheten för att talet är ett årtal givet ordklasserna k 1 och k 2. Att beräkna denna sannolikhet direkt är dock svårt. Bayes lag ger emellertid följande: P(X k 1 ) = X)P(X) ) Där P(X) ges av andelen tal som klassas som årtal i träningstexten. Vi gör antagandet att orden k 1 och k 2 är oberoende, ett antagande som oftast inte är korrekt men som har marginell påverkan på resultatet och förenklar beräkningarna. Antagandet ger: X) = X) P(k 2 X) Genom bigramens markovkedjeegenskaper fås: X) = A( k 1, X ), A(X) där k 1,X betecknar bigrammet av k 1 följt av ett årtal och A(x) betyder antalet förekomster av x i träningstexten. P(k 2 X) fås på samma sätt. Kvar att beräkna har vi sannolikheten, k 2 ). Men eftersom P(X k 1 ) + P(ÿX k 1 ) =1 1 Stockholm-Umeå Corpus 3
så räcker det med att också beräkna P(ÿX k 1 ) och normalisera så att resultatet summan av sannolikheterna är 1. Resultat Korpusen som ligger till grund för den statistiska analysen består av 10 meningar med totalt 15 tal varav 7 är klassade som årtal. Denna korpus är alldeles för begränsad för att man egentligen kan ska kunna dra några slutsatser från analysen. Men även en sådan liten korpus ger viss vägledning vid taggning. Exempel I meningen År 1983 grundades företaget av 100 arbetare., taggas 1983 som årtal och 100 som räkneord. I meningen 1900 arbetare fick jobb på 50-talet feltaggas däremot båda talen som räkneord. Diskussion För att förbättra funktionaliteten av taggaren krävs en utökad korpus. Med en större träningsdata skulle man även kunna hantera ordklassernas böjningar med mera i analysen för bättre resultat. Man skulle även kunna tänka sig att kombinera regel- och statistikbaserad analys. Till exempel skull man kunna ta hänsyn till ord som f. Kr eller e. Kr vilka tenderar att bara förekomma i anslutning till årtal. Vissa regler för hur årtalet får se ut finns redan och förbättrar precisionen. Jag använder heller ingen smoothingalgoritm. Källförteckning Jurafsky, Daniel & Martin, James H. Speech and Language Processing, Prentice Hall 2000. 4