Opdracht 8

Maak je eigen taalmodel
Ngramcount Perl Script (3.733 Kb)
Bereken de kans op een zin (13.933 Kb)
In deze opgave bereken je de kans op een zin met een markov model als taalmodel.

Gebruik het Ngramcount.pl perl script om uni- en bigram (dwz., n=1 en n=2) woordtellingen op lange teksten uit te voeren.

Zoek op de web-site van het Gutenberg Project (zie links) een paar platte teksten. Liefst van één auteur. Je mag zelf een taal uitkiezen. Hoe meer tekst, hoe beter! Voor een echt taalmodel zijn honderden miljoenen woorden nodig.

Op een Linux/Unix computer, of een MS Windows computer met perl geïnstalleerd geeft u de volgende commandos:

perl Ngramcount.pl 1 <filename1> <filename2> ... > unigramtable.txt

en

perl Ngramcount.pl 2 <filename1> <filename2> ... > bigramtable.txt

In de files unigramtable.txt en bigramtable.txt staan nu woordtellingen. Bekijk deze tabellen en beschrijf de opbouw. Geef de meest voorkomende woorden en woordparen. Hoe werkt dit script eigenlijk. Als je '--help' op de commandoregel geeft, krijg je een korte help boodschap voor het programma.

Met deze tabellen kan nu de kans op een zin berekend worden. Daarvoor gebruikt u het script ngramprobability.pl (zie link "Bereken de kans op een zin"):

perl ngramprobability.pl --count 5 --verbose bigramtable.txt "<je zin>"

De logaritmische kans wordt dan gegeven (-Log2(kans)). Probeer eerst een zin die echt voorkomt in de teksten waarmee de tabel opgebouwd is. Daarna zinnen die je zelf verzint of uit een andere tekst haalt. Probeer het met de optie "--count 5" en de optie "--count -1". Hiermee manipuleer je het nivo van "smoothing". Zonder smoothing ("--count -1") kun je alleen bigrammen opgeven die in de tabel voorkomen. De optie '--verbose' zorgt dat de afzonderlijke kansen van de gebruikte componenten uit de tabel afgedrukt worden.

Geef een paar voorbeelden. Beschrijf met een voorbeeldzin en de getallen uit de tabel hoe de kansen berekend worden.

Je mag rustig de scripts bekijken. Als je '--help' op de commandoregel geeft, krijg je een korte help boodschap voor het programma.

Beschrijf in het kort wat je gedaan hebt en wat de resultaten waren. Geef een korte uitleg over hoe de scripts werken (voor zover dat binnen deze opdracht valt).

Let op!
ngramprobability.pl kan meer uitrekenen dan voor deze opdracht nodig is (zgn, backoff, Katz smoothing). Hierover hoef je niets te vertellen.
Project Gutenberg
Haal hier enkele teksten van. Het liefst een serie boeken in platte (ASCII) tekst. Hoe meer hoe beter.