`
Markov-Wort-Generator ist eine Python-Bibliothek zur Generierung von zufälligen, glaubwürdigen und plausiblen Wörtern, die auf einer Liste von Wörtern basieren. Es schätzt die Wahrscheinlichkeit des nächsten Zeichens in einem Wort basierend auf der Häufigkeit der vorherigen N -Zeichen unter Verwendung von Markov -Ketten. Dies verwendet Markov -Ketten
pip install markov-word-generator
Um zufällige Wörter zu erzeugen, die nach echten Wörtern klingen, analysiert diese Bibliothek die Zeichenverteilung unter einem Korpus in einer bestimmten Sprache. Es erstellt eine Zuordnungstabelle für Zeichenkombinationen und ihre zugehörige Frequenz im Korpus. Durch die Schätzung der Wahrscheinlichkeit eines Zeichens basierend auf den vorherigen Zeichen generiert die Bibliothek Wörter, die reale Sprachmuster nachahmen.
Hier sind Wärmemaps, die die Verteilung jedes Zeichens (Spalte) zeigen, die im vorherigen (Zeile) angegeben sind.
$
= Ende des Wortes^
= Start eines WortesAuf Englisch:
Und in Französisch:
Die Schätzung der Wahrscheinlichkeit eines Charakters, angesichts der Wahrscheinlichkeit der gegebenen vorherigen Funktionen zu erscheinen, funktioniert jedoch immer noch gefährlich. Wir können die Wahrscheinlichkeit der Welt erhöhen, wenn wir uns die nächsten n früheren Charaktere ansehen.
Der Generator analysiert eine Eingabetextdatei, die ein Wort pro Zeile (Wörterbuch) enthält, jedes Zeichen des Zeichens basierend auf dem Auftreten der N-vorherigen N erstellen eine Mapping-Tabelle für jede Zeichenkombination und ihre zugehörige Frequenz im Korpus.
Um ein zufälliges Wort in Englisch zu generieren, indem die Wahrscheinlichkeit jedes neuen Zeichens auf der Grundlage der letzten 4 Zeichen vorhersagt, können Sie den folgenden Code verwenden:
from markov_word_generator import MarkovWordGenerator , WordType
# Generate a random word in English by predicting the probability of each new character based on its last 4 last characters
generator = MarkovWordGenerator (
markov_length = 4 ,
language = 'en' ,
word_type = WordType . WORD ,
)
print ( generator . generate_word ())
Ausgabe:
rebutaneously
MarkovWordGenerator ():
markov_length
: (int): Die Anzahl der zu berücksichtigenden vorherigen Zeichen.language
: (STR): Die Sprache, die für die Wortgenerierung verwendet werden muss. Muss Teil der unterstützten Sprachen sein .word_type
: (STR): Die Art des Wortes zu generieren. Muss Teil der unterstützten Worttypen sein .dictionary_filename
: (STR): Der Korpus, der für die Charakterfrequenzanalyse analysiert wird. Muss nur verwendet werden, wenn language
und word_type
nicht festgelegt werden .ignore_accents
: (bool): Wenn auf True gesetzt, werden Akzente während des Parsens ignoriert. Standard zu falschgenerate_word ()
from markov_word_generator import MarkovWordGenerator , WordType , AllowedLanguages
# Generate a random German name by predicting the probability of each new character based on its last 3 last characters
generator = MarkovWordGenerator (
markov_length = 3 ,
language = AllowedLanguages . DE ,
word_type = WordType . NAME ,
)
print ( generator . generate_word ())
ludgerten
Sie können auf die Liste der unterstützten Sprachen und Worttypen zugreifen, indem Sie die folgenden Funktionen unterscheiden:
import markov_word_generator
# List supported languages
print ( markov_word_generator . get_supported_languages ())
# ['EN', 'FR', 'DE', 'FI', 'IT', 'PT', 'SE']
# List supported word_type
print ( markov_word_generator . get_supported_word_types ())
# ['WORD', 'NAME']
Weitere Sprachen und Worttypen (Pflanzen, Filmnamen, Städte ...) können in Zukunft hinzugefügt werden.
from markov_word_generator import MarkovWordGenerator , WordType , AllowedLanguages
generator = MarkovWordGenerator (
markov_length = N , # N=1,2,3,4 or 5 in following examples
language = AllowedLanguages . EN ,
word_type = WordType . WORD
)
for i in range ( 0 , 10 ):
print ( generator . generate_word ())
Ausgabe:
eroun
unteticakreatintes
sucle
erarums
eablatirlac
e
ghils
rllig
beseleforuat
de
Ausgabe:
malle
dallintathilight
boaddly
nobtiousle
ing
alaymplaings
rusle
sprevircirdbages
bant
ritablegruphicalls
Ausgabe:
blungalinther
super
solder
degreetricked
mittlessly
out
hearf
fracertory
gyny
locious
Ausgabe:
authering
negligented
manoeistical
bleat
lover
confusions
dest
hand
display
entwinkle
Ausgabe:
significative
contention
grandmaidens
aidesdecamped
paralleled
contradicate
thereby
numskull
crises
battlegro
Erzeugen Sie empirisch 5000 zufällige Wörter für jeden der Tests und überprüfen Sie den Prozentsatz, der als tatsächliche gültige Wörter existiert. 10 Tests wurden durchgeführt. Von n = 1 bis n = 5 in englischen und französischen Sprachen sind die folgenden Ergebnisse
N Sprache | En | Fr* |
---|---|---|
1 | 4,61% | 6,15% |
2 | 8,89% | 10,60% |
3 | 14,80% | 10,04% |
4 | 33,08% | 33,88% |
5 | 62,84% | 65,68% |
Empirische Messungen des Prozentsatzes der Ausgangswörter des Generators, die reale Wörter sind (im Wörterbuch vorhanden), basierend auf der Anzahl der Zeichen n Wir berücksichtigen in der Markov_Chain über 5000 Proben * Akzente wurden in Benchmarks auf Französisch ignoriert
Aus n = 5 gibt es mehr als 50% der Chancen, ein vorhandenes Wort zu generieren.
En | Fr | Es | De | ES | Se |
---|---|---|---|---|---|
Duplikables | Chouchonnées | Inflamando | Regenfreunden | seltsam | Medmännens |
Federnismus | Humangelungen | Diacontenderá | Wiederholungen | Insortiti | Metallösens |
Faltverteiler | Saponisassiez | Transnacionarán | Unerschieben | Immalintenziale | STATIONSKLIGT |
JingleHand | Pareraient | Fülle | ungehemmt | Pronometro | Arbetslöftenas |
Sternenheit | Toniciens | EncUestionó | überredete | Acconciliani | UTREDNINGSVILJANDE |
rellisch | Challe | Abbearán | Zwischere | Afferrofilie | Tributionsverktygs |
Subsidiarieste | Posames | Banderolasteis | Plädiertem | Dispiaser | Slappingarnas |
sich selbst entmutigen | Rudoyers | Construéis | Wolken | Trieccherai | Tidsnärings |
Melanchorist | Lastnés | Desagüense | Kompetentenzeichnen | RIAPPAVIA | Spagatellig |
Spalt | SACAGNEUS | Desvergonzaremos | Dämst | Sgancializzando | ynchtstakternas |
En | Fr | Es | De | ES | Se |
---|---|---|---|---|---|
Charlena | Arian | Sandro | Deutsch | Severonica | Brittan |
Sorrell | Clementin | Uliseo | Gunde | Evarissa | Kristin |
Austinee | Théophie | Teofilomen | Werthold | Florena | Frid |
Hardine | Augustinus | Herina | Hannelia | Tizia | Torstein |
Shantal | Jeanninette | Amilo | Helmar | Leonardinanda | Gitta |
Kristian | Flavier | Leandra | Tatja | Glück | Kerstina |
Lessica | Isidonie | Dolorencio | Sieghardt | Simondo | Sigfrida |
Reana | Kleidungsstück | Dion | Anelia | Geltrüdenzio | Thorsten |
Leanoreen | Fabriel | Anuncia | Trud | Battie | Gunils |
Roslyn | Bastienne | Calis | Eleonhard | Lorentina | Ruckel |
Angesichts anderer Arten von Wörterbüchern kann Generator in bestimmten Themen zufällige Wörter erstellen: zufällige Jobs, zufällige Pflanzen, zufällige Tiere, zufällige Städte ...