addFile($fileName)
addNgram($ngram)
computeProbs($delete)
computeCounts()
computeExpectedCounts($ngram)
emSmooth($fileName)
getLambdas()
= @lambdassetLambdas($lambdas)
filter($filter)
dumpCounts()
getPointwiseMutualInformation($tm)
getAllNGrams($n)
= @ngramsstoreLambdas($file)
loadLambdas($file)
getCrossEntropy($file)
getCoverage($file)
Pri vytvoreni trigramoveho modelu a vstupu A B C A B C A B D dojde k temto udalostem:
Add NGram: _BEG_ _BEG_ A Add NGram: _BEG_ A B Add NGram: A B C Add NGram: B C A Add NGram: C A B Add NGram: A B C Add NGram: B C A Add NGram: C A B Add NGram: A B D Add NGram: B D _END_ Add NGram: D _END_ _END_
- trigramy: 11 - bigramy: 11 (melo by byt 10) - unigramy: 11 (melo by byt 9) - velikost slovniku: 5 (nepocita se _END_) =head3 Informace
Implementace tohoto modulu neni robustni. Pokud jsou zadany parametry mimo rozsah, tak muze byt vysledek cokoliv.
Vytvori $n-gramovy jazykovy model ze souboru @files. Pokud je $utf platne, tak se ocekava vstup v UTF-8. Jinak se ocekava v nejakem 1 bytovem kodovani.
addFile($fileName)
Prida soubor $fileName do modelu. Po jeho pridani je nutne manualne prepocitat pocty a pravdepodobnosti.
addNgram($ngram)
Prida do modelu $ngram.
Tato funkce by se nemela externe volat.
computeProbs($delete)
Spocita pravdedpodobnosti n-gramu. Pokud je $delete pravdive, tak po spocitani pravdepodobnosti smaze pocty n-gramu.
computeCounts()
Spocita pocty n-gramu.
Vrati pocet vyskytu ngramu $ngram. Pokud je $n specifikovano, tak se pouzije jen prvnich $n casti.
getCount(['A', 'B'], 1) == getCount([A'])
Pokud je $n rovno 0, tak vrati celkovy pocet ngramu.
Vrati pravdepodobnost ngramu $ngram. Pokud je specifikovano, tak se pouzije jen prvnich $n casti.
getProb(['A', 'B'], 1) == getProb(['B'])
Pokud je $n rovno 0, tak vrati pravdepodobnost 1 / velikost slovniku.
Vrati podminenou pravdepodobnost ngramu $ngram. Pokud je specifikovano, tak se pouzije jen prvnich $n casti.
getCondProb(['A', 'B', 'C'], 3) = p(C | A B) == getCoount(['A', 'B', 'C']) / getCoount(['A', 'B'])
getCondProb(['A', 'B', 'C'], 2) = p(C | B) == getCondProb(['B', 'C'])
getCondProb(['A', 'B', 'C'], 1) = p(C) == getCondProb(['C']) = getProb(['C'])
Pokud je $n rovno 0, tak vrati pravdepodobnost 1 / velikost slovniku.
Pokud n-gram neexistuje, tak vysledek je 0, pokud n-1 gram existuje, pokud n-1 gram neexistuje, tak je vraceno 1 / velikost slovniku
Vrati podminenou pravdepodobnost ngramu $ngram upravenou o spocitane lambdy. Pokud je specifikovano, tak se pouzije jen prvnich $n casti.
getSmoothedProb($ngram, $n) = lambda($n)
* getCondProb($ngram, $n) + lambda($n-1)
* getCondProb($ngram, $n-1) + ... + lambda(0)
* getCondProb($ngram, 0)
computeExpectedCounts($ngram)
Pocita expected counts pro n-gram $ngram - vnitrni smycka EM Smooth algoritmu.
emSmooth($fileName)
Spocita lambdy na heldout souboru $fileName.
getLambdas()
= @lambdasVrati spocitane lambdy.
setLambdas($lambdas)
Nastavi lambdy na hodnotu $lambdas.
filter($filter)
Vyradi z modelu data, pro ktere $filter vrati false.
dumpCounts()
Vypise pocty jednotlivych ngramu.
getPointwiseMutualInformation($tm)
Spocita pointwise mutual information pro ngram $tm.
getAllNGrams($n)
= @ngramsVrati vsechny $n-gramy.
storeLambdas($file)
Ulozi spocitane lambdy do souboru $file.
loadLambdas($file)
Nacte lambdy ze souboru $file.
getCrossEntropy($file)
Spocita krizovou entropii pro soubor $file.
getCoverage($file)
Spocita kolik procent ngramu ze souboru $file bylo jiz spatreno pri trenovani modelu.