Programmering för språkteknologer. VT 2008.
Annat material
- Bildspel från 080408 [pdf]
- Bildspel från 080410 [pdf]
- Bildspel från 080415 [pdf]
- Ekoexemplen från 080415 [index]
- Sista inlämningsdag för inlämningsuppgiften är satt till 080430
- Bildspel från 080417 (Exempel på tentafrågor) [pdf]
Laboration 2
Om du stöter på något som är oklart vore jag tacksam om du kontaktade mig så fort som möjligt så att jag kan förklara vad som menas, och rätta till instruktionerna så att andra inte behöver undra.
Klasser och objekt: Tidsangivelse
Följande filer finns för detta moment:
Tidsangivelse.java
TestaTidsangivelse.java
Du hittar dem här.
I filen Tidsangivelse.java är en del av funktionaliteten
borttagen, och det är din uppgift att återuppbygga den. Till varje borttaget
moment finns kommentarer som beskriver vad det är som saknas.
Klassen TestaTidsangivelse kan användas för att testa din version
av Tidangivelse fungerar. Så här testar du:
javac TestaTidsangivelse.java
java TestaTidsangivelse
När Java kompiekerar TestaTidsangivelse.java kommer den att upptäcka att
detta program är beroende av klassen Tidsangivelse, och försöka
kompilera den också. Det betyder att alla eventuella fel i Tidsangivelse
kommer att uppdagas när TestaTidsangivelse kompileras.
När kompileringen lyckats och du kan köra testprogrammet kommer det i sin tur att
kontrollera att Tidsangivelse fungerar som förväntat. Programmet
utför ett antal tester, och kontrollerar resultatet. Det gör också utskrifter som
kan vara till hjälp för att få Tidsangivelse att fungera korrekt.
Den här övningen behöver inte lämnas in!
Klasser och objekt: Former
Följande filer finns för detta moment:
Former.java
ObjektFormer.java
Form.java
Rektangel.java
Kvadrat.java
Cirkel.java
Du hittar dem här.
I klassen Form finns en metod som heter omkrets. För värvarande
ger den alltid värdet noll. Uppgiften går ut på att göra följande ändringar:
-
Gör om metoden
Form.omkretsså att den är abstrakt. Detta får som följd att du måste definiera metodernaRektangel.omkrets,Kvadrat.omkretsochCirkel.omkrets. Gör det! (Omkretsen på en rektangel är (2 x höjden) + (2 x bredden), för en kvadrat 4 x sidan och för en cirkel 2 x radien x π.) -
I utskrifterna i
ObjektFormer: lägg till omkretsen, så att den skrivs ut och du kan kontrollera att föregående steg blev rätt. -
Lägg till klassen
Triangelsom också bygger påForm. En triangel deinieras utifrån sin höjd och sin bas. Ytan beräknas som basen x höjden / 2, och omkretsen är höjden + bredden + hypotenusan (som i sin tur beräknas som kvadratroten ur höjden upphöjt till två plus basen upphöjd till två). Titta i dokumentationen avjava.lang.Mathför att få till formlerna rätt. -
Skapa en
TriangeliObjektFormeroch gör en liknande utskrift som för de tidigare formerna.
Den här övningen behöver inte lämnas in
Parametriserade klasser och objekt: n-gram
Detta är den uppgift som ska lösas och redovisas som en del av betygssättningen.
Sista inlämningsdag är 30 april. Om du vet med dig att du inte kommer att hinna vore jag tacksam om du hörde av dig till mig med en ett nytt datum som är mer realistiskt. Alla som inte lämnat in eller avtalat om ny (individuell) inlämningstid efter 30 april kommer att få sin inlämning rättad, men jag kan inte garantera att det sker inom två veckor.
Följande filer finns för detta moment:
NGram.java
NGramReader.java
Token.java
TokenFactory.java
OrtografisktToken.java
OrtografisktTokenFactory.java
TaggatToken.java
TaggatTokenFactory.java
TestNGram.java
suc1.txt
Du hittar dem här.
Inom datorligvistik är n-gram en ganska viktig del nuförtiden, speciellt för statistiska metoder. Ovanstående filer representera just ett n-gram-paket. Man kan dela in klasserna enligt följande:
-
De som innehåller ”
Token” gäller olika sorters ordförekomster, och vilken sorts information de förmedlar. De som innehåller ”Ortografiskt” behandlar bara själva ordformen, medan de med ”Taggat” i namnet behandlar ordklasstaggade ordformer. De klasser som innehåller ”Factory” behövs för att kunna instantiera godtyckliga tokens senare. -
Klasserna
NGramochNGramReaderanvänds för att representera respektive läsa in n-gram av godtycklig aritet (1-gram, 2-gram, 3-gram, ...) -
Klassen
TestNGramkan användas för att läsa in text som n-gram och sedan skriva ut dem från kommandoprompten. -
Filen
suc1.txtinnehåller ett par meningar från SUC-korpusen, som är formaterad på så sätt attNGramReaderkan hantera den. Bra för testning.
Du ska också rita ett hierarkidiagram över hur klasserna är relaterade till varandra. Detta kan redovisas muntligt på white-board under ett labbtillfälle, eller skriftligt.
Du ska analysera programmet och skriva informativa kommentarer som visar att du förstått vad som händer och varför. Gör gärna en egen kopia av programmet för att experimentera med, men kommentarerna ska skrivas in i originalkoden. Du kan antingen redovisa muntligt under något av de labbtillfällen då jag (Markus) är med, eller lämna in utskrifter av den kommenterade koden till mig.
För godkännt ska detta göras för alla .java-filer utom de som matchar *Factory.java
samt NGramReader.java. För väl godkännt ska detta göras för alla filer, samt att nyttan och
nödvändigheten med Factory-klasserna förklaras.
Du ska också ge ett förslag på vilka ändringar som är lämpliga att göra för att få en mer attraktiv utskrift. En bätter utskrift kan till exempel vara:
ord1 ord2
ord2 ord3
ord3 ord4
respektive
ord1+pos1 ord2+pos2
ord2+pos2 ord3+pos3
ord3+pos3 ord4+pos4
eller något annat som du känner att du kan argumentera för. Detta redovisas genom att du antingen gör en implementation och visar mig, eller beskriver vilka ändringar som behöver göras var och lämnar in skriftligt.
Om du fortfarande vill ha något att bita i kan du ge dig på att introducera ett tomt tecken. Dessa anses finnas i ett nödvändigt antal före och efter varje mening (i texten markeras meningsbyte med en tom rad). Med meningen:
ord1 ord2 ord3 ord4
ska alltså följande 3-gram bildas:
tom tom ord1
tom ord1 ord2
ord1 ord2 ord3
ord2 ord3 ord4
ord3 ord4 tom
ord4 tom tom
Sammanfattning
| G | VG (utöver kraven för G) |
|---|---|
|
|
