`
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 | 特鲁德 | 巴蒂亚 | 枪 |
罗斯林 | 巴斯蒂安 | 卡利斯 | 埃尔蒙哈德 | 洛伦蒂娜 | 杰尔 |
给定其他类型的词典,发电机可以在某些特定主题中创建随机单词:随机作业,随机植物,随机动物,随机城市...