- Lärare: Markus Saers
- Examinator: Mats Dahllöf
Tecken-n-gram
I den här labben ska ni implementera ett gränssnitt som kan användas för att representera tecken-n-gram.
Du ska också skriva ditt program så att det passar in i ett större sammanhang. Det större sammanhanget är att vi behöver räkna frekvenser på just tecken-n-gram, och du ingår i en programmerargrupp. Tillsammans har ni kommit överens om gränssnittet NGram, som beskriver vad något som kan kallas ett n-gram ska kunna göra. Dina kollegor har redan färdigställt klasser för att sortera och räkna frekvenser på objekt av den här typen, och allt som återstår är att en klass för tecken-n-gram ska färdigställas och att hela systemet ska testas.
Det här här du kommer in i bilden.
Uppgift
Skriv en klass som implementerar NGram och representerar ett tecken-trigram.
Ett bra namn kan vara CharTriGram.
Skriv en klass som läser in en text ord för ord och plockar sönder varje ord i trigram. Dessa trigram ska sedan observeras med hjälp av en NGramFrequencies (som håller reda på hur många gånger varje n-gram observerats). När alla ord behandlats ska innehållet i frekvenslistan skrivas ut. Använd NGramFrequencies.keySet()-metoden för att ta ut alla observerade n-gram och skriva ut dem tillsammans med sin frekvens.
För att göra ordgränserna synliga i n-grammen ska mellanslagstecken läggas före och efter
varje ord, så att ordet "en" ska behandlas som om det stod "__en__"
(där _ används för att representera mellanslag).
Det betyder också att n-grammen ur ordet "en" kommer att se ut så här:
"__e""_en""en_""n__"
På det här sättet kan man få fram information om hur ofta t.ex. "i" förekommer som eget ord!
Ett tips för att få det här att fungera är att börja varje ord med ett trigram bestående av tre mellanslag, därefter skapa ett nytt trigram baserat på föregående trigram och nästa tecken i ordet, när ordet tagit slut behöver du skapa två trigram till som om ordet hade två mellanslag efter sig. Alla trigram utom det första (som representerade tre mellanslag) ska observeras av frekvenslistan.
visa testkörning
VG
För betyget VG krävs att du generaliserar uppgiften till godtyckliga n-gram.
I det här fallet finns två möjligheter, antingen lagras n-grammet som en array av tecken,
eller så lagras n-grammet som en String.
Du ska implmentera båda.
Ditt testprogram ska också innehålla en mekanism för att kommunicera med programmet från
kommandoprompten, liknande den i inlämningsuppgift 3. Dvs, både värdet på n,
och ett valfritt filnamn ska kunna skrivas in på kommandoraden och tolkas av programmet.
Resurser
De färdigställda delarna finns i katalogen shared/inlupp4, och dokumentationen
finns här [html].
Inlämning
Inlämning sker genom att välkommenterad Javakod checkas in i repositoriet.
Alla publika metoder och variabler ska vara kommenterade med Javadoc, och taggarna @param och @return ska användas på alla ställen de är tillämpbara.
Din lösning ska vara incheckad i SVN senast onsdag 2010-06-09 23.59.
