سؤال

رأيت العديد من الأمثلة على استخدام rem="noreferrer"> سلاسل Markov لإنشاء كلمات عشوائية بناء على بيانات المصدر ، لكنهم غالبا ما يبدو ميكانيكيا مفرطا بعض الشيء. أحاول تطوير واحدة أفضل.

أعتقد أن جزءا من المشكلة هو أنهم يعتمدون تماما على الحدوث الإحصائي العام للأزواج، وتجاهل ميل الكلمات للبدء والنهاية بطرق معينة. على سبيل المثال، إذا كنت تستخدم أعلى 1000 أسماء للأطفال كبيانات مصدر، فإن الحرف J نادر نسبيا بشكل عام، ومع ذلك، فإن الحرف الثاني الأكثر شيوعا لأسماء بدء مع. أو، إذا كنت تستخدم بيانات المصدر اللاتينية، فستكون نهايات Word مثل -um و -US شائعة نهايات ، ولكن ليس شائعا إذا كنت تفكر في جميع أزواج نفسها.

لذلك، أحاول أساسا وضع مولد Word المستندة إلى سلسلة Markov التي تأخذ في الاعتبار الطريقة التي تبدأ بها الكلمات وتنتهي في البيانات المصدر.

من الناحية النظرية، من المنطقي بالنسبة لي، ولكن لا يمكنني معرفة كيفية تنفيذ هذا من منظور البرمجيات. أحاول وضع أداة PHP صغيرة تتيح لك تسمح لك بالخروج في البيانات المصدر (E.G.، قائمة تضم 1000 كلمة) والتي سيولد منها مجموعة متنوعة من الكلمات العشوائية ببدء واقعي، Middles، والنهايات. (على عكس معظم مولدات الكلمة المستندة إلى ماركوف، والتي تعتمد فقط على الحدوث الإحصائي لأزواج عموما.)

أود أيضا القيام بذلك مع طول Word الذي يحدده البيانات المصدر، إن أمكن؛ على سبيل المثال، يجب أن يكون طول توزيع الكلمات التي تم إنشاؤها عشوائيا تقريبا نفس الانهيار الطول من البيانات المصدر.

ستكون أي أفكار موضع تقدير كبير! شكرا

هل كانت مفيدة؟

المحلول

الجزء المتعلق بعدم احترام البدايات والنهايات الشائعة غير صحيح في الواقع إذا كنت تفكر في "المساحة بين الكلمات" أن تكون رمزا - سيكون لدى البدايات الشائعة ترددات عالية التالية "الفضاء بين الكلمات" والنهايات الشائعة لها ترددات عاليةالسابقة "المساحة بين الكلمات".يستقر طول الكلمة الصحيحة أيضا من ذلك بشكل أكثر طبيعية أو أقل بشكل طبيعي - متوسط عدد الرسائل التي تخرجها قبل الانتقال إلى رمز "المسافة بين الكلمات" يجب أن يساوي متوسط عدد الحروف لكل كلمة في بيانات التدريب، على الرغم من شيء ما فيإن الجزء الخلفي من ذهني يخبرني أن التوزيع قد يكون خارج.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top