Automatisk morfologisk segmentering för svenska substantiv

Storlek: px
Starta visningen från sidan:

Download "Automatisk morfologisk segmentering för svenska substantiv"

Transkript

1 Automatisk morfologisk segmentering för svenska substantiv Veronika Ekström Examensarbete i datorlingvistik Språkteknologiprogrammet Institutionen för lingvistik och filologi Uppsala Universitet 8 juni 2005 Handledare: Beàta Megyesi, Uppsala Universitet Fredrik Larsson, Phoneticom AB

2 Sammandrag Den här uppsatsen beskriver utvecklingen av ett program som förklarar svåra ord på hemsidor. Den primära uppgiften är att minimera programmets lexikon. Detta innebär att varianter av ord skall kunna förklaras trots att dessa inte finns med i lexikonet. Med Porters stemmingsalgoritm för svenska som utgångspunkt har regler skapats som modifierar orden till en gemensam form. Porters algoritm plockar bort vissa ändelser men behandlar inte stamändringar hos ord. Speciella regler för omljud har därför skrivits. Eftersom substantiv är den mest frekventa ordklassen i lexikonen har reglerna anpassats till dessa. Programmet har testats för att se hur många korrekta matchningar som gjorts. Två tester gjordes, den ena med och den andra utan ordklasstaggare. Utan ordklasstaggare var 90,1% av matchningarna korrekta och med ordklasstaggare var siffran 98,2%. Genom att använda sig av en ordklasstaggare fungerar programmet bra och resultatet förbättras avsevärt.

3 Innehåll Förord 1 Inledning. 1 2 Bakgrund Morfologi Substantivets böjningsformer Species Numerus Kasus Genus Automatisk morfologisk analys Statistisk morfologisk analys Två-nivåmodellen PC-KIMMO SWETWOL Stemming Lovins stemmer Paice/Husk stemmer Porters stemmingsalgoritm Porters stemmingsalgoritm för svenska Ordklasstaggning TnT Xplain Automatisk morfologisk analys Implementering av algoritmen Programmets uppbyggnad Lexikonet Inläsning av filer Start- och Stopfunktionerna Bearbetning av texten Ordräkning Matchning Reglerna Tillämpning av reglerna Träning SUC Utvärdering och resultat Utvärderingsmetod Testresultat Test med otaggad text Test med taggad text Homografer Sammanfattning av testresultat 33

4 5 Diskussion Framtida utvecklingsmöjligheter Sammanfattning. 36 Litteraturförteckning. 37

5 Förord I denna uppsats redovisas ett examensarbete inom Språkteknologiprogrammet vid institutionen för lingvistik och filologi, Uppsala Universitet. Examensarbetet har utförts på Phoneticom AB i Uppsala. Jag vill tacka min handledare på Institutionen för lingvistik och filologi, Beàta Megyesi, som har bidragit med konstruktiva kommentarer framförallt under rapportskrivningen. Ett stort tack även till min handledare på Phoneticom AB, Fredrik Larsson, som gett mig stöd och goda råd under examensarbetet. Tack! Veronika Ekström, Uppsala juni 2005

6 1. Inledning Användandet av internet har ökat lavinartat de senaste åren. Det finns ett stort intresse från såväl allmänhet som företag att utnyttja nätet. Många affärskedjor säljer sina produkter via internet och banker erbjuder t.ex. sina tjänster på detta sätt. De allra flesta företag och myndigheter har en egen hemsida där man får tillgång till mer eller mindre relevant information. I många fall är det enklare och snabbare att nå information via nätet än att sitta i en telefonkö. Man behöver inte heller anpassa sig efter några öppettider. Ett växande intresse från en stor grupp användare ställer krav på att tillgängligheten förbättras. I dagens datoriserade samhälle är användningen av informationssökning via internet eller i olika databaser mycket omfattande. Det kan handla om att söka efter artiklar med ett speciellt innehåll eller specifika ord i lexikon som finns on-line. Informationssökning handlar om att extrahera den information som passar användarens krav. Den enorma mängd information som publiceras på nätet utgör en viktig informationskälla för allmänhet och företag. Eftersom det är enkelt att lägga ut information har antalet hemsidor blivit så stort att det kan bli svårt att hitta en specifik sida. För att kunna lokalisera de uppgifter man söker behövs ett söksystem som sorterar informationen och avgör vad som är relevant. Det kan finnas kataloger eller databaser som är sorterade efter ett visst ämnesområde vilket underlättar sökningen. För att öka antalet träffar vid en sökning använder sig sökmotorer ofta av trunkering. Detta innebär att ordets ändelse/ändelser plockas bort. Genom denna modifiering får varianter av ett ord en gemensam form. Söker man då på t.ex. tidningar kan man få resultat som innehåller tidning, tidningarna o.s.v. När man får tillgång till resultatet av sökningen är det viktigt att man förstår och kan ta tillvara på den information som ges. De uppgifter som finns på exempelvis olika myndigheters hemsidor bör vara begripligt för alla. Det kan förekomma termer och uttryck som är specifika för ett visst område och som inte alla känner till. Genom att vidta vissa åtgärder kan man förbättra förståelsen. Som exempel på en sådan tjänst finns Xplain. Detta program är skapat för att underlätta förståelsen av texter med viktig information. Programmet förklarar de svåra orden på en hemsida och kan även kombineras med en uppläsningsfunktion. De ansvariga för en sida bestämmer själva vilka ord som skall förklaras genom att lägga in dessa i ett lexikon. I nuläget krävs att det ord som skall slås upp finns i samma form i lexikonet. Eventuella varianter kan alltså inte förklaras. När det gäller uttryck som består av två eller flera ord stannar sökningen ifall ett av orden finns i lexikonet vilket innebär att uttrycket inte kan förklaras. För att kunna lösa dessa problem kan man använda sig av morfologisk analys som är användbart inom flera språkteknologiska områden. Med automatisk morfologisk analys kan man t.ex. öka antalet träffar vid informationssökning, skapa stamlexikon 1

7 som används vid maskinöversättning, identifiera morfemgränser för ett korrekt uttal hos text-till-tal system ordklasstagga en text. Genom att använda stamlexikon begränsas lexikonets storlek och man sparar både plats och tid. Vid taligenkänning kan okända ord kan identifieras tack vare igenkänning av vissa morfem. Automatisk morfologisk analys används för både analys och generering av nya ord. Man kan använda det inom forskning för att se hur vanlig en viss ordform är eller vad det finns för typer av böjningar och avledningar. Syftet med detta examensarbete är att utveckla och förbättra Xplain genom att hitta ett sätt att minimera programmets lexikon. Detta betyder att varianter av ord skall kunna förklaras även om dessa inte finns med i lexikonet. Programmet skall även kunna förklara uttryck som består av flera ord samt behandla stamförändringar. Då substantiv är den ordklass som är mest frekvent i lexikonen kommer det nya programmet att anpassas efter dessa. Uppsatsen består av sex kapitel. Efter inledningen ges i kapitel två en kort beskrivning av svensk morfologi med särskild tonvikt på substantiv. Kapitlet ger även en teoretisk bakgrund till olika typer av automatisk morfologisk analys. Det tredje avsnittet beskriver utvecklingen av programmet samt vilka delar det består av och avslutas med en genomgång av hur programmet tränats. Det fjärde kapitlet tar upp den utvärderingsmetod som använts och resultatet av utvärderingen. I kapitel fem diskuteras framtida utvecklingsmöjligheter och i det avslutande kapitlet ges en sammanfattning av uppsatsen. 2

8 2. Bakgrund I det här kapitlet ges en kort introduktion till morfologi följt av ett avsnitt där substantivets böjningsformer beskrivs. Detta utgör grunden för de regler som kommer att skrivas. Efter detta följer en längre presentation av automatisk morfologisk analys med dess undergrupper. Kapitlet avslutas med en beskrivning av Xplain. 2.1 Morfologi Morfologi också kallad formlära handlar om hur ord bildas och böjs. Med hjälp av morfem, som är den minsta betydelsebärande enheten i språket, kan man bilda olika ordformer samt nya ord av gamla genom avledning och sammansättning. Morfemen brukar delas in i fria och bundna. Fria morfem kan fungera som egna ord medan bundna aldrig kan stå ensamma. Affix är samlingsnamnet för bundna morfem och kan i sin tur delas in i tre grupper: prefix, infix och suffix beroende på var i ordet de står (före, i eller efter). Ett ord består oftast av en stam och ett affix. När man tagit bort alla morfem från ett ord återstår det som kallas för rot den grundläggande enheten hos ett ord. Stammen och roten kan sammanfalla. Tittar man på följande exempel man se att i ordet otänkbara utgör otänkbar stam för suffixet -a, tänk är stam för -bar o.s.v. 2.2 Substantivets böjningsformer Som språkets största ordklass spelar substantiven en central roll. De bär på mycket information och står därmed för en stor del av innehållet i en text. De tillhör gruppen öppna ordklasser vilket innebär att antalet ständigt växer allt eftersom nya ord tas in. Dessa bildas via avledning, sammansättning eller lånas in. Substantiven böjs i species (bestämdhet), numerus, kasus och genus Species Species kan anges genom att ett ord placeras framför substantivet, vilket är det vanligaste sättet inom de europeiska språken. I de skandinaviska språken gör man istället detta genom att lägga till ett suffix. I svenskan är dessa: Exempel 1 -n skon -en stolen -t hjärtat -et taket -na stugorna Det finns även en sk bestämd fristående artikel (den, det och de) i svenskan som förekommer före substantivet. Vanligaste användningen är när substantivet kommer efter en bestämning. 3

9 2.2.2 Numerus När det gäller böjning efter numerus kategoriseras substantiven i olika grupper som kallas för deklinationer. Följande exempel visar de olika ändelserna: Exempel 2 -or skolor -ar vantar -er växter -r skor -n bin -0 hus Det finns vissa undantag, t.ex. låneord som kan vara svåra att placera i någon speciell grupp. Till undantagen räknar man även omljud som innebär en vokalförändring i stammen. Förändringen kan ske mellan följande vokaler: Exempel Kasus u-ö o-ö å-ä a-ä mus-möss rot-rötter gås-gäss man-män Det tredje böjningssättet består av två former: genitiv och grundform. Genitiv uttrycker ägande och anges med suffixet -s. Exempel 4 Grundform: bil, bord, dag Genitiv: bilens, bordets, dagens Genus Genus anges med formerna neutrum och utrum. Den första kategorin innehåller ord som föregås av ett: Exempel 5 ett bord ett hus Orden kan ersättas med ett personligt pronomen i det här fallet det: Exempel 6 Bakom skogen finns ett hus. Det är stort och gammalt. Den andra kategorin består av de ord som som kan föregås av en: Exempel 7 en buss en flicka 4

10 Dessa ord kan ersättas med något av följande personliga pronomen: han, hon eller den: Exempel 8 En flicka gick längs vägen. Hon bar på en korg med frukt. 2.3 Automatisk morfologisk analys Automatisk morfologisk analys kan utföras antingen med hjälp av regler eller statistisk information. Följande kapitel beskriver olika program som utför automatisk morfologisk analys. Som exempel på statistisk morfologisk analys ges programmet Linguistica och som exempel på regelbaserad morfologisk analys presenteras tvånivåmodellen och stemming, båda med exempel. Figur 1 nedan visar uppdelningen: Automatisk morfologisk analys Regler Statistik Tvånivåmodellen Stemming Linguistica PC-KIMMO SWETWOL Lovins Porters Paice/Husk Figur 1 Uppdelning av automatisk morfologisk analys. 2.4 Statistisk morfologisk analys Med hjälp av statistiska hjälpmedel kan man t.ex. få information om hur frekvent en viss ordform är i en text. Man kan använda frekvensen av vissa ord eller n-gram för att identifiera stammar. Med statistik kan man även avgöra hur stor sannolikhet det är för ett visst morfem. Resultatet kan sedan användas för att avgöra vilken ordklass ett ord tillhör. Program som använder sig av statistik är billiga att utveckla men bör kontrolleras eftersom det alltid finns oregelbundenheter och undantag i språket. Programmet Linguistica är ett exempel på oövervakad träning där man med hjälp av statistisk information avgör vad som är stammen och ändelsen/ändelserna för orden i en text (Goldsmith, 2004). Programmet har ej tillgång till någon lingvistisk information såsom regler, lexikon eller taggad text. Ett väl fungerande program som enbart med hjälp av statistik utför en morfologisk analys av ett språk, är intressant eftersom det kan ta flera månader att göra detta manuellt. Som input tar programmet en korpus innehållande ord. Programmet testas kontinuerligt och för tillfället undersöker man hur det fungerar på språk som somaliska och urdu. Man kan säga att programmet består av två steg: 1. uppdelning av ordet till stam och suffix. 5

11 2. en Minimum Description Length (MDL) analys som i slutändan avgör vilka uppdelningar som är korrekta. Det första steget består av en algoritm som i sin tur kan delas in i två delar: 1. den första delen ger ett förslag på vad som är ordets stam och suffix. 2. den andra delen modifierar förslaget om så behövs. Algoritmens första del är inspirerad av en metod utvecklad av Zelig Harris (Goldsmith, 2004). Orden ordnas i en s.k. trädstruktur där de ord som börjar på samma bokstav hamnar under samma nod. Finns det flera ord som börjar på a har noden en pekare till de bokstäver som kommer direkt efter a:et. Med hjälp av den här strukturen grupperas orden så att de ord som har samma prefix finns på samma ställe (prefix i det här sammanhanget syftar på en gemensam sträng av bokstäver i början av ordet en eventuell stam). Harris använde sig av successor frequency som innebär att man tittar på antalet unika bokstäver som direkt följer efter ett visst prefix.om följande ord finns i en korpus: governed, governing, governor, government, governs skulle prefixet gover ha värdet 1 som successor frequency eftersom den enda bokstaven som kan komma efter är n. Om man istället antar att govern är stammen får successor frequency värdet 5 eftersom bokstäverna e, i, o, m och s kommer direkt efter. Harris menade att höga värden hos successor frequency kunde tyda på en lämplig gräns för morfemuppdelning. I Linguistica modifierar man Harris metod genom att lägga till några villkor för att en uppdelning skall ske: 1. Ett affix måste förekomma i minst 3 ord för att det ska anses vara intressant. 2. För att en delning ska ske efter en bokstav n måste värdet på successor frequency vara exakt 1 efter både bokstav n-1 och n+1. Efter en första indelning grupperas stammarna beroende på vilka ändelser de har. Grupperna kallas för signaturer och har formen: Exempel 9 NULL.ed.ing.s accent add administer afford alert amount appeal Eftersom stammarna även utgör enskilda ord och kan stå ensamma används NULL för att beteckna detta. Den andra delen av av algoritmen går igenom listorna med signaturer som skapats. Signaturerna modifieras eller tas bort efter vissa krav. Algoritmen testades på boken The adventures of Tom Sawyer av Mark Twain (Goldsmith, 2001) och de fel som uppstod var av följande art: 6

12 1. Två suffix som sammanfaller till ett t.ex.signaturen ings från ordet gatherings som egentligen borde ha formen ing.s. 2. Slutet av stammen finns med i ändelsen t.ex. signaturen ted.ting.ts. från orden hunted, hunting och hunts. 3. Signaturer med för korta stammar vilket gör att flera obesläktade ord kopplas ihop. Exempelvis stammen ca med signaturen n.n't.p.red.st.t. De ord som bildas med dessa ändelser blir: can, can't, cap, cared, cast och cat som ej bör få samma stam. 4. Uppdelningen av orden är inte konsekvent då ord som innehåller samma stam hamnar under olika signaturer. T.ex. Stammen abbreviate med signaturen NULL.d.s och stammen abbreviat med signaturen ing. 5. Det kan finnas stammar som är besläktade men inte ser likadana ut, t.ex. win med signaturen NULL.s och stammen winn med signaturen er.ing. I det andra steget där MDL-analysen utförs, avgörs vilka av dessa signaturer som skall behållas och ytterligare ändringar görs som tar hand om ovanstående fel och förbättrar resultatet. Finns t.ex. suffixen -ism och -ist under samma signatur görs dessa om till - m och -t. Målet med Linguistica var att skapa ett snabbt och noggrant program som kan användas för så många språk som möjligt utan att behöva anpassa det till varje språk. Man använder sig av oövervakad träning vilket innebär att texten som ges som input är oannoterad. När ett test på ord från Brown-korpusen gjordes fick 72% en korrekt analys (Goldsmith, 2004). Av de 28% som analyserades felaktigt berodde ca 30% på att programmet inte kunde återskapa stamfinala e:n. Exempelvis så fick abusive och abused stammen abus. Om man inte kräver detta skulle 80% av orden få en korrekt analys. 2.5 Två-nivåmodellen I början på åttiotalet utvecklade Kimmo Koskenniemi två-nivåmodellen vid Helsingfors universitet. Den används för generering och analys av ordformer (Koskenniemi 1983). Detta görs med hjälp av parallella regler. De två nivåerna som modellen består av är den ortografiska nivån och den lexikala nivån: Exempel 10 Lexikal nivå: bil+ar+nas Ortografiskt nivå: bil0ar0nas I den lexikala nivån finns stammen och de möjliga ändelserna. Den ortografiska nivån visar hur ordet ser ut på ytan. Två-nivåreglerna används i båda riktningarna. När de går från lexikal nivå till ytnivå genereras nya ordformer och den andra riktningen används för analys av ordformer. Reglerna tillämpas med hjälp av transduktorer. Exempel 11 från Koskenniemi (1984) med det finska substantivet lasi (sv. glas) visar hur reglerna fungerar. Här ser vi den partitiva pluralformen. Exempel 11 lexikal nivå l a s i I A 7

13 ortografisk nivå l a s e j a Lasi är själva stammen, I står för pluralmorfemet och A representerar den partitiva ändelsen a. Följande par bildas: l-l, a-a, s-s, i-e, I-j och A-a. Hos de tre första paren sker inga ändringar eftersom de båda bokstäverna sammanfaller. För de tre sista paren finns regler som ändrar på tecknen förutsatt att vissa krav uppfylls. Reglerna säger att: a) i omvandlas till e framför en plural form. b) pluralformen I blir j om den förekommer mellan två vokaler ( på ytnivån) c) A blir a - A kan bli antingen a eller ä beroende på stammens utseende. Om kontextkravet i regeln stämmer överens med hur ordet ser ut sker förändringen. Uppbyggnaden av lexikonet är gjord som en trädstruktur med noder som kallas för minilexikon. Modellen kan användas på olika språk, för varje språk krävs specifika regler. Modellen testades genom att göra en tvånivåbeskrivning för finska. Detta innebar att man konstruerade ett minilexikon samt skrev regler. Implementationen av modellen gjordes först i PASCAL och senare i INTERLISP. Målet var att programmet skulle vara effektivt. Ett väl fungerande program som var relativt snabbt blev resultatet (Koskenniemi, 1983) PC-KIMMO PC-KIMMO är ett program som genererar och analyserar ord med hjälp av tvånivåmodellen. Se Arbetet med programmet startade 1985 och man hade som mål att göra det mer tillgängligt (den här gången skrevs programmet i C). Målet med PC-KIMMO var att nå fler användare då implementationen av två-nivåmodellen tidigare endast fanns på olika forskningscentra. Med PC-KIMMO kan man skriva egna regler och det är därmed ett bra verktyg att använda i undervisning. Eftersom även källkoden finns tillgänglig kan användaren integrera den i egna program. För att kunna använda programmet måste användaren bidra med två filer. Dessa två filer utgör beskrivningen av ett språk: 1) En fil med regler som specificerar alfabetet och de fonologiska reglerna ( eller stavningsregler). 2) En lexikonfil med ord, morfem och vissa förklarande noter. Alla regler i en tvånivåmodell appliceras samtidigt för att undvika skapandet av mellannivåer. Programmet består av två primära komponenter: generatorn och parsern. Generatorn tar som input en lexikal form och tillämpar reglerna (fonologiska) och returnerar motsvarande ytform. Här används inte lexikonet. Parsern tar den ortografiska formen som input och tillämpar de fonologiska reglerna. I det här fallet görs en jämförelse med lexikonet och den motsvarande lexikala formen returneras tillsammans med information om ordet. 8

14 2.5.2 SWETWOL SWETWOL är ett verktyg för morfologisk analys och ordklassmärkning av svensk text. Det utvecklades av Fred Karlsson 1990 och använder sig av två-nivåmodellen. Lexikonet är även här en trädstruktur som består av 299 minilexikon. Tonvikten läggs på sammansättningar då dessa är ett viktigt kännetecken i det svenska språket. Endast åtta två-nivåregler används och lexikonet består av ca ord från Svenska akademiens ordlista. Sex av de åtta reglerna presenteras i en artikel om SWETWOL (Karlsson, 1997): 1) D:t <-> _: t ; 2) N:0 <-> [e: r: C r: r Cl: l: n: ]_ ; 3) m:0 <-> :m_n : ; 4) Z:s -> # : :*_#: :0* :x; 5) S:s <- : Sb_; 6) % : <- % : :*_; Den tredje regeln innebär t.ex. att m representeras som noll om det kommer efter m och före n. Ordet simma blir t.ex. simning. Programmet finns att testa på Lingsofts hemsida ( och nedan följer ett exempel på en analys. Exempel 12 "<bilar>" "bila" V ACT PRES "bil" N UTR INDEF PL NO SWETWOL behåller ambiguitet vilket kan ses i exemplet ovan. Programmet testades på en bok innehållande ordformer (Karlsson,1997). 0,65 % av dessa förblev oanalyserade d.v.s. 310 stycken. Dessa kan delas in i felstavningar, latinska eller engelska ord, felaktiga ord t.ex. bilstrafiken, ord som ej finns med i kärnlexikonet, ord som specificerar saker t.ex. mineralogiskt och ord som är namn t.ex. Amazonas och Brandenburg. 2.6 Stemming Stemming, som även kallas trunkering, innebär att man plockar bort ändelsen/ändelserna från ordet så att endast stammen återstår. Ingen segmentering görs av de olika ändelserna. Exempelvis skulle ordet stugornas delas in i stug-ornas, istället för stug-or-na-s. I de flesta fall kan man säga att morfologiska varianter av ord oftast har en liknande semantisk tolkning och kan ses som likvärdiga när det gäller informationssökning (Paice, 1994). Därför har man utvecklat ett antal stemmers för att reducera ordet till dess stam eller rotform. Med stemming skulle stugan och stugorna få samma form och på så sätt kan man nå olika varianter av ord. Själva sökningen blir inte beroende av en speciell ordform och 9

15 ett lexikon skulle kunna minimeras då alla ordformer ej behöver ingå. Orden omvandlas alltså till en besläktad form som är gemensam för varianter hos ett ord. Detta gäller förstås inte de fall där det är frågan om stamändring då man måste lägga till speciella regler som tar hänsyn till detta. Alla ord i indatan och orden i de dokument som ska genomsökas bearbetas/behandlas av stemmingalgoritmen för att sedan kunna matchas. I informationssökningssammanhang är det inte ett krav att den stam som genererats är ett riktigt ord. Som exempel kan computation bli comput istället för compute. Detta är inte något problem så länge som obesläktade ord ej kopplas ihop. I annat fall kan felaktiga stammar kan genereras och vissa kommer orsaka mer skada än andra. Dels kan det bildas nonsensord och det är då oftast frågan om egennamn som modifierats. Exempelvis kan Kristoffer bli Kristoff då ändelsen -er tas bort. Ordformer som egentligen skall paras ihop kan efter tillämpningen av reglerna ha olika stammar. Samtidigt kan ord som är semantiskt olika bli felaktigt sammanfogade. Felen kan delas in i två grupper: 1. De ord som tillhör samma grupp men får olika stammar, t.ex. mus och möss. 2. De ord som tillhör olika grupper men får samma stam, t.ex. verbet boka och substantivet bok. Genom att räkna dessa fel kan man få en uppfattning om hur bra en stemmer är och framför allt jämföra den med andra (O'Neill & Paice 1994). Det finns olika typer av stemmers och man brukar dela in dem i regelbaserade, statistiska och sådana som är en kombination av dessa två. De regelbaserade är försedda med lingvistisk kunskap såsom listor med suffix, prefix och regler som utarbetats manuellt. Den statistiska gruppen använder t.ex. information om vilka ändelser som är mest frekventa.även trigram kan användas för att hitta ord som är eller kan vara morfologiskt besläktade. Den här gruppen stemmers letar efter möjliga stammar för alla ord i en text och försöker på så sätt avgöra vad som är en tänkbar ändelse. Som input ges en korpus som har en minimigräns för antalet ord den bör innehålla. Med en för liten korpus blir det svårt att få en klar bild av hur orden är uppbyggda. Poängen är att man ska kunna hitta regelbundenheter i språket. Den kombinerade gruppen är stemmers som t.ex. använder statistiska metoder som en stödfunktion men inte är helt beroende av dessa. Tre stemmers som tillhör de mest kända är Lovins, Paice/Husk och Porter (Paice, 1994). I följande kapitel följer en beskrivning av var och en Lovins stemmer Lovins stemmer utvecklades 1968 av Julie Beth Lovins vid Massachusets Institute of Technology (MIT) och det var den första stemmingsalgoritmen som publicerades. Den gjordes för användning inom både informationssökning och datorlingvistik. Detta gjorde det hela problematiskt och den visade sig inte vara bättre på någon av de två 10

16 områdena. Lovins består av tre delar: ändelser, villkor och modifieringsregler för engelska. Antalet ändelser är 294 och varje ändelse är ihopkopplad med något av de 29 villkoren. Algoritmen arbetar i två steg: 1. Det längsta suffixet som hittas i ordet tas bort förutsatt att villkoret uppfylls. Villkoren ställer krav på hur lång den återstående stammen bör vara och/eller efter vilka bokstäver som ändelsen får plockas bort. 2. Sedan tillämpas modifieringsreglerna oavsett om ett suffix tagits bort eller ej. Ändelserna är indelade i grupper beroende på längd med de längsta först och följs av ett villkor som representeras med en versal. De längsta ändelserna består av 11 bokstäver och de kortaste av en. Exempel 13 visar ändelser med längden 8: Exempel ableness A arizable A entation A entially A eouness A ibleness A icalness A ionalism A ionality A ionalize A iousness A izations A lessness A För varje villkor gäller även att stammen inte får vara mindre än 2 tecken lång. Villkoret A innebär att inga krav ställs på den resulterande stammen (förutom att den bör vara minst två tecken lång). Nedan följer ytterligare exempel på villkor där * står för vilken bokstav som helst: Exempel 14 B Stammens minimilängd är 3 E Ta ej bort ändelse om den föregås av e H Ta endast bort ändelsen om den föregås av t eller ll Q Stammens minimilängd är 3 och ändelsen får ej tas bort om den föregås av l eller n X Ta endast bort ändelsen om den föregås av l, i eller u*e Om stammen bör vara längre än 2 tecken kan detta specificeras med ett villkor t.ex. B. Efter att listan med suffix sökts igenom efter en möjlig ändelse bearbetas stammen. Det kan vara frågan om bokstäver som tas bort eller ersätts: Exempel 15 iev -> ief urs -> ur ert -> ers yt -> ys Orden believe, matrix och analytic får formerna belief, matric och analys. Exempel 16 believe -e -> believ iev -> ief -> belief matrix - -> matrix ix -> ic -> matric 11

17 analytic -ic -> analyt yt -> ys -> analys Sammanfattningsvis kan man säga att Lovins består av en lång lista med suffix som till viss del är begränsad men behandlingen av korta ord kan vara en aning destruktiv. Ändelserna -ements och -ents finns t.ex. inte med. I en artikel om hur man utvärderar stemmers (Paice, 1994) kom man fram till att detta är en stemmer med högt understemming index (UI). Detta innebär att ord som tillhör samma stam inte alltid kopplas ihop. Lovins var genomgående sämre än Porters och Paice/Husk som jämförs i artikeln. Det är en försiktig stemmer som inte alltid reducerar de ord den borde Paice/Husk stemmer Denna stemmer var resultatet av ett sammarbete mellan Chris Paice och Gareth Husk på Lancaster University i slutet av åttiotalet. Alla regler finns samlade i en fil men är indelade i alfabetiskt ordnade sektioner. Under sektion a finns regler för ord som slutar på a o.s.v. En regel tar antingen bort eller ersätter en ändelse. Genom denna indelning i sektioner kan man snabbt komma åt de regler som tillhör en viss ändelse. Stemmern är iterativ vilket innebär att den kan tillämpa flera regler för ett ord. Algoritmen kan delas in i 4 steg. I det första steget tittar man på den sista bokstaven i ordet och undersöker om det finns någon sektion för denna. Om det inte finns någon sektion som behandlar den bokstaven avslutas algoritmen, annars tas den första regeln fram. En regel består av fem delar varav två är optionella: 1. En ändelse som består ev en eller flera bokstäver skriven i omvänd ordning 2. En optionell flagga * som betyder att ordet måste vara intakt för att ändringen skall ske 3. En siffra som anger hur många bokstäver som skall plockas bort 4. En optionell sträng som läggs till 5. Symbolen. eller > som avgör om algoritmen skall avslutas eller ej För att en regel skall tillämpas krävs även att vissa allmänna villkor uppfylls. Dessa har skapats för att stammarna inte ska bli för korta och orden reduceras till en bokstav. Första villkoret säger att om ett ord börjar på vokal måste stammen bestå av minst två bokstäver. Det andra villkoret säger att om ett ord börjar på konsonant måste stammen vara minst tre bokstäver lång och minst en av bokstäverna måste vara en vokal. När regeln tillämpas tas det angivna antalet tecken bort och finns det en sträng som skall läggas till görs detta. Avslutas regeln med < återgår algoritmen till det första steget där sista bokstaven i ordet undersöks, är symbolen däremot. avslutas processen. Reglerna kan ha följande form där det som står inom { } är ändelsen före och efter regeln tillämpas: Exempel ai*2. { -ia > - } 2. deec2ss. { -ceed > -cess } 3. nois4j> { -sion > -j } 12

18 Med den första regeln tas -ia bort förutsatt att inga ändelser tagits bort tidigare. Med hjälp av nästa regel reduceras ändelsen -ceed till -ce och därefter läggs -ss till. Den tredje regeln behandlar ändelsen -sion som byts ut mot -j. J änvänds här som ett mellanled för att komma vidare till en ny sektion. Ordet provision blir provij och görs sedan om till provid med hjälp av regeln ji1d. Ett bättre alternativ vore att byta ut dessa ändelser mot andra tecken än bokstäver (Paice, 1990) men detta är inte möjligt i den nuvarande versionen. Ingen formell utvärdering har gjorts av denna stemmer. Enligt en artikel (Paice, 1994) där tre stemmers jämförs har Paice/Husk ett högt overstemming index (OI). Detta innebär att ord som tillhör olika stammar paras ihop till samma grupp. Denna stemmer är konstruerad så att den hellre parar ihop ord än avstår från detta. Den kan vara lämplig att använda i de fall då man söker information och inte vill gå miste om något. Detta innebär samtidigt att man kan sortera bort en del irrelevant information Porters stemmingsalgoritm Porters stemmingsalgoritm skapades 1980 av Martin Porter vid universitetet i Cambridge (Porter, 1980). Algoritmen bygger på att ändelserna i engelskan är uppbyggda av kortare, enklare suffix. Den består av fem steg som innehåller olika regler där suffix plockas bort om villkoret för regeln uppfylls. Om regeln tillämpas skickas ordet vidare till nästa steg. Den är välanvänd och finns implementerad på flera språk såsom Java, C och C++. Det är förmodligen den stemmer som används flitigast när det gäller forskning inom informationssökning. När algoritmen tillämpas kommer ord med gemensam stam att samlas i en grupp. Exempelvis skulle följande ord grupperas: Bilen Bilarna Stuga Stugor Cykla Cyklade Bil Bil Stug Stug Cykl Cykl Bil Stug Cykl Figur 2 Gruppering av ord med gemensamma stammar. Beroende på vad den ska användas till kan en stemmer bestå av olika typer av information. Den kan innehålla ett stamlexikon eller en lista med suffix. När man skapade Porters stemmingsalgoritm var syftet att öka prestandan vid informationssökning och man förser därför algoritmen med en lista med suffix och tillhörande villkor. Man bör tänka på att suffixen tas bort i syfte att förbättra resultatet vid informationssökning. Det är alltså inte självklart under vilka omständigheter ett suffix borde tas bort. Exempelvis så får orden relate och relativity samma stam trots att de betyder helt skilda saker. I början när man skriver regler förbättras resultatet tills man kommer till en punkt då reglerna är så pass många att de påverkar vissa ord negativt. När man lägger till en ny regel kan det hända att de förbättringar som den gör är lika 13

19 många som de fel den orsakar. Villkor för regler Ett villkor för en regel kan se ut på följande sätt: Exempel 18 (m > n) där m(measure) är ett mått på antalet vokal-konsonant kombinationer som finns i ett ord och där n står för ett heltal som oftast ligger i intervallet 0-2. Porter definierar en konsonant på följande sätt: en konsonant är en bokstav annan än/skiljt från a, e,i,o, eller u och annan än y om y föregås av en konsonant. I ordet toy blir t.ex. t och y konsonanter. De kombinationer av konsonanter och vokaler kan förekomma i ett ord kan sammanfattas med : Exempel 19 (C) VC m (V) C står för en lista av konsonanter och V för en lista av vokaler. Längden på listan måste vara större än 0. Som nämnts tidigare är m ett mått på antalet vokal-konsonant kombinationer som finns i ett ord. Villkoret kan även bestå av andra delar, där man ställer andra krav på hur stammen ska se ut: *S - stammen slutar på s. *v* - stammen innehåller en vokal. *d - stammen slutar på dubbel konsonant. *o - stammen slutar på bokstavskombinationen CVC där den andra konsonanten inte får vara någon av bokstäverna: w, x eller y. Nedanstående exempel från Porters stemmingalgoritm för engelska visar hur en regel kan se ut: Exempel 20 (m > 1) EMENT -> Regeln innebär att den återstående stammen bör innehålla minst två vokal-konsonant kombinationer för att EMENT skall plockas bort. Ex. replacement -> replac. En annan typ av regel som kan förekomma är: Exempel 21 (m = 1 and *o) -> E Här bör värdet på m vara exakt ett och stammen skall sluta på vokal-konsonant-vokal för att e skall läggas till. Ex. fil(ing)-> file. Genom att studera hur stammarna skulle se ut efter borttagning av suffixen valde man 14

20 att använda ett villkor för hur kort en stam får vara. Detta baseras på iakttagelser för att förbättra algoritmen. Porter testade sin algoritm på ett lexikon med ord för att se hur mycket det kunde förminskas. Stamlexikonet, som skapades med hjälp av algoritmen, innehöll 6370 unika stammar (Porter, 1980). Det ursprungliga lexikonet reducerades med en dryg tredjedel Porters stemmingsalgoritm för svenska Algoritmen för svenska består av tre steg där en ändelse plockas bort om villkoret uppfylls(porters stemmingsalgoritms hemsida). För att tillgodose villkoret krävs att ändelsen föregås av minst en vokal-konsonant kombination. Området efter den här kombinationen kallas för R1. R1 syftar på rot 1, inom vissa språk använder man sig även av R2. Det står för rot 2 och är området efter vokal-konsonant följt av vokalkonsonant. Första steget plockar bort den längsta av följande ändelser som matchar ordet: 1a. a arna erna heterna orna ad e ade ande arne are aste en anden aren heten ern ar er heter or as arnas ernas ornas es ades andes ens arens hetens erns at andet het ast I första steget plockar man även bort -s förutsatt att föregående bokstav är någon av följande: 1b. b c d f g h j k l m n o p r t v y I steg 1b. är det inte ett krav att ändelsen finns inom R1. Steg två letar efter följande konsonantpar där den sista bokstaven tas bort: 2. dd gd nn dt gt kt tt Tredje och sista steget innehåller fem ändelser som antingen tas bort eller modifieras: 3. lig ig els -> tas bort löst -> ersätts med lös fullt -> ersätts med full 2.7 Ordklasstaggning Som nämnts tidigare kan automatisk morfologisk analys användas inom ordklasstaggning. Ordklasstaggning innebär att man tilldelar varje ord i en korpus en 15

21 ordklass eller annan lingvistisk information. Det finns regelbaserade samt statistiska taggare. De statistiska taggarna räknar ut sannolikheten för en viss kombination av ordklasser medan de regelbaserade ordklasstaggarna gör sina bedömningar efter de regler de har. I nästa avsnitt presenteras en effektiv ordklasstaggare som används i utvärderingen av examensarbetet TnT TnT, som står för Trigrams'nTags, är en statistisk ordklasstaggare gjord av Thorsten Brants (Brants, 2000). Den kan lätt tränas upp för olika språk och taggset. Den är inte anpassad för ett visst språk utan man har koncentrerat sig på att den ska kunna hantera stora korpora. Taggaren är enkel att använda tillsammans med ett nytt språk, nytt taggset eller ny domän. Ordklasstaggaren är baserad på Markov modeller. Till taggaren hör en lexikonfil och en språkmodell. Inputfilen måste innehålla en token per rad för att programmat skall kunna göra en analys. Varje token skall stå på en egen rad och ingenting annat får stå på den raden. Skulle ett mellanslag komma med så ignoreras allt efter mellanslaget. Filen kan innehålla tomma rader som kan representera meningsslut eller paragrafslut. För kommentarer i filen används %%. TnT tar som argument en flagga(ej nödvändig), en språkmodell och en textfil: tnt [options] model corpus. Den taggade filen är tämligen lik den otaggade. Här finns en extra kolumn med själva taggen. Första kolumnen är alltså token och andra kolumnen taggen och allt efter den andra kolumnen ignoreras. Exempel 21 But CC the DT day NN of IN the DT deadline NN came VBD and CC passed VBD TnT är snabbast när det gäller taggning och träning. Metoden har även visat sig vara bäst när det gäller noggrannhet. Mellan 96 och 97 % av alla ord taggas korrekt beroende på språk och taggset. Enligt ett test gjort på tyska tidningar blir resultatet 8,7 % bättre om ordet är känt. Till och med träningstexter på 1000 ord kan ge ett bra resultat. 2.8 Xplain Enligt en undersökning utförd av Organisation for Economic Co-operation and Development (OECD) har var fjärde svensk så stora läs- och skrivsvårigheter att han/hon har svårt att förstå en artikel i en dagstidning. Det är viktigt att alla ska kunna ta del av den information som ges på t.ex. statliga webbsidor om vad som händer i samhället. Xplain är ett program som förklarar svåra ord och uttryck på hemsidor. Tyngdpunkten ligger på de mer komplicerade orden. 16

22 Varje kund förses med ett konto, där han/hon kan gå in och lägga till eller ta bort information. Det finns möjlighet att välja hur många ordlistor man vill ha på sitt konto. Man kan exempelvis ha en ordlista per ämnesområde.varje kund sköter alltså sina ordlistor och lägger till nya ord vid behov. För att använda tjänsten läggs en länk till Xplain på webbplatsen. Man behöver alltså inte göra någon installation på server eller dator. En förklaringsknapp läggs till på sidan och när användaren klickar på den laddas sidan om. De ord som har hittats i lexikonet följs av en liten knappsymbol. Genom att trycka på den lilla knappen får man ett pop-up fönster med ordförklaringen. Alternativt kan man låta förklaringen visas i Alt taggen. Då visas förklaringen när man håller muspekaren över ordet. Med hjälp av 'lyssna' funktionen som ingår kan man även få höra hur ordet uttalas och få förklaringen uppläst. Programmet är inte anpassat efter ett visst språk. Kunden skapar ordlistorna och lägger in förklaringar på det språk som önskas. På så sätt kan man t.ex. ha en sida med svensk text där orden förklaras på engelska. 17

23 3. Automatisk morfologisk analys för svenska Det här kapitlet beskriver utvecklingen av det program som jag skapat. Eftersom Porters stemmingalgoritm tillhör en av de mest använda stemmers och finns tillgänglig för svenska har jag valt att implementera den och använda den som grund i uppgiften. Det är en enkel algoritm som består av ett fåtal steg. Utvecklingen av programmet kan delas in i följande steg: Implementering av algoritmen Bearbetning av texten Inläsning och modifiering av lexikonet Regelskrivning Träning Programmet är skrivet i C++ och består av ett antal moduler. Modulerna är gjorda på ett sådant sätt att de lätt skall kunna återanvändas. En modul kan vara uppbyggd av flera andra. 3.1 Implementering av algoritmen Första steget var att implementera Porters stemmingalgoritm för svenska. De ändelser som inte var avsedda för substantiv slopades. Detta gjordes initialt genom att jag tog bort ändelser från suffixlistan som var typiska för andra ordklasser. Ändelserna -ast och -aste som är typiska för adjektiv är exempel på suffix som plockades bort. Under arbetets gång då programmet testades lade jag till och tog bort ändelser. Exempelvis så lades suffixen -na och -et till. Varje regel gjordes som en egen funktion. I exempel 22 visas hur borttagning av suffixet -s såg ut: Exempel 22 string slutar_pa_s( string b, unsigned int i,unsigned int r) { if ( b[i-1]== 's'&& (b[i-2]== 'b' b[i-2]== 'd' b[i-2]== 'c' b[i-2]== 'f' b[i-2]== 'g' b[i-2]== 'h' b[i-2] == 'j' b[i-2]== 'k' b[i-2] == 'l' b[i-2] == 'm' b[i-2]== 'n' b[i-2] == 'o' b[i-2]== 'p' b [i-2]== 'r' b[i-2]== 't' b[i-2] == 'v' b[i-2]== 'y')) { unsigned int c = i-1; if(r <=c) b = b.erase(c,1) } return b; } Regeln säger att ett finalt s skall tas bort hos ett ord förutsatt att bokstaven innan är någon av dessa: b, d, c, f, g, h, j, k, l, m, n, o, p, r, t, v eller y. Exempelvis så blir bils -> bil och bords -> bord. När algoritmen var implementerad gjorde jag ett litet program med ett ord som input, som sedan fick genomgå algoritmens olika regler. Som grund för att utöka reglerna användes ord ur boken The Morphology of Present-Day Swedish (Hellberg, 1991) 18

24 och en lista med mönsterord. Under arbetets gång lade jag till regler, byggde på programmet och gjorde vissa ändringar. 3.2 Programmets uppbyggnad Som input tar programmet en textfil, en lexikonfil och en flagga. Sedan görs en jämförelse mellan lexikon- och textfilen för att finna matchningar. Flaggan kan vara antingen: -skalad eller -exakt. Med flaggan -exakt modifieras inte orden innan matchning. Flaggan -skalad innebär att orden först matchas oförändrade. Om detta inte ger något resultat reduceras orden till stammar och matchas igen. Flaggan -skalad innebär en mindre säker matchning men kan samtidigt ge fler resultat. Anropet kan alternativt se ut så här: Exempel 23./xplain text.txt lexikon.txt -exakt Man kan säga att det finns två primära funktioner i programmet: 1. En funktion som bl.a. tar lexikonet och texten som argument. Funktionen går igenom lexikonet och plockar ut det längsta uttrycket. Detta skickas därefter vidare till nästa funktion. 2. I den här funktionen jämförs texten med lexikonuttrycket. Jämförelsen kan ske på två olika sätt beroende på valet att flagga. Dessa två funktioner består i sin tur av ett antal mindre funktioner. Nedan ges ett exempel på programmets input: Lexikonfil Befolkning =invånare Lilla Essingen = stadsdel i Stockholm Textfil Bortsett från Hammarby sjöstad växer Lilla Essingen snabbare än någon annan stadsdel i Stockholm. Förra året ökade befolkningen med 618 personer. Figur 3 Programmets input. Den första funktionen väljer ut det längsta uttrycket i lexikonet. Härvid avses antalet ord, i det här fallet Lilla Essingen. Den andra funktionen jämför texten och ordet och markerar med "*" i texten att ordet finns i lexikonet: 1. Bortsett från Hammarby sjöstad växer *Lilla Essingen* snabbare än någon annan stadsdel i Stockholm Förra året ökade befolkningen med 618 personer. Samma procedur upprepas för det näst längsta ordet i lexikonet o.s.v. och slutresultatet ser ut så här: 2. Bortsett från Hammarby sjöstad växer *Lilla Essingen* 19

25 snabbare än någon annan stadsdel i Stockholm Förra året ökade *befolkningen* med 618 personer. Ovanstående beskrivning är endast övergripande och i följande kapitel beskrivs funktionerna i programmet mer ingående Lexikonet En lexikonrad består av ett ord följt av ett "=" och därefter ordets betydelse. Det spelar ingen roll om ordet initieras med stor bokstav eller ej. Matchningen är inte beroende av detta. En lexikonrad har formen: Exempel 24 uttryck=förklaring För att kunna skriva kommentarer i lexikonet används "#". Denna rad ignoreras då vid inläsningen Inläsning av filer Programmet är uppbyggt på så sätt att alla filer som programmet använder först läses in och lagras. Detta görs för att spara tid och man slipper öppna dessa filer gång på gång. Lexikonfilen läses in och modifieras innan den lagras. Lexikonuttrycken grupperas efter det antal ord som ingår. En rad i lexikonet läses in och görs om till typen pair som består av två delar. Med följande kod omvandlar man lexikonraden till typen pair: Exempel 25 pair<string, string> * rad = paret(lexikon_rad) lexikon[flera][raknare[flera]].first = rad->first lexikon[flera][raknare[flera]].second = rad->second Den första delen av pair består av själva ordet/uttrycket som skall förklaras och kan nås genom att anropa first. Den andra delen innehåller förklaringen till ordet och anropas med second. Antalet ord i first räknas och beroende på detta placeras uttrycken i en tvådimensionell array. Under index 1 finns alla de lexikoningångar som består av ett ord o.s.v. Genom att strukturera lexikonet på detta sätt sparar man tid och får en bättre bild av innehållet. Lexikon Ny struktur Aktier pengar Inflations- och tillväxtmål finansiell rådgivning Index Aktier finansiell rådgivning Inflations- och tillväxtmål pengar Figur 4 Lexikonets nya struktur. Man går systematiskt igenom lexikonet från det längsta till det kortaste uttrycket. I det 20

26 här fallet börjar man med att jämföra inflations- och tillväxtmål med texten och fortsätter sedan med finansiella intäkter. Av de två andra filerna som läses in innehåller en av filerna alla regler för segmenteringen av orden och den andra undantagsorden d.v.s. ord som ej får modifieras av reglerna. Dessa filer lagras som de ser ut d.v.s. oförändrade Start- och stopfunktionerna Dessa funktioner används för att kunna klippa ut den del av texten som skall jämföras med lexikonuttrycket. Man går igenom texten och klipper ut N ord åt gången. N motsvarar antalet ord i lexikonuttrycket. När man har gjort en jämförelse hoppar man fram ett ord och klipper återigen ut N ord. Exemplet nedan visar en text som jämförs med ett lexikonuttryck som består av två ord: Text Lexikon Flickan gick till Gröna Lund. Gröna Lund = nöjesfält i Stockholm Figur 5 Text och lexikonuttryck som skall jämföras. När texten och lexikonuttrycket skall jämföras får man följande ordpar att jämföra med: Exempel 26 Text Flickan gick matchar ej med lexikonuttrycket. 0 1 gick till 1 2 till Gröna 2 3 Gröna Lund 3 4 matchar ej med lexikonuttrycket. matchar ej med lexikonuttrycket. matchar med lexikonuttrycket. Ord 0 fungerar som startord dvs det första ordet i texten. Texten loopas igenom från ord 0 till n. Där n står för antalet ord i texten minus antalet ord i lexikonuttrycket. I det här fallet blir n=3 (5-2). Detta innebär att programmet slutar när ord 3 och 4 har jämförts med lexikonuttrycket Bearbetning av texten Innan en jämförelse mellan ett lexikonuttryck och en textdel kan göras behöver man på något sätt rensa bort tecken som inte är relevanta i det här sammanhanget. Det kan vara frågan om t.ex. punkt eller kommatecken. En funktion som tar bort överflödiga tecken är nödvändig. En fråga är hur noggrann rensningen skall vara. 21

27 En funktion som slopar alla tecken som inte är bokstäver tar bort för mycket information. Siffror kan utgöra en del av ett ord och man förlorar en del av betydelsen om man tar bort dessa. En felmatchning kan då förekomma. Efter att ha tittat på olika texter bestämde jag mig för att funktionen skulle bestå av fyra delar som genomförs i ordningen: 1!., tas bort om det som kommer efter är ett blanktecken. 2 ( ) ' tas alltid bort. 3 - tas bort om det följs av radbrytning d.v.s att det är frågan om ett ord som delats på två rader. Bindestrecket tas bort och ordet dras ihop. 4 ser till att det bara förekommer ett mellanslag mellan två ord samt lägger till ett mellanslag före och efter ett ord. I den första delen tas tecknen bort om de förekommer sist i ett ord. På så sätt kommer inga förkortningar att tolkas som riktiga ord. I den andra delen tas tecknen alltid bort eftersom ett ords betydelse inte påverkas av dessa tecken. Del tre tar aldrig bort bindestreck om det är fråga om två ord. Genom del fyra, som ser till att varje ord omges av mellanslag, kan inga matchningar på delsträngar ske. Nedan visas en text före och efter bearbetning : Före Vill du ha en röd, blå eller svart bil? Efter Vill du ha en röd blå eller svart bil Figur 6 Text före och efter modifiering. Innan man jämför lexikonuttrycken och texten görs alla stora bokstäver om till små. Utan bokstavskontrollen skulle det bli problem med t.ex. ordet Städer. Städer reduceras först till Städ genom att suffixet er tas bort. Sedan bör Städ få formen stad genom en omljudsregel som säger att städ skall omvandlas till stad. Eftersom Städ och städ skiljer sig åt kommer ingen matchning att ske. Genom att göra om alla stora bokstäver till små försvinner problemet Ordräkning En funktion som som används på flera ställen i programmet är antalet_ord som räknar antalet ord i en given text. Det var därför viktigt att funktionen fungerade på ett bra sätt. Till en början användes funktionen bara för att räkna orden i lexikonuttrycken. Det var en enkel funktion som som bara räknade antalet mellanslag i ett lexikonuttryck, vilket fungerade bra. När man sedan behövde använda den i andra 22

28 sammanhang t.ex. räkna orden i en text gjordes en del modifieringar. Funktionen letar efter tecken som inte är ett blanktecken (t.ex. en bokstav, en siffra eller. ) följt av ett blanktecken d.v.s. nyradstecken, tabtecken eller mellanslag. Uppfylls detta krav ökas antalet ord med 1. I meningen Idag snöar det. skulle antalet ord då bli 3. G i idag följs av ett mellanslag, liksom r i snöar och t i det följs av ett nyradstecken vilket ger det korrekta värdet 3. Ett problem som löstes genom att modifiera funktionen var att de sista orden i en texten inte markerades trots att de fanns med i lexikonet. Detta kunde bero på två saker: 1. De sista orden hittades inte i lexikonet, vilket bl.a. kunde bero på att orden reducerades till felaktig stam och därför inte matchades med lexikonuttrycken. 2. De sista orden inte ens jämfördes med lexikonet. Efter att ha kontrollerat att orden reducerades till en korrekt stam och testat att orden markerades om de lades in i början av texten kunde jag utesluta det första alternativet. Som nämnts tidigare loopar man igenom texten och plockar ut de textdelar/ord som skall jämföras med ett lexikonuttryck. Som argument i loopen finns bl.a. antalet ord i texten. Om detta är för lågt kommer loopen att stanna för tidigt och de sista orden jämförs aldrig med lexikonuttrycket. Att antalet ord i texten blev för lågt berodde på att de ord som inte följdes av mellanslag t.ex. de sista ordet på en rad, inte räknades. I den nya funktionen har jag tagit hänsyn till detta Matchning När en matchning har gjorts vill man på något sätt spara de ord som matchats i texten. Som resultat vill man ha ordens position i texten för att sedan koppla ihop dem med respektive förklaring. För varje matchning vill man ha en start- och stopposition för ordet/uttrycket i texten. I det här fallet användes dessa positioner enbart för att markera orden i texten och på så sätt ser man att resultatet blir korrekt. Programmet använder sig av en lista av en egen datatyp (en s.k. struct) där information om matchningar sparas. Den här sammansatta datatypen tillåter att man själv bestämmer vilka medlemmar den ska ha. Typen har döpts till matchning och har följande form: Exempel 27 struct matchning{ unsigned int starttposition; unsigned int stopposition; pair<string, string> * lexikon; }; Man får då en lista som består av enheter med medlemmarna start- och stopposition för ett visst ord och även en pekare till förklaringen. Start och stop ger en siffra som står för ett teckennummer. Listan fylls på efterhand. Avslutningsvis går man igenom listan och före varje start- och efter varje stopposition sätts * för att markera ordet/orden. 23

Två-nivåmodellen, TWOL. 2D1418 Språkteknologi, Nada KTH Höstterminen 2004 Lisa Lagerkvist, Me-01

Två-nivåmodellen, TWOL. 2D1418 Språkteknologi, Nada KTH Höstterminen 2004 Lisa Lagerkvist, Me-01 Två-nivåmodellen, TWOL 2D1418 Språkteknologi, Nada KTH Höstterminen 2004 Lisa Lagerkvist, Me-01 Inledning Morfologisk parsning är nödvändig i de flesta språkteknologiska tillämpningar eftersom man nästan

Läs mer

Gränssnitt för FakeGranska. Lars Mattsson

Gränssnitt för FakeGranska. Lars Mattsson Gränssnitt för FakeGranska av Lars Mattsson (larsmatt@kth.se) Innehållsförteckning 1 Introduktion...3 2 Genomförande:...3 3 Användning...5 4 Kända buggar:...6 5 Källförteckning...6 2 1 Introduktion Taken

Läs mer

grammatik Ordklasser, nominalfraser, substantiv

grammatik Ordklasser, nominalfraser, substantiv Svenska språkets struktur: grammatik Ordklasser, nominalfraser, substantiv Helen Winzell (rum 4315, Key-huset) 013-28 69 28 helen.winzell@liu.se Varför grammatik? Språkets struktur med meningsbyggnad,

Läs mer

Inlämningsuppgift : Finn. 2D1418 Språkteknologi. Christoffer Sabel E-post: csabel@kth.se 1

Inlämningsuppgift : Finn. 2D1418 Språkteknologi. Christoffer Sabel E-post: csabel@kth.se 1 Inlämningsuppgift : Finn 2D1418 Språkteknologi Christoffer Sabel E-post: csabel@kth.se 1 1. Inledning...3 2. Teori...3 2.1 Termdokumentmatrisen...3 2.2 Finn...4 3. Implementation...4 3.1 Databasen...4

Läs mer

Språkteknologi och Open Source

Språkteknologi och Open Source Språkteknologi och Open Source Erik Edin F01 erikedin@kth.se 15 oktober 2004 1 1 Open Source Open Source är en rörelse som syftar till att skriva datorprogram som släpps fria utan kommersiella intressen.

Läs mer

12 Programstege Substantiv

12 Programstege Substantiv Det här är en programstege för substantiv. Du kan alltså lära dig om substantiven på ett enkelt sätt, en liten bit i taget. Varje sida innehåller fakta om substantiv, tillsammans med uppgifter som du också

Läs mer

Kungl. Tekniska högskolan NADA Grundformer med Stava

Kungl. Tekniska högskolan NADA Grundformer med Stava Kungl. Tekniska högskolan NADA Grundformer med Stava Språkteknologi 2D1418 Höstterminen 2004 Författare: Andreas Pettersson az@kth.se 1. Bakgrund Om man automatiskt ska plocka ut de informationsbärande

Läs mer

Dependensregler - Lathund

Dependensregler - Lathund Dependensregler - Lathund INTRODUKTION I textprogrammet TeCST är det möjligt för en skribent att skriva, redigera och klistra in text för att få ut läsbarhetsmått och få förslag på hur texten kan skrivas

Läs mer

Taltaggning. Rapport av Daniel Hasselrot 781105-0157, d98-dha@nada.kth.se 13 oktober 2003

Taltaggning. Rapport av Daniel Hasselrot 781105-0157, d98-dha@nada.kth.se 13 oktober 2003 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

Läs mer

Grammatiska morfem kan också vara egna ord, som t ex: och på emellertid

Grammatiska morfem kan också vara egna ord, som t ex: och på emellertid Stockholms universitet Institutionen för lingvistik Språkteori grammatik VT 1994 Robert Eklund MORFEMANAYS Vi kan dela in ord i mindre enheter, segmentera orden. Här följer en liten kortfattad beskrivning

Läs mer

Varför är morfologi viktigt? Morfologisk analys och generering. Vad är ett ord (idag vs. i dag) Kan man inte lägga alla ord i en lexikonfil?

Varför är morfologi viktigt? Morfologisk analys och generering. Vad är ett ord (idag vs. i dag) Kan man inte lägga alla ord i en lexikonfil? Morfologisk analys och generering Språkteknologi för språkkonsulter Ola Knutsson 2009 Varför är morfologi viktigt? Ord är grunden i alla världens språk Alla språkteknologiska aktiviteter kräver kunskap

Läs mer

Användarhandledning Version 1.2

Användarhandledning Version 1.2 Användarhandledning Version 1.2 Innehåll Bakgrund... 2 Börja programmera i Xtat... 3 Allmänna tips... 3 Grunderna... 3 Kommentarer i språket... 4 Variabler... 4 Matematik... 5 Arrayer... 5 på skärmen...

Läs mer

Medieteknologi Webbprogrammering och databaser MEB725, 5p (7,5 ECTS) Klientprogrammering JavaScript Program på flera sidor

Medieteknologi Webbprogrammering och databaser MEB725, 5p (7,5 ECTS) Klientprogrammering JavaScript Program på flera sidor http://w3.msi.vxu.se/multimedia Medieteknologi Webbprogrammering och databaser MEB725, 5p (7,5 ECTS) Klientprogrammering JavaScript Program på flera sidor Rune Körnefors Innehåll Variabler i JavaScript

Läs mer

Innehållsförteckning till Svenska Online. Adress: www.sweol.se Uppdaterat 2011 01 18

Innehållsförteckning till Svenska Online. Adress: www.sweol.se Uppdaterat 2011 01 18 Innehållsförteckning till Svenska Online Adress: www.sweol.se Uppdaterat 2011 01 18 ABC kapitel 1, Alfabetisering 1 Skriv bokstaven a/a Se och lyssna Mus 2 Skriv bokstaven b/b Se och lyssna Mus 3 Skriv

Läs mer

Grim. Några förslag på hur du kan använda Grim. Version 0.8

Grim. Några förslag på hur du kan använda Grim. Version 0.8 Grim Några förslag på hur du kan använda Grim Ingrid Skeppstedt Nationellt centrum för sfi och svenska som andraspråk Lärarhögskolan Stockholm Ola Knutsson IPlab Skolan för datavetenskap och kommunikation,

Läs mer

TDDD02 Föreläsning 2 HT-2013. Reguljära uttryck och reguljära språk Lars Ahrenberg

TDDD02 Föreläsning 2 HT-2013. Reguljära uttryck och reguljära språk Lars Ahrenberg TDDD02 Föreläsning 2 HT-2013 Reguljära uttryck och reguljära språk Lars Ahrenberg Översikt Reguljära uttryck sökproblem i texter definitioner och exempel UNIX-funktionen grep Reguljära transformationer

Läs mer

Taggning av räkneord som årtal eller andra räkneord, Språkteknologi 2D1418, HT 01 Jonas Sjöbergh, , 15 oktober 2001

Taggning av räkneord som årtal eller andra räkneord, Språkteknologi 2D1418, HT 01 Jonas Sjöbergh, , 15 oktober 2001 Taggning av räkneord som årtal eller andra räkneord, Språkteknologi 2D1418, HT 01 Jonas Sjöbergh, 761029-0178, jsh@nada.kth.se 15 oktober 2001 1 Bakgrund 1.1 Kort om taggning Taggning innebär att man ger

Läs mer

Skrivstöd. Joakim Nivre. Introduktion till språkteknologi. Skrivstöd. Inledning. Orsaker till stavfel. Detektering av icke-ord

Skrivstöd. Joakim Nivre. Introduktion till språkteknologi. Skrivstöd. Inledning. Orsaker till stavfel. Detektering av icke-ord Joakim Nivre / 30 Varför bry sig om stavning? Stavfel kan skapa missförstånd Stavfel kan dölja innehåll Standardiserad stavning underlättar många uppgifter Slå upp ord i ordbok Identifiera svårlästa ord

Läs mer

Software Translator 6.1 Manual

Software Translator 6.1 Manual Software Translator 6.1 Manual 1 Innehåll Sidan Inledning 3 Installation 4 Auktorisation 4 Översikt Programfönster 5 Menyer Arkiv 5 Visa 6 Språk 6 Verktyg 7 Hjälp 7 Handhavande Att lägga till ett program

Läs mer

ORDKLASSERNA I. Ett sätt att sortera våra ord

ORDKLASSERNA I. Ett sätt att sortera våra ord ORDKLASSERNA I Ett sätt att sortera våra ord Vilka ordklasser finns det? Hur många kan ni komma på? 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Hur sorterar man orden? Morfologiskt Syntaktiskt Semantiskt SUBSTANTIV

Läs mer

Utveckling av ett grafiskt användargränssnitt

Utveckling av ett grafiskt användargränssnitt Datavetenskap Opponenter: Daniel Melani och Therese Axelsson Respondenter: Christoffer Karlsson och Jonas Östlund Utveckling av ett grafiskt användargränssnitt Oppositionsrapport, C-nivå 2010-06-08 1 Sammanfattat

Läs mer

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p Skriven av Michael Andersson Introduktion Programmering I högnivåspråk fokuserar på själv problemet (algoritmen) istället

Läs mer

Grundläggande textanalys. Joakim Nivre

Grundläggande textanalys. Joakim Nivre Grundläggande textanalys Joakim Nivre Om kursen Ni har hittills läst Lingvistik Datorteknik Matematik Språkteknologiska tillämpningar Nu ska vi börja med språkteknologi på allvar Hur gör man text hanterbar

Läs mer

Grammatik för språkteknologer

Grammatik för språkteknologer Grammatik för språkteknologer Introduktion http://stp.lingfil.uu.se/~matsd/uv/uv11/gfst/ Mats Dahllöf Institutionen för lingvistik och filologi Oktober 2011 Lärandemål Efter avslutad kurs skall studenten

Läs mer

Bakgrund och motivation. Definition av algoritmer Beskrivningssätt Algoritmanalys. Algoritmer. Lars Larsson VT 2007. Lars Larsson Algoritmer 1

Bakgrund och motivation. Definition av algoritmer Beskrivningssätt Algoritmanalys. Algoritmer. Lars Larsson VT 2007. Lars Larsson Algoritmer 1 Algoritmer Lars Larsson VT 2007 Lars Larsson Algoritmer 1 1 2 3 4 5 Lars Larsson Algoritmer 2 Ni som går denna kurs är framtidens projektledare inom mjukvaruutveckling. Som ledare måste ni göra svåra beslut

Läs mer

LPP Magiska dörren ÅR 4

LPP Magiska dörren ÅR 4 LPP Magiska dörren ÅR 4 Detta arbetsområde omfattar läsning diskussion kring det lästa, skrivande av en egen berättelse, elevrespons på klasskamraters berättelse samt bearbetning av berättelsen. Arbetsområdet

Läs mer

Svensk nationell datatjänst, SND BAS Online

Svensk nationell datatjänst, SND BAS Online Pass 3: Metadata Vad är metadata? I den här presentationen kommer jag ge en introduktion till metadata och forskningsdata på ett principiellt plan. Vi kommer bland annat titta lite närmare på vad metadata

Läs mer

Vanliga frågor för VoiceXpress

Vanliga frågor för VoiceXpress Vanliga frågor för VoiceXpress 1) Hur stort ordförråd (vokabulär) innehåller VoiceXpress? VoiceXpress innehåller ett mycket omfattande ordförråd, och svaret på frågan varierar en aning beroende på hur

Läs mer

Morfologi, särdrag, lexikon och syntax. När är det bra med morfologi? Vad är ett ord? Morfem. Stam och affix

Morfologi, särdrag, lexikon och syntax. När är det bra med morfologi? Vad är ett ord? Morfem. Stam och affix Morfologi, särdrag, lexikon och syntax Ordbildning och ordböjning Automatisk morfologisk analys Lexikon Särdrag, attribut och värden Syntax När är det bra med morfologi? Stavnings- och grammatikkontroll

Läs mer

INNEHÅLLSFÖRTECKNING... 1 INLEDNING... 2 1. ORDBOKEN I VERKTYGSLISTEN... 3 2. ORDBOKEN... 3

INNEHÅLLSFÖRTECKNING... 1 INLEDNING... 2 1. ORDBOKEN I VERKTYGSLISTEN... 3 2. ORDBOKEN... 3 Ordboken 1 Innehållsförteckning INNEHÅLLSFÖRTECKNING... 1 INLEDNING... 2 1. ORDBOKEN I VERKTYGSLISTEN... 3 2. ORDBOKEN... 3 MINIMERA OCH STÄNG... 3 SÖKFÄLT... 4 SÖKRESULTAT... 4 Resultat... 4 Ordklassfärger...

Läs mer

5HVLVWHQVWDEHOO 'DWD3DUWQHU. Er partner inom data

5HVLVWHQVWDEHOO 'DWD3DUWQHU. Er partner inom data 5HVLVWHQVWDEHOO Tack för att du valde programmet 5HVLVWHQVWDEHOO! Vi hoppas att programmet ska vara till stor hjälp i ditt arbete. Har du synpunkter på programmet är du mycket välkommen att höra av dig

Läs mer

Fråga: Vi ska skapa en omvärldsbevakningsgrupp och undrar hur ska man tänka när man skapar bevakningar för att plocka upp trender inom ett ämne?

Fråga: Vi ska skapa en omvärldsbevakningsgrupp och undrar hur ska man tänka när man skapar bevakningar för att plocka upp trender inom ett ämne? FAQ Fråga: Vi ska skapa en omvärldsbevakningsgrupp och undrar hur ska man tänka när man skapar bevakningar för att plocka upp trender inom ett ämne? Först och främst måste ni bestämma vilka mål ni har

Läs mer

MÖSG ht 2005 Maskinöversättningssystemet MATS

MÖSG ht 2005 Maskinöversättningssystemet MATS MÖSG ht 2005 Maskinöversättningssystemet MATS Per Weijnitz perweij@stp.ling.uu.se Om detta kursmoment främja förståelse av översättningsproblem MÖ-arbete regelbaserade MÖ-system godtyckligt valt system?

Läs mer

Analys av BI-system och utveckling av BIapplikationer

Analys av BI-system och utveckling av BIapplikationer Computer Science Fredrik Nilsson, Jonas Wånggren Daniel Strömberg Analys av BI-system och utveckling av BIapplikationer Opposition Report, C/D-level 2005:xx 1 Sammanfattat omdöme av examensarbetet Vi tycker

Läs mer

TDDA94 LINGVISTIK, 3 poäng tisdag 19 december 2000

TDDA94 LINGVISTIK, 3 poäng tisdag 19 december 2000 Lars Ahrenberg, sid 1(5) TENTAMEN TDDA94 LINGVISTIK, 3 poäng tisdag 19 december 2000 Inga hjälpmedel är tillåtna. Maximal poäng är 36. 18 poäng ger säkert godkänt. Del A. Besvara alla frågor i denna del.

Läs mer

ClaroDictionary med tal. ClaroDictionary utan tal

ClaroDictionary med tal. ClaroDictionary utan tal ClaroDictionary med tal ClaroDictionary utan tal Manual Artikelnummer 10400 och 10401 1 Innehåll Välkommen till ClaroDictionary...3 ClaroDictionary Översikt...4 ClaroDictionarys verktygsknappar...4 Knappen

Läs mer

Precodia. Manual. Precodia 1.0. Elevdata AB. Produktionsstöd har erhållits från Specialpedagogiska skolmyndigheten. (www.spsm.se)

Precodia. Manual. Precodia 1.0. Elevdata AB. Produktionsstöd har erhållits från Specialpedagogiska skolmyndigheten. (www.spsm.se) Precodia Manual Precodia 1.0 Elevdata AB Produktionsstöd har erhållits från Specialpedagogiska skolmyndigheten (www.spsm.se) Elevdata i Malmö AB, Fosievägen 13 21431 Malmö Tel: 040-939150 www.elevdata.se

Läs mer

First Class uppgift 2

First Class uppgift 2 First Class uppgift 2 Hur du lägger till en signering i mail. När du loggat in på First Class ser det ut som på bilden nedan, det så kallade skrivbordet. Här ska du klicka på knappen inställningar uppe

Läs mer

Tentamen, Algoritmer och datastrukturer

Tentamen, Algoritmer och datastrukturer UNDS TEKNISKA ÖGSKOA (6) Institutionen för datavetenskap Tentamen, Algoritmer och datastrukturer 23 8 29, 8. 3. Anvisningar: Denna tentamen består av fem uppgifter. Totalt är skrivningen på 36 poäng och

Läs mer

Bildbaskontoret. Bruksanvisning. Handitek. anpassar tekniken till människan BRUX\...\809082 BILDBASKONTORET

Bildbaskontoret. Bruksanvisning. Handitek. anpassar tekniken till människan BRUX\...\809082 BILDBASKONTORET Bildbaskontoret Bruksanvisning Handitek BRUX\...\809082 BILDBASKONTORET anpassar tekniken till människan Innehållsförteckning Introduktion... 3 Datorkrav...3 Om bildbaser... 4 Vad är en bildbas?...4 Varför

Läs mer

Tio vanliga Excel-problem

Tio vanliga Excel-problem Tio vanliga Excel-problem Aris Velizelos Linda Larsson Kakuli SVT Nyheter Problem: Tomma rader Du har laddat ner en färdig Excel-fil från t ex SCB men det saknas uppgifter på varannan rad. Du vill ha uppgift

Läs mer

efact Sök Sök/Rapporter (2008-04-18)

efact Sök Sök/Rapporter (2008-04-18) efact Sök Sök/Rapporter (2008-04-18) Sök För att söka efter fakturor, tryck Alt + Ö eller klicka på Sök i den övre menyraden. Man kan söka på tre olika typer av värden; 1. Fakturavärden. Information knutet

Läs mer

Lexikon: ordbildning och lexikalisering

Lexikon: ordbildning och lexikalisering Svenskan i tvärspråkligt perspektiv Lexikon: ordbildning och lexikalisering Solveig Malmsten Vår inre språkförmåga Lexikon Ordförråd : Uttryck i grundform + deras betydelse Enkla ord, t.ex. blå, märke

Läs mer

TDDC74 - Projektspecifikation

TDDC74 - Projektspecifikation TDDC74 - Projektspecifikation Projektmedlemmar: Namn Efternamn abcde123@student.liu.se Namn Efternamn abcde123@student.liu.se Handledare: Handledare handledare@ida.liu.se eller handledare@student.liu.se

Läs mer

Att söka information (med betoning på Internet)

Att söka information (med betoning på Internet) Att söka information (med betoning på Internet) - en sökguide för distansstuderande 1. Var finns informationen? 2. Hur söker man? Sökstrategier 3. Olika informationskällor, hjälpmedel vid informationssökning

Läs mer

3. Hämta och infoga bilder

3. Hämta och infoga bilder Sida 1 av 8 Lektion 1: sida 4 av 4 «Sida 3 av 4 Till kursens framsida 3. Hämta och infoga bilder Nu vet vi ju hur man sätter in text i sin sida. Men hur gör man med bilder? Det är inte svårt alls! Det

Läs mer

Manual HSB Webb brf 2004 03 23

Manual HSB Webb brf 2004 03 23 TERMINOLOGI I Polopoly används ett antal grundläggande begrepp för publicering och hantering av information, eller innehåll som det också benämns. Nedan följer en kort genomgång av denna grundläggande

Läs mer

Kursplan i svenska som andra språk på Alsalamskolan enligt kursplan 2011

Kursplan i svenska som andra språk på Alsalamskolan enligt kursplan 2011 Kursplan i svenska som andra språk på Alsalamskolan enligt kursplan 2011 Målen för år 1 Eleven skall kunna: alla bokstäver alla bokstavsljud läsa korta frekventa ordbilder utan att ljuda ljuda korta ord

Läs mer

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp Dataingenjörsprogrammet, elektroingenjörsprogrammet och medicinsk teknik KTH Skolan för Teknik och Hälsa Redovisning: Se Kurs-PM om hur redovisningen

Läs mer

Internet. En enkel introduktion. Innehåll:

Internet. En enkel introduktion. Innehåll: Internet En enkel introduktion Innehåll: Datorns olika delar Starta datorn Så gör du om du kan webbadressen Så gör du om du inte kan webbadressen Kortfattad repetition Alingsås bibliotek, 2012 2 3 4 6

Läs mer

När är det bra med morfologi? Morfologi (formlära) Vad är ett ord? Ordbildning och ordböjning. Antal bokstäver i mamma? Morfem

När är det bra med morfologi? Morfologi (formlära) Vad är ett ord? Ordbildning och ordböjning. Antal bokstäver i mamma? Morfem Morfologi (formlära) Ordbildning och ordböjning Automatisk morfologisk analys När är det bra med morfologi? Stavnings- och grammatikkontroll Sökmotorer Textsammanfattning i all språkteknik, alltid Ordbildning

Läs mer

MÄLARDALENS HÖGSKOLA. CD5560 Formella språk, automater och beräkningsteori. Användarmanual. för simulatorn JFLAP

MÄLARDALENS HÖGSKOLA. CD5560 Formella språk, automater och beräkningsteori. Användarmanual. för simulatorn JFLAP MÄLARDALENS HÖGSKOLA CD5560 Formella språk, automater och beräkningsteori Användarmanual för simulatorn JFLAP Innehållsförteckning Att komma igång med JFLAP... 3 Att köra en sträng... 5 Att köra flera

Läs mer

Språkpsykologi/psykolingvistik

Språkpsykologi/psykolingvistik Kognitiv psykologi HT09 Språk Ingrid Björk Språkpsykologi/psykolingvistik Fokuserar på individers språkanvändning Språkprocessning Lagring och åtkomst, minnet Förståelse Språket och hjärnan Språk och tänkande

Läs mer

Uppgift 1 ( Betyg 3 uppgift )

Uppgift 1 ( Betyg 3 uppgift ) Uppgift 1 ( Betyg 3 uppgift ) Skriv ett program, Draw_Hexagones, som ritar ut en bikupa enligt körexemplen nedan. Exempel 1: Mata in storlek på bikupan: 1 Exempel 3: Mata in storlek på bikupan: 3 \ / \

Läs mer

Johan Karlsson Datavetenskap för teknisk kemi, 10p, moment 1 Datavetenskap Umeå Universitet. Tentamen

Johan Karlsson Datavetenskap för teknisk kemi, 10p, moment 1 Datavetenskap Umeå Universitet. Tentamen Tentamen för teknisk kemi, 10p, moment 1 29 november 1999 Skrivtid 9-15 Hjälpmedel: av följande böcker. - U. Bilting och J. Skansholm: Vägen till C - A. Kelley & I. Pohl: A Book on C Maxpoäng: Gräns för

Läs mer

Programmering, grundkurs, 8.0 hp HI1024, HI1900 etc., Tentamen TEN1. Måndagen den 10 januari 2011,

Programmering, grundkurs, 8.0 hp HI1024, HI1900 etc., Tentamen TEN1. Måndagen den 10 januari 2011, Programmering, grundkurs, 8.0 hp HI1024, HI1900 etc., Tentamen TEN1 Måndagen den 10 januari 2011, 8.15 12.15 Tentamen består av två delar, del A och del B. Del A innehåller 10 kryssfrågor på olika teman

Läs mer

Våren 2010. Nationalencyklopedin. Avancerad guide

Våren 2010. Nationalencyklopedin. Avancerad guide Nationalencyklopedin Avancerad guide Nationalencyklopedin Våren 2010 Nationalencyklopedins uppdrag är att sprida kunskap, texterna är skrivna av drygt 4 000 experter och bearbetad av redaktionen. På nätet

Läs mer

729G09 Språkvetenskaplig databehandling

729G09 Språkvetenskaplig databehandling 729G09 Språkvetenskaplig databehandling Föreläsning 2, 729G09, VT15 Reguljära uttryck Lars Ahrenberg 150409 Plan för föreläsningen Användning av reguljära uttryck Formella språk Reguljära språk Reguljära

Läs mer

Uppgifter till praktiska tentan, del A. (7 / 27)

Uppgifter till praktiska tentan, del A. (7 / 27) Uppgifter till praktiska tentan, del A. (7 / 27) I. Sortering/Sökning: III II. Representation/Omvandling/format/protokoll: II III. Strukturering: II I alla problem, där bokstäver förekommer, antar vi att

Läs mer

Uppgift 1 ( Betyg 3 uppgift )

Uppgift 1 ( Betyg 3 uppgift ) 2008-03-12.kl.14-19 Uppgift 1 ( Betyg 3 uppgift ) Du skall skriva ett program som läser igenom en textfil som heter FIL.TXT och skriver ut alla rader där det står ett decimaltal först på raden. Decimaltal

Läs mer

Värmedistribution i plåt

Värmedistribution i plåt Sid 1 (6) Värmedistribution i plåt Introduktion Om vi med konstant temperatur värmer kanterna på en jämntjock plåt så kommer värmen att sprida sig och temperaturen i plåten så småningom stabilisera sig.

Läs mer

ORDKLASSTAGGNING. Marco Kuhlmann Institutionen för datavetenskap

ORDKLASSTAGGNING. Marco Kuhlmann Institutionen för datavetenskap ORDKLASSTAGGNING Marco Kuhlmann Institutionen för datavetenskap Ordpredicering n-gram-modeller (definition, skattning) den brusiga kanalen: P(R F) = P(F R) P(R) redigeringsavstånd, Levenshtein-avstånd

Läs mer

Ersätta text, specialtecken och formatering

Ersätta text, specialtecken och formatering 11 Ersätta text, specialtecken och formatering Möjligheten att söka igenom dokumentet och byta ut tecken, ord, textstycken, formatering, specialtecken (t.ex. sidbrytning) och annat är faktiskt mycket mer

Läs mer

PROV. 12 Egenskaper (provavsnitt)

PROV. 12 Egenskaper (provavsnitt) 12 Egenskaper (provavsnitt) 12.1 Egenskaper 12.2 Deklaration av egenskaper 12.3 Åtkomsttjänster för egenskaper 12.4 Åtkomsttjänster med genererade instansvariabler 12.5 Åtkomsttjänster med egna instansvariabelnamn

Läs mer

Grundläggande textanalys, VT2013

Grundläggande textanalys, VT2013 Grundläggande textanalys, VT2013 evelina.andersson@lingfil.uu.se Rum 9-2035 http://stp.ling.uu.se/~evelina/uv/uv13/gta/ (Tack till Sofia Gustafson-Capkovâ för material.) Idag - Preprocessing - Tokeniserings-

Läs mer

Hammarbyskolan Reviderad februari 2009 Lokal kursplan i svenska/svenska som andra språk

Hammarbyskolan Reviderad februari 2009 Lokal kursplan i svenska/svenska som andra språk Lokal kursplan i svenska/svenska som andra språk Skriva alfabetets bokstavsformer t.ex. genom att forma eller att skriva bokstaven skriva sitt eget namn forma varje bokstav samt skriva samman bokstäver

Läs mer

Datalogi för E Övning 3

Datalogi för E Övning 3 Datalogi för E Övning 3 Mikael Huss hussm@nada.kth.se AlbaNova, Roslagstullsbacken 35 08-790 62 26 Kurshemsida: http://www.csc.kth.se/utbildning/kth/kurser/2d1343/datae06 Dagens program Att skapa egna

Läs mer

Utveckling av simulator för ärendehanteringssystem

Utveckling av simulator för ärendehanteringssystem Datavetenskap Opponent(er): Emil Danielsson & Patrik Lundberg Respondent(er): Niclas Hanold & Samiar Saldjoghi Utveckling av simulator för ärendehanteringssystem Oppositionsrapport, C/D-nivå 2005:xx 1

Läs mer

So ka artiklar och annan litteratur

So ka artiklar och annan litteratur 1 So ka artiklar och annan litteratur UB:s startsida är en bra startpunkt när du ska söka litteratur vare sig du letar efter böcker eller artiklar. Sökrutan är nästan det första du lägger märke till. Bakom

Läs mer

Programmering i Scratch 2.0

Programmering i Scratch 2.0 Programmering i Scratch 2.0 Version 1.3 Anders Berglund @andersberglund_ anders.h.berglund@stockholm.se Mälarhöjdens skola 2017 Del 1 Vad är Scratch? Scratch är ett visuellt programmeringsspråk som går

Läs mer

Introduktion till frågespråket SQL (v0.91)

Introduktion till frågespråket SQL (v0.91) DD1370: Databaser och Informationssystem Hösten 2014 Petter Ögren Introduktion till frågespråket SQL (v0.91) 13:e November Disclaimer: Dessa anteckningar har producerats under viss tidspress, och kan därför

Läs mer

Palette. Matchning fakturor mot order - Manual. Version 1.0 / 140530

Palette. Matchning fakturor mot order - Manual. Version 1.0 / 140530 Palette Matchning fakturor mot order - Manual 1 Innehållsförteckning TIPS:... 3 MATCHA FAKTURA... 4 OM FAKTURARADER FINNS I FÄLT 3... 6 Automatisk ommatchning... 6 Kvar att matcha... 7 Om rader får röd

Läs mer

Labora&on 2 Funk&oner, if och loop övningar/uppgi:er

Labora&on 2 Funk&oner, if och loop övningar/uppgi:er Labora&on 2 Funk&oner, if och loop övningar/uppgi:er 1M322 Webbteknik 2, 7,5hp Medieteknik 2017 Rune Körnefors rune.kornefors@lnu.se 1. Ladda ner arbetsdokument Till övningarna i denna labora&on finns

Läs mer

Grafisk visualisering av en spårbarhetslösning

Grafisk visualisering av en spårbarhetslösning Datavetenskap Opponenter Johan Kärnell och Linnea Hjalmarsson Respondenter Agni Rizk och Tobias Eriksson Grafisk visualisering av en spårbarhetslösning Oppositionsrapport, C-nivå Report 2011:06 1. Generell

Läs mer

Korp. https://spraakbanken.gu.se/korplabb/ Övningar Språkbankens höstworkshop oktober 2016

Korp. https://spraakbanken.gu.se/korplabb/ Övningar Språkbankens höstworkshop oktober 2016 Korp Övningar Språkbankens höstworkshop 2016 https://spraakbanken.gu.se/korplabb/ sb-korp@svenska.gu.se 17 oktober 2016 ÖVERSIKT Korp är Språkbankens korpusverktyg och en väsentlig del av vår korpusinfrastruktur.

Läs mer

Lyssna, Skriv och Läs!

Lyssna, Skriv och Läs! Lyssna, Skriv och Läs! Läsinlärning från grunden Gunnel Wendick Innehållsförteckning Introduktion 5-8 Sidhänvisningar till uppgifterna 9 Förklaring av uppgifterna 10-13 O o 15-19 S s 20-24 A a 25-29 L

Läs mer

Forskning och utveckling inom språkteknologi Uppgift 3: Projektförslag Parallelliserad dependensparsning i CUDA

Forskning och utveckling inom språkteknologi Uppgift 3: Projektförslag Parallelliserad dependensparsning i CUDA Forskning och utveckling inom språkteknologi Uppgift 3: Projektförslag Parallelliserad dependensparsning i CUDA Evelina Andersson 18 maj 2011 1 Introduktion Att träna mycket för att bli duktig på ett språk

Läs mer

Följande program utvecklades av BITTECH. De flesta såldes via Elevdata, Frölunda Data och VetaMer. De finns inte längre till försäljning.

Följande program utvecklades av BITTECH. De flesta såldes via Elevdata, Frölunda Data och VetaMer. De finns inte längre till försäljning. Programvaror utvecklade av BITTECH under åren 1990 till 2004 Följande program utvecklades av BITTECH. De flesta såldes via Elevdata, Frölunda Data och VetaMer. De finns inte längre till försäljning. Meteor

Läs mer

Rekursion och induktion för algoritmkonstruktion

Rekursion och induktion för algoritmkonstruktion Informationsteknologi Tom Smedsaas, Malin Källén 20 mars 2016 Rekursion och induktion för algoritmkonstruktion Att lösa ett problem rekursivt innebär att man uttrycker lösningen i termer av samma typ av

Läs mer

Grunder. Grafiktyper. Vektorgrafik

Grunder. Grafiktyper. Vektorgrafik 2 Grunder All vår början bliver svår eller hur det nu brukar heta, och detta är något som gäller även Flash. För den som är ovan vid Flash gäller det säkert extra mycket, då det kan vara knepigt att förstå

Läs mer

Fonologi. Kommutationstest. Minimala par. Hur bestämmer man vilka fonem ett språk har?

Fonologi. Kommutationstest. Minimala par. Hur bestämmer man vilka fonem ett språk har? Hur bestämmer man vilka fonem ett språk har? Fonologi Mattias Heldner KTH Tal, musik och hörsel heldner@kth.se (Morfem = minsta betydelsebärande enhet i ett språk) Fonem = minsta betydelseskiljande ljudenhet

Läs mer

Logging Module into the PRIME Core

Logging Module into the PRIME Core Datavetenskap Opponent: Andreas Lavén Respondenter: Anders Ellvin, Tobias Pulls Implementing a Privacy-Friendly Secure Logging Module into the PRIME Core Oppositionsrapport, E-nivå 2005:xx 1 Sammanfattat

Läs mer

Din lärare kan se om och när du har utfört ditt uppdrag. Då får du ett nytt.

Din lärare kan se om och när du har utfört ditt uppdrag. Då får du ett nytt. till eleven Uppdrag I Textbanken jobbar du med uppdrag. Det är din lärare eller den som skrivit in dig som användare som avgör vilka uppdrag du ska utföra. Ett uppdrag består av en eller flera övningar.

Läs mer

Tentamen i Introduktion till programmering

Tentamen i Introduktion till programmering Tentamen i Introduktion till programmering Kurskod: Skrivtid: D0009E 09:00-13:00 (4 timmar) Totalt antal uppgifter: 7 Totalt antal poäng: 38 Tentamensdatum: 2014-05-17 Jourhavande lärare: Tillåtna hjälpmedel:

Läs mer

Morfologi och automatisk morfologisk analys och generering. Varför är morfologi viktigt? Vad är ett ord (idag vs. i dag)

Morfologi och automatisk morfologisk analys och generering. Varför är morfologi viktigt? Vad är ett ord (idag vs. i dag) Morfologi och automatisk morfologisk analys och generering Språkteknologi DH2418 Ola Knutsson 2009 Varför är morfologi viktigt? Ord är grunden i alla världens språk Alla språkteknologiska aktiviteter kräver

Läs mer

FOR BETTER UNDERSTANDING. Snabbguide. www.wordfinder.se

FOR BETTER UNDERSTANDING. Snabbguide. www.wordfinder.se FOR BETTER UNDERSTANDING Snabbguide www.wordfinder.se Tekniska förutsättningar WordFinder 10 Professional för Mac kräver följande: Processor: Intel Mac OS X 10.5 eller senare. Installation Installation

Läs mer

Ordklasser. Substantiv är benämningar på människor, djur, växter och föremål. Du kan sätta en, ett eller flera framför substantiv.

Ordklasser. Substantiv är benämningar på människor, djur, växter och föremål. Du kan sätta en, ett eller flera framför substantiv. Ordklasser Substantiv Substantiv är benämningar på människor, djur, växter och föremål. Du kan sätta en, ett eller flera framför substantiv. Konkreta och abstrakta substantiv Konkreta substantiv kallas

Läs mer

- Kan skriva grundläggande information utifrån sig själv t.ex. personnummer, adress, telefonnummer etc.

- Kan skriva grundläggande information utifrån sig själv t.ex. personnummer, adress, telefonnummer etc. Matris och checklista för språkprogression IMSPR1 (jobbar mot nivå A1-/A1) - Kan skriva grundläggande information utifrån sig själv t.ex. personnummer, adress, telefonnummer etc. - Kan skriva en enkel

Läs mer

BINÄRA TRÄD. (X = pekarvärdet NULL): struct int_bt_node *pivot, *ny; X X X 12 X X 12 X X -3 X X

BINÄRA TRÄD. (X = pekarvärdet NULL): struct int_bt_node *pivot, *ny; X X X 12 X X 12 X X -3 X X Algoritmer och Datastrukturer Kary FRÄMLING/Göran PULKKIS (v23) Kap. 7, Sid 1 BINÄRA TRÄD Träd används för att representera olika slags hierarkier som ordnats på något sätt. Den mest använda trädstrukturen

Läs mer

Vad säger WCAG om kognition?

Vad säger WCAG om kognition? Vad säger WCAG om kognition? Stefan Johansson och Anita Hildén stefan.johansson@funkanu.se leknyttan@gmail.com Så här säger W3C-konsortiet: Web Content Accessibility Guidelines (WCAG) 2.0 innehåller ett

Läs mer

Uppgift 1 ( Betyg 3 uppgift )

Uppgift 1 ( Betyg 3 uppgift ) Uppgift 1 ( Betyg 3 uppgift ) Skriv ett program, Draw_Hexagones, som ritar ut en bikupa enligt körexemplen nedan. Exempel 1: Mata in storlek på bikupan: 1 + / \ + + + + \ / + Exempel 3: Mata in storlek

Läs mer

Innehåll. Föreläsning 12. Binärt sökträd. Binära sökträd. Flervägs sökträd. Balanserade binära sökträd. Sökträd Sökning. Sökning och Sökträd

Innehåll. Föreläsning 12. Binärt sökträd. Binära sökträd. Flervägs sökträd. Balanserade binära sökträd. Sökträd Sökning. Sökning och Sökträd Innehåll Föreläsning 12 Sökträd Sökning Sökning och Sökträd 383 384 Binärt sökträd Används för sökning i linjära samlingar av dataobjekt, specifikt för att konstruera tabeller och lexikon. Organisation:

Läs mer

Arduinokurs. Kurstillfälle 4

Arduinokurs. Kurstillfälle 4 Kurstillfälle 4 CW-generering Det här kan ses som överkurs men kan ändå vara roligt för att kunna generera CW på ett enkelt sätt. Det blir en hel del nytt men vi tar det steg för steg Som alla vet gäller

Läs mer

Persiska. Albin Finne. Mark Peldius. 2002-10-10 2D1418 Språkteknologi

Persiska. Albin Finne. Mark Peldius. 2002-10-10 2D1418 Språkteknologi Persiska Albin Finne 2002-10-10 Sammanfattning Den här uppsatsen beskriver det persiska språket. Språkets historia, morfologi, syntax och ordförråd behandlas. Tonvikten läggs på morfologi och syntax. Avslutningsvis

Läs mer

Karp. https://spraakbanken.gu.se/karp Övningar Språkbankens höstworkshop oktober 2016

Karp. https://spraakbanken.gu.se/karp Övningar Språkbankens höstworkshop oktober 2016 Karp Övningar Språkbankens höstworkshop 2016 https://spraakbanken.gu.se/karp sb-karp@svenska.gu.se 17 oktober 2016 ÖVERSIKT När du går in på https://spraakbanken.gu.se/karp kan du välja att söka i ett

Läs mer

Ordklasser och satsdelar

Ordklasser och satsdelar Ordklasser och satsdelar Vi kommer under de kommande fyra veckorna att arbeta med ordklasser och satsdelar. Under det här arbetsområdet kommer du att få öva på följande förmågor: formulera sig och kommunicera

Läs mer

Läslandet 2 Ord och meningar

Läslandet 2 Ord och meningar Läslandet 2 Ord och meningar Av LäraMera Program AB och Leripa AB Grafik Musik Röst Kristina Grundström Erik truedsson Gerda Nilsson 1 Innehållsförteckning LÄSLANDET 2 ORD OCH MENINGAR 3 Styrsätt 4 Menyn

Läs mer

Objektorienterad programmering D2

Objektorienterad programmering D2 Objektorienterad programmering D2 Laboration nr 2. Syfte Att få förståelse för de grundläggande objektorienterade begreppen. Redovisning Källkoden för uppgifterna skall skickas in via Fire. För senaste

Läs mer

IMPORTERA POSTER TILL DIVA Anvisning för export av poster från andra databassystem för import till DiVA

IMPORTERA POSTER TILL DIVA Anvisning för export av poster från andra databassystem för import till DiVA IMPORTERA POSTER TILL DIVA Anvisning för export av poster från andra databassystem för import till DiVA Universitetsbiblioteket Senast ändrad: 2016-12-12 2 Innehållsförteckning Linköpings universitetsbibliotek

Läs mer

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 2

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 2 Institutionen för Data- och informationsteknik JSk TENTAMEN OBJEKTORIENTERAD PROGRAMVARUUTVECKLING Övningstentamen 2 TID: 4 timmar Ansvarig: Betygsgränser: Hjälpmedel: Jan Skansholm Sammanlagt maximalt

Läs mer