Nejčastěji jsou generátory náhodného textu založeny na jazykových modelech pracujících s posloupnostmi
slov, tzv. n-gramy (většinou trojice či čtveřice slov). Tento
generátor je založený na posloupnostech (n-gramech) znaků. Pro libovolný řetězec (např. "ásl") si model pamatuje
pravděpodobnosti výskytů znaků následujících za těmito znaky (v tomto případě "e", "o", "i" atd.).
Délka těchto n-gramů není omezena počtem znaků, ale četností výskytu daného řetězce, takže je teoreticky neomezená.
Zatímto běžné generátory jsou omezeny na kontext 2–3 slov, tento generátor
generuje plynulejší věty, protože si často pamatuje kontexty výrazně delší.
|
Usually, random text generators are based on language models using word sequences, so called n-grams (triples or quadruples).
This generator is based on sequences of bytes. For any sequence of bytes in the input text
the model knows what is the most probable following byte.
The length of the sequences is not limited by a fixed number (like in the n-grams) but by frequency of the sequence.
This allows to keep track of (sometimes) wider context (history) of the byte sequences.
|
Nedávno jsem implementoval další vylepšení: model si nepamatuje posloupnosti
znaků, nýbrž posloupnosti bytů v datech, takže může pracovat se vstupem v
Unicode (například utf-8). Generátor pak generuje náhodnou posloupnost bytů,
které však v drtivé většině případů tvoří validní bytový řetězec v daném
kódování. Lze tak zpracovávat modely v libovolném jazyce (a používající
libovolné písmo). Viz například gruzínský model vytvořený z
gruzínské Wikipedie. |
The model can learn from any text data, but it is reasonable to use UTF-8 encoding.
It can work with any language, see e.g. Georgian model
built from Goergian Wikipedia. |
Když budete chvilku zkoušet generovat náhodné věty (stačí mačkat klávesu F5),
docela pravděpodobně vygenerujete přirozeně vypadající českou větu a s trochou
štěstí bude i vtipná – to je dáno tím, že se k sobě ve větě dostanou
fráze a slovní spojení, která se spolu obvykle nevyskytují. |
Try to play with the generator for a while (just press F5 to get a random text)
and if you are lucky, the generator will generate a fluent text, sometimes even funny.
|
Více informací najdete v článku |
For more info see paper |
Baisa, Vít. "Character-based Language Model." RASLAN 2014 Recent Advances in Slavonic Natural Language Processing (2014): 3. |