-
Markov-Word-Generator เป็นไลบรารี Python สำหรับการสร้างคำแบบสุ่มน่าเชื่อถือและน่าเชื่อถือตามรายการของคำ มันประเมินความน่าจะเป็นของอักขระถัดไปในคำที่ขึ้นอยู่กับความถี่ของอักขระ N ก่อนหน้าโดยใช้โซ่มาร์คอฟ สิ่งนี้ใช้โซ่มาร์คอฟ
pip install markov-word-generator
เพื่อสร้างคำสุ่มที่ฟังดูเหมือนคำจริงห้องสมุดนี้จะวิเคราะห์การกระจายตัวละครระหว่างคลังข้อมูลในภาษาที่กำหนด มันสร้างตารางการทำแผนที่สำหรับการรวมตัวละครและความถี่ที่เกี่ยวข้องในคลังข้อมูล โดยการประเมินความน่าจะเป็นของอักขระตามอักขระก่อนหน้าไลบรารีจะสร้างคำที่เลียนแบบรูปแบบภาษาจริง
นี่คือความร้อนที่แสดงการกระจายตัวของตัวละครแต่ละตัว (คอลัมน์) ที่ได้รับก่อนหน้า (แถว)
$
= สิ้นสุดคำ^
= เริ่มต้นคำเป็นภาษาอังกฤษ:
และเป็นภาษาฝรั่งเศส:
การประเมินความน่าจะเป็นของตัวละครที่จะปรากฏขึ้นเนื่องจากความน่าจะเป็นของตัวที่ได้รับก่อนหน้านี้ทำงานได้ดี แต่ยังคงเป็นอันตราย เราสามารถเพิ่มโอกาสของโลกฟังดูเป็นจริงโดยดูที่ตัวละครก่อนหน้า
เครื่องกำเนิดไฟฟ้าจะแยกวิเคราะห์ไฟล์ข้อความอินพุตที่มีหนึ่งคำต่อบรรทัด (พจนานุกรม) นับการเกิดตัวละครแต่ละตัวขึ้นอยู่กับการเกิดขึ้นของ 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
: (บูล): หากตั้งค่าเป็น จริง สำเนียงจะถูกละเว้นระหว่างการแยกวิเคราะห์ ค่าเริ่มต้นเป็น เท็จgenerate_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
การสร้างคำสุ่ม 5,000 คำสำหรับการทดสอบแต่ละครั้งและตรวจสอบเปอร์เซ็นต์ของคำเหล่านั้นซึ่งมีอยู่เป็นคำที่ถูกต้องจริง 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 มากกว่า 5,000 ตัวอย่าง * สำเนียงถูกละเว้นเป็นมาตรฐานในภาษาฝรั่งเศส
จาก n = 5 มีโอกาสมากกว่า 50% ของโอกาสที่จะสร้างคำที่มีอยู่
en | FR | ES | เดอ | มัน | SE |
---|---|---|---|---|---|
สิ่งที่น่าสนใจได้ | chouchonnées | Infamandando | regenfreunden | Scommissari | Medmännens |
การใช้ขนนก | การรมควัน | Diacontenderá | Rechtsbeleuchtes | Insortiti | Metallösningens |
ผู้มีความสุข | Saponisassiez | Transnacionarán | unerschieben | อิมมาลินเซียล | Stationskligt |
jinglehand | มีส่วนร่วม | มากมาย | ไม่มีใคร | คำสั่ง | Arbetslöftenas |
ความดุดัน | Toniciens | encuestionó | überredete | Acconciliani | Utredningsviljande |
เป็นก้อน | ตะไคร่น้ำ | abbombearán | zwischere | Afferrofilia | Tributionsverktygs |
รองลงมา | potames | Banderolasteis | plädiertem | ทำให้หมดกำลังใจ | slappningarnas |
วาทกรรม | Rudoyers | construéis | วูลเคน | Trisecchererai | tidsnärings |
ผู้ที่ย่ำแย่ | reluisionnés | desagüense | Kompetentenzeichnen | Riappavia | สปากาเทลลิก |
ความแตกแยก | Sacagneuse | Desvergonzaremos | Dümmst | Sgancializzando | yngstakternas |
en | FR | ES | เดอ | มัน | SE |
---|---|---|---|---|---|
ชาร์ลีนา | Arian | ทราย | ประเทศเยอรมัน | Severonica | บริตตัน |
สอเรลล์ | Clementin | uliseo | มวย | Evarissa | คริสติน |
Austinee | Théophie | Teofilomena | มีน้ำใจ | ฟลอเรนนา | เป็นเรื่องยาก |
กราฟ | ออกัสไทน์ | เฮิร์น | ฮันเนเลีย | Tizia | ตอร์สไตน์ |
หินปูน | Jeanninette | Amilo | เฮลมาร์ | Leonardinanda | คนขี้เกียจ |
ชาวคริสเตีย | มีรสชาติดีกว่า | Leandra | ทัตจา | หมอดู | Kerstina |
น้อยลง | Isidonie | Dolorencio | Sieghardt | Simondo | ซิกฟริด้า |
reana | ผ้า | ดิออน | แอนเรีย | Geltrudenzio | ธ อร์สเทน |
โอลีโอเรน | คนโง่ | Anuncia | คนดัง | Battia | ปืนใหญ่ |
Roslyn | ชาวบิสเทียน | ช่องทาง | เอลีนฮาร์ด | ลอเรนติน่า | กระตุก |
จากพจนานุกรมประเภทอื่น ๆ เครื่องกำเนิดไฟฟ้าสามารถสร้างคำสุ่มในบางหัวข้อเฉพาะ: งานสุ่มพืชสุ่มสัตว์สุ่มเมืองสุ่ม ...