`
Markov-Word-generator是一個Python庫,用於基於單詞列表生成隨機,可信和合理的單詞。它使用馬爾可夫鏈,根據以前的n個字符的頻率來估算單詞中下一個字符的概率。這使用了馬爾可夫連鎖店
pip install markov-word-generator
為了生成聽起來像真實單詞的隨機單詞,此庫在給定語言中分析了語料庫之間的字符分佈。它為角色組合及其在語料庫中的相關頻率創建映射表。通過根據以前的字符估算字符的概率,該庫會生成模仿真實語言模式的單詞。
這是給定上一個(行)的熱圖(列)的分佈(列)。
$
=詞的結尾^
=單詞的開始用英語講:
和法語:
鑑於給定上一個的概率效果很好,但仍然是危險的,估計字符的概率出現。通過查看下一個n個角色,我們可以增加世界的可能性。
發電機將根據每行(字典)中包含一個單詞(字典)的輸入文本文件,根據n個以前的n個出現來計數每個字符的出現,為每個字符組合創建一個映射表及其在語料庫中的相關頻率。
要通過基於最近4個字符來預測每個新字符的概率來生成一個隨機單詞,您可以使用以下代碼:
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 ())
輸出:
rebutaneously
MarkovWordGenerator():
markov_length
:(int):以前要考慮的字符數。language
:(str):用於單詞生成的語言。必須是支持語言的一部分。word_type
:( str):要生成的單詞類型。必須是受支持的單詞類型的一部分。dictionary_filename
:( str):分析字符頻率分析的語料庫。僅在未設置language
和word_type
時才使用。ignore_accents
:( bool):如果設置為True ,則在解析過程中會忽略重音。默認為falsegenerate_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
您可以使用以下功能訪問支持的語言和單詞類型的列表:
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']
將來可以添加更多語言和單詞類型(植物,電影名稱,城市...)。
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 ())
輸出:
eroun
unteticakreatintes
sucle
erarums
eablatirlac
e
ghils
rllig
beseleforuat
de
輸出:
malle
dallintathilight
boaddly
nobtiousle
ing
alaymplaings
rusle
sprevircirdbages
bant
ritablegruphicalls
輸出:
blungalinther
super
solder
degreetricked
mittlessly
out
hearf
fracertory
gyny
locious
輸出:
authering
negligented
manoeistical
bleat
lover
confusions
dest
hand
display
entwinkle
輸出:
significative
contention
grandmaidens
aidesdecamped
paralleled
contradicate
thereby
numskull
crises
battlegro
經驗從每個測試中生成5000個隨機單詞,並檢查確實存在的實際有效單詞的百分比。 10個測試正在進行。英語和法語語言的結果從n = 1到n = 5
n 語言 | 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% |
基於字符的數量,我們在Markov_Chain中考慮了5000多個樣本的字符數量,從發電機中的輸出單詞百分比(字典中存在)的經驗測量
從n = 5開始,產生現有單詞的機會超過50%。
en | fr | es | de | 它 | se |
---|---|---|---|---|---|
重複 | chouchonnées | 英國丹多 | Regenfreunden | Scommissari | Medmännens |
羽琴主義 | 熏蒸劑 | Diacontenderá | Rechtsbeleuchtes | Insortiti | Metallösningens |
卷積主義者 | Saponisassiez | Transnacionarán | Unerschieben | Immalintenziale | Stationskligt |
Jinglehand | 派遣 | Abundeo | Unstimme | 原理 | Arbetslöftenas |
飢餓 | 滋補品 | Encuestionó | überredete | Acconciliani | Utredningsviljande |
格子 | 查爾 | 安哥伯恩 | Zwischere | 親戚 | Tributionsverktygs |
最補充 | Potames | Banderolasteis | plädiertem | 分散 | Slappningarnas |
拒絕自己 | 魯道德斯 | 約束 | 沃爾肯 | Trisecchererai | Tidsnärings |
憂鬱症師 | ReluisionNés | Desagüense | Kompetentenzeichnen | riappavia | 義大利麵 |
cleavagery | Sacagneuse | Desvergonzaremos | 杜姆斯特 | Sgancializzando | yngstakternas |
en | fr | es | de | 它 | se |
---|---|---|---|---|---|
夏琳 | 阿里安 | 桑德羅 | Germann | Severonica | 布里坦 |
索雷爾 | 克萊門蛋白 | Uliseo | Gunde | 埃文莎 | 克里斯汀 |
奧斯汀 | Théophie | Teofilomena | Werthold | 弗洛雷納 | Frid |
哈丁 | 奧古斯丁 | 赫里納 | 漢尼莉亞 | 蒂齊亞 | 托爾斯坦 |
棚戶區 | Jeanninette | 阿米洛 | 赫爾瑪 | 倫納迪納達 | 吉塔 |
克里斯蒂安 | Flavier | Leandra | 塔賈 | Fortunatale | 克斯蒂娜 |
小 | Isidonie | Dolorencio | 西加德 | 西蒙多 | Sigfrida |
雷納 | 衣服 | 狄翁 | Anelia | Geltrudenzio | 索斯滕 |
Leanoreen | 法布里爾 | Anuncia | 特魯德 | 巴蒂亞 | 槍 |
羅斯林 | 巴斯蒂安 | 卡利斯 | 埃爾蒙哈德 | 洛倫蒂娜 | 傑爾 |
給定其他類型的詞典,發電機可以在某些特定主題中創建隨機單詞:隨機作業,隨機植物,隨機動物,隨機城市...