2009-12-11 18 views
20

आप ऐसे शब्द कैसे बनाते हैं जो अंग्रेजी भाषा का हिस्सा नहीं हैं, लेकिन अंग्रेजी बोलते हैं? उदाहरण के लिए: janertice, bellagomआप शब्द की तरह अंग्रेजी कैसे बनाते हैं?

+0

आपको ऐसा करने की आवश्यकता क्यों होगी? – dacracot

+12

अंग्रेजी अक्षरों के डेटाबेस से निर्मित एक मार्कोव श्रृंखला एक उचित दृष्टिकोण की तरह प्रतीत होती है। अब तक तुमने क्या प्रयास किये हैं? –

+11

मुझे नहीं पता, लेकिन मैंने यहां कुछ अन्य उपयोगकर्ताओं को देखा है जो इस कला को महारत हासिल कर चुके हैं। –

उत्तर

14

में रुचि हो सकती this algorithm, जो वास्तव में है सिर्फ एक Markov chain की एक पतित मामले पर विचार करें।

0

एक सामान्य अभ्यास Markov Chain को अंग्रेजी लेक्सिकॉन से कई शब्दों (नूम?) से बने "प्रशिक्षण सेट" में अक्षरों के संक्रमण के आधार पर बनाने के लिए है, और फिर इस श्रृंखला को आपके लिए "यादृच्छिक" शब्द उत्पन्न करने दें।

2

एक दृष्टिकोण जो तुलनात्मक रूप से आसान और प्रभावी है, प्रति शब्द के बजाय Markov chain generator प्रति-चरित्र चलाने के लिए, स्रोत सामग्री के रूप में अंग्रेजी शब्दों के एक बड़े कॉर्पस का उपयोग करके।

3

यहां एक example of somebody doing it है। वे Markov chains और dissociated press के बारे में बात करते हैं।

यहां कुछ code I found है। आप कोडेपैड पर run it online कर सकते हैं।

import random 

vowels = ["a", "e", "i", "o", "u"] 
consonants = ['b', 'c', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'm', 'n', 'p', 'q', 
       'r', 's', 't', 'v', 'w', 'x', 'y', 'z'] 

def _vowel(): 
    return random.choice(vowels) 

def _consonant(): 
    return random.choice(consonants) 

def _cv(): 
    return _consonant() + _vowel() 

def _cvc(): 
    return _cv() + _consonant() 

def _syllable(): 
    return random.choice([_vowel, _cv, _cvc])() 

def create_fake_word(): 
    """ This function generates a fake word by creating between two and three 
     random syllables and then joining them together. 
    """ 
    syllables = [] 
    for x in range(random.randint(2,3)): 
     syllables.append(_syllable()) 
    return "".join(syllables) 

if __name__ == "__main__": 
    print create_fake_word() 
+0

यह पोस्ट मुझे रेमंड चे के ब्लॉग पोस्ट (सभी लिंक के साथ) की याद दिलाती है;) – RCIX

+1

ओप्स, रेमंड * चेन * ... – RCIX

2

नोट: भाषाविज्ञान एक शौक है, लेकिन मैं इसमें कोई विशेषज्ञ नहीं हूं।

सबसे पहले आपको अंग्रेजी फोनेम के बारे में बात करने के लिए "शब्दकोश" प्राप्त करने की आवश्यकता है।

फिर आप उन्हें एक साथ स्ट्रिंग करते हैं।

सबसे जटिल और सटीक समाधान नहीं होने पर, यह आपको आम तौर पर स्वीकार्य परिणाम तक ले जाना चाहिए।

यदि आप अन्य समाधानों की जटिलताओं को समझ नहीं पाते हैं तो इसे लागू करने के लिए बहुत आसान है।

3

मार्कोव चेन का उपयोग करना एक आसान तरीका है, जैसा कि पहले से ही बताया गया है। बस सावधान रहें कि आप Automated Curse Generator के साथ समाप्त नहीं होते हैं।

3

मुझे लगता है कि this story आपके प्रश्न का उत्तर काफी अच्छी तरह से देगा।

यह मार्कोव चेन एल्गोरिदम के विकास का वर्णन करता है जिसमें काफी हद तक नुकसान होता है।

14

एक अंग्रेजी शब्द की शुरूआत करें और दूसरे के अंत और संयोजित करें।

उदा।

फॉर्च्यून + समग्रता = fortality

आप केवल व्यंजन-स्वर सीमाओं पर अपने शब्दों को काटने और इतने पर की तरह कुछ और नियम जोड़ने के लिए चाहते हो सकता है।

+1

सादगी के लिए उपरोक्त। – esac

+0

मैं सहमत हूं। लोग नए अंग्रेजी शब्दों को बनाने के लिए अवचेतन/प्रत्यय/प्रत्यय को हर समय अवचेतन रूप से पुनर्व्यवस्थित करते हैं। यह दिमाग में एक असाधारण सरल एल्गोरिदम (हेरिस्टिक?) है, इसलिए कोड में लागू करना मुश्किल नहीं होगा। मुझे इस पोस्ट की अपवित्रता में योगदान करने में प्रसन्नता हो रही है =) –

+0

और फिर यह सुनिश्चित करने के लिए शब्दकोश की जांच करें कि यह वास्तविक नहीं है। – Tatarize

0

मार्कोव श्रृंखला जाने का रास्ता है, जैसा कि अन्य पहले ही पोस्ट कर चुके हैं। यहाँ एल्गोरिथ्म के एक सिंहावलोकन है:

  • Let एच आवृत्ति वे के साथ होने के लिए एक और शब्दकोश मानचित्रण पत्र के लिए एक शब्दकोश मानचित्रण पत्र हो।
  • पाठ के एक कॉर्पस के माध्यम से स्कैन करके एच प्रारंभ करें (उदाहरण के लिए, बाइबिल, या स्टैक ओवरफ़्लो सार्वजनिक डेटा)। यह एक साधारण आवृत्ति गिनती है। एक उदाहरण प्रविष्टि एच ['टी'] = {'टी': 23, 'एच': 300, 'ए': 50} हो सकती है। एक शब्द की शुरुआत को इंगित करने वाला एक विशेष "प्रारंभ" प्रतीक भी बनाएं, और अंत के लिए "अंत" प्रतीक।
  • "प्रारंभ" प्रतीक से शुरू करके एक शब्द उत्पन्न करें, और उसके बाद आवृत्ति गणना के आधार पर यादृच्छिक रूप से अगला अक्षर चुनना। अंतिम पत्र के आधार पर प्रत्येक अतिरिक्त पत्र उत्पन्न करें। उदाहरण के लिए, यदि अंतिम पत्र 'टी' है, तो आप संभाव्यता 300/373, संभाव्यता 23/373 के साथ 'टी' और 'ए' संभावना 50/373 के साथ 'एच' चुनेंगे। जब आप "अंत" प्रतीक दबाते हैं तो रोकें।

अगले अक्षरों में एक पत्र मैप करने के बजाय, अपने एल्गोरिदम को अधिक सटीक बनाने के लिए, आप अगले अक्षर में दो अक्षर मैप कर सकते हैं।

2

अंग्रेजी निगम से एन-ग्राम के आधार पर एन-ग्राम का उपयोग करें, जो आपको अनुमान लगाता है।

2

मैं ऐसा करने के किसी भी क्रूर तरीके से नहीं सोच सकता।

+2

;-) इस तरह के विनोदी tidbits SO में स्वागत है। (हमें अन्यथा सामग्री के साथ रखने में मदद करता है और हमें खुद को गंभीरता से लेने से रोकता है। इसने कहा कि इस तरह की लाइनों को प्रश्न के उत्तर के रूप में रखा जाना चाहिए, जवाब के रूप में नहीं! धन्यवाद। – mjv

0

आप कोड एंडी पश्चिम सुझाव दिया, तो आप उन अंग्रेजी भाषा में सामान्य रूप से होने वाली के साथ पत्र व्यवहार करने के स्वर और व्यंजन की आवृत्तियों भार से भी बेहतर परिणाम मिल सकते हैं एक साधारण दृष्टिकोण के साथ जाने के लिए निर्णय लेते हैं: Wikipedia: Letter Frequency

आप यहां तक ​​कि जोड़े गए अक्षरों या तीन अक्षरों के अनुक्रमों की आवृत्तियों को देखते हुए भी जा सकते हैं, लेकिन उस बिंदु पर आप वास्तव में उसी विचार को लागू कर रहे हैं जैसे मार्कोव चेन ने दूसरों ने सुझाव दिया है। क्या यह अधिक महत्वपूर्ण है कि "नकली शब्द" मनुष्यों के लिए संभावित रूप से प्रामाणिक दिखते हैं, या शब्दों के सांख्यिकीय गुण अधिक महत्वपूर्ण हैं, जैसे क्रिप्टोग्राफिक अनुप्रयोगों में?

संबंधित मुद्दे