UPPSALA UNIVERSITET  
Inst. f. lingvistik och filologi Lärare: Mats Dahllöf (kursansvarig) och Markus Saers.
Uppsala universitet
Hoppa över länkar

kurssida



Programmering för språkteknologer. VT 2008.

Annat material

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:

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:

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

GVG (utöver kraven för G)
  • Hierarkidiagram.
  • Analys av alla klasserna utom *Factory och NGramReader.
  • Snyggare utskrift.
  • Analys av klasserna *Factory och NGramReader.
  • Förklara varför Factory-klasserna behövs.