2011-05-16 19 views
6

मुझे स्रोत डेटा के आधार पर यादृच्छिक शब्द उत्पन्न करने के लिए Markov chains का उपयोग करने के कई उदाहरण दिखाई दिए हैं, लेकिन वे अक्सर मेरे लिए थोड़ा अधिक यांत्रिक और सार लगते हैं। मैं एक बेहतर विकसित करने की कोशिश कर रहा हूं।एक और यथार्थवादी यादृच्छिक शब्द जेनरेटर बनाना?

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

तो, मैं मूल रूप से एक मार्कोव श्रृंखला आधारित शब्द जनरेटर को एक साथ रखने की कोशिश कर रहा हूं जो शब्दों के स्रोत में शब्दों को शुरू और समाप्त करने के तरीके को ध्यान में रखता है।

संकल्पनात्मक रूप से, यह मुझे समझ में आता है, फिर भी मैं यह नहीं समझ सकता कि इसे सॉफ्टवेयर परिप्रेक्ष्य से कैसे कार्यान्वित किया जाए। मैं एक छोटे से PHP उपकरण को एक साथ रखने की कोशिश कर रहा हूं जो आपको स्रोत डेटा (उदा।, 1000 शब्दों की एक सूची) में छोड़ने की अनुमति देता है, जिससे यह यथार्थवादी शुरुआत, मिडल और अंत के साथ विभिन्न प्रकार के यादृच्छिक शब्द उत्पन्न करेगा। (अधिकांश मार्कोव-आधारित शब्द जेनरेटर के विपरीत, जो कि कुल मिलाकर जोड़ों की सांख्यिकीय घटना पर आधारित हैं।)

यदि संभव हो तो मैं स्रोत डेटा द्वारा निर्धारित शब्द लंबाई के साथ ऐसा करना चाहूंगा; यानी, यादृच्छिक रूप से जेनरेट किए गए शब्दों की लम्बाई टूटना स्रोत डेटा की लंबाई टूटने के समान ही होनी चाहिए।

किसी भी विचार की व्यापक सराहना की जाएगी! धन्यवाद।

उत्तर

3

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

+0

धन्यवाद, हॉब्स! वास्तव में वह समाधान है जो मैं अंत में आया था। मुझे एहसास हुआ कि एक शब्द की शुरुआत और समापन खुद में चीजें हो सकती है, इसलिए मैंने उन्हें प्रतिनिधित्व करने के लिए एक चरित्र सौंपा। उसके बाद चीजें अच्छी तरह से गिर गईं। :-) –