Variator Automatisk synonymvariering av text Magnus Rosell 27 mars 2006 Sammanfattning Detta är en rapport om min individuella uppgift i kursen Språkgranskningsverktyg inom GSLT. Den beskriver ett litet program för variering av texter med avseende på synonymer ochen första utvärdering av detta. 1 Introduktion En text som upprepar samma ord ofta kan kännas monoton. Ett sätt att råda bot på detta är att använda synonymer. Med tillgång till en lista synonympar kan detta automatiseras. Variator är ett synonymutbytarprogram. Det utgår från Folkets synonymlexikon 1 (Kann and Rosell, 2005) ochanvänder sig av grammatikgranskningsprogrammet Granska 2 för att kontrollera att texten fortfarande är grammatisk då bytena gjorts. 2 Gränssnitt Variator är implementerat i java ochkörs enligt följande. Usage: java -cp.:src/:lib/xerces.jar:lib/cpdetector.jar Variator [-p varpart] [-t varthreshold] [-a appearleast] [-s synonymlistfile] [-l stoplistfile] [-o outfile] filetovary Default: varpart = 1.0 [0.0, 1.0] varthreshold = 3.0 [3.0, 4.9] appearleast = 0 synonymlistfile = lists/folketssyn.xml stoplistfile = lists/stopplista.txt outfile = System.out 1 http://lexin.nada.kth.se/cgi-bin/synlex 2 http://www.nada.kth.se/theory/projects/granska/
Figur 1: Variator systemöversikt varpart anger sannolikhet för att Variator ska försöka byta ut ett ord som går att byta. Ett ord anses kunna bytas då det har synonymer som verkar passa ochförekommer fler än appearleast gånger i texten. varthreshold är kravet på synonymlikhet vid utbytande. Detta överensstämmer med synonymitet som det definieras i Folkets synonymlexikon. appearleast minsta antalet gånger ett ord måste förekomma i texten för att vara en kandidat att byta ut. synonymlistfile anger sökvägen till en lista med synonymer i rätt format. stoplistfile anger sökvägen till en stopplista med rätt format. Att byta ut väldigt vanliga (konjunktioner, pronomen etc.) ord ger ofta mycket märkliga resultat. 3 Systemöversikt Väldigt kort beskrivet utgår programmet från att texten är grammatiskt korrekt. Sedan varierar det den ochser till att grammatikaliteten är den samma. Figur 1 ger en överblick över programmets funktion. Kombinerad med en kort beskrivning av delarna borde den ge förståelse för hur programmet fungerar. 2
3.1 Övre vänstra delen av figuren Här behandlas ett ord i taget. Lemmatisering, Ordböjare, ochpos-taggning är olika funktioner hos Granska. Ordräknaren räknar lemman (ej stoppord) ochhåller reda på att dessa förekommer tillräckligt många gånger (appearleast). Synonymer ger synonymer som är tillräckligt lika (varthreshold). Ordböjaren ger alla böjningsformer av ordet. De enskilda orden PoS-taggas. Om ett förslag har rätt PoS-tagg (Lika?) går det vidare men varje synonym ger bara med viss sannolikhet (Slump) upphov till en textvariant (varpart). Alla synonymers böjningsformer ges dessutom slumpmässig ordning. Bara synonymer som är kongruenta med ursprungsordet betraktas. Det är för svårt att analysera alla inkongruenser i referenser som kan uppstå annars. 3.2 Nedre högra delen av figuren Här behandlas hela texten, som oftast är ett stycke eller motsvarande. En av alla textvarianter som ordvis har rätt PoS-taggning analyseras som en hel text. Får den inte samma taggning förkastas den (Lika?). En variant med samma taggning som den ursprungliga returneras (ut). I värsta fall returneras ursprungstexten. Varianterna tas fram sekvensiellt, utan att backa. Fel som fortplantar sig bakåt i texten hanteras genom att gå tillbaka till ursprungstexten först för det specifika ordet, sedan från problemet ochframåt, ochsist för hela texten. 4 Reflektioner Några reflektioner: Att dela på sammansättningar skulle tillföra fler möjliga textvarianter. Nu jämförs först pos-taggen på enskilda förslagsord med taggen på motsvarande ord i texten. Bara de ord som klarar detta går vidare till en hel textanalys. Anledningen är Granskas robusthet som är ett problem i detta sammanhang. Ett ord med en märklig böjning taggas ofta med hjälp av omgivningen till något som är rimligt. Här vill vi dock tvinga det nya ordet till samma böjning som ursprungsordet. 3
Nu är ordningen i vilken de olika tillräckligt goda förslagen provas helt slumpmässig. Ett annat sätt vore att välja dem i ordning efter synonymitet. Det skulle dock leda till mindre variation. Istället skulle man kunna välja förslag med sannolikhet baserad på synonymitet. 5 Utvärdering Det är naturligtvis väldigt svårt att utvärdera ett sånt här program. Ett enkelt första försöka är att köra det på ett antal texter ochbedöma om de fortfarande förmedlar samma innehåll. Det blir väldigt subjektivt, men ger ändå någon form av inblick. Jag har provkört på de tre texterna i tabell 1 med standardinställningar enligt avsnitt 2. Det gav resultaten som visas i tabell 2 Som jämförelse körde jag också med följande inställningar: varpart = 0.5 [0.0, 1.0] varthreshold = 4.0 [3.0, 4.9] appearleast = 2 Det gav resultaten som visas i tabell 3. Observera att antalet gjorda (*) byten i tabellerna är en rejäl underskattning. Då det på något sätt backar tillbaka till ursprungstexten delvis eller fullständigt håller inte programmet reda på hur många det bytt. Dessa små försök säger inte så mycket. Resultat är (inte så oväntat) väldigt beroende av kvaliteten på synonymlistan. Det är väldigt svårt att byta ut vanliga ord, som till exempel att ändra tagit bort till gripit bort. Ett annat problem är stilskillnader mellan synonymer, något som inte hanteras alls nu. Ordet häst har tex både de lite mer gammalmodiga och högstämda synonymerna fåle och springare jämte den lustiga ochsynnerligen talspråkliga havremoppe. Text Innehåll Antal ord Häst Annons om ridresa 175 DN Utrikesnyhet om spänningar mellan Kina och USA 239 Abs Sammanfattning av min licentiatavhandling 411 Tabell 1: Texter Byten Text Möjliga Förväntade Gjorda* Bedömning Häst 49 49 41 undermåligt DN 56 56 28 ok Abs 138 138 40 undermåligt Tabell 2: Resultat standardinställningar 4
Byten Text Möjliga Förväntade Gjorda* Bedömning Häst 2 1.0 2 ok DN 7 3.5 7 ok Abs 25 12.5 7 lite sämre 6 Exempel Tabell 3: Resultat alternativ inställning Här presenterar jag i tabellerna 4 och5 några intressanta/roliga exempel från texterna Häst och Abs med de två inställningarna enligt förra avsnittet. Dessa exempel finns också på projektets hemsida: http://www.csc.kth.se/ rosell/courses/sprkgr/sprkgr.html Ursprunglig Det finns hästar för alla, är du nybörjare får du en lugn häst och har du ridit länge finns det många hästar att välja mellan. Standard Det finns havremoppar för alla, är du färsking får du en flegmatisk kuse ochhar du ridit länge finns det många fålar att utse mellan. Variant Det finns hästar för alla, är du nybörjare får du en lugn häst och har du ridit länge finns det många hästar att välja mellan. Tabell 4: Exempel från häst-texten 7 Tack Tack till Martin Hassel för java-gränssnittet mot Granska, alla som jobbat med Granska, samt alla som bidragit till Folkets synonymlexikon. Referenser V. Kann and M. Rosell. 2005. Free construction of a free swedishdictionary of synonyms. In Proc. 15th Nordic Conf. on Comp. Ling. NODALIDA 05. URL http://www.nada.kth.se/theory/projects/infomat/rapporter/kannrosell05.pdf. 5
Ursprunglig Textklustring, åtminstonde som det beskrivs här, utnyttjar sig av den vektorrumsmodell, som används allmänt inom området. I denna modell representeras texter med orden som förekommer i dem ochtexter som har många gemensamma ord betraktas som lika till innehåll. Detta ger lite bättre resultat ochminskar antalet ord i representationen. Det är mycket svårt att utvärdera textklustringsresultat. Det ligger i sakens natur att vad som är en bra uppdelning av en mängd texter är subjektivt. Standard Textklustring, åtminstonde som det skildras här, exploaterar sig av den vektorrumsmodell, som brukas offentligt inom området. I denna forms företrädes skrifter med orden som inträffar i dem ochskrifter som har många kollektiva ord skärskådas som likadant till innanmät. Detta överlämna lite delikat utfall ochavta antalet ord irepresentationen. Det är mycket trassligt att evaluera textklustringsresultat. Det ligger i grejens natur att vad som är en cool fragmenteringars av en hop skrifters är subjektivt. Variant Textklustring, åtminstonde som det beskrivs här, utnyttjar sig av den vektorrumsmodell, som brukas allmänt inom området. I denna modell representeras texter med orden som förekommer i dem ochtexter som har många gemensamma ord betraktas som lika till innehåll. Detta ger lite förtjänstfull resultat ochminskar antalet ord i representationen. Det är mycket svårt att utvärdera textklustringsresultat. Det ligger i sakens natur att vad som är en bra uppdelning av en mängd texter är subjektivt. Tabell 5: Exempel från sammanfattningen 6