Question

J'ai vu de nombreux exemples d'utilisation Chaînes de Markov Pour générer des mots aléatoires basés sur des données source, mais ils me semblent souvent un peu trop mécaniques et abstraits. J'essaye d'en développer un meilleur.

Je crois qu'une partie du problème est qu'ils comptent entièrement sur l'occurrence statistique globale de paires et ignorent la tendance des mots à commencer et à se terminer de certaines manières. Par exemple, si vous utilisez les 1000 meilleurs noms de bébé comme données source, la lettre J est relativement rare dans l'ensemble, mais c'est la deuxième lettre la plus courante pour les noms pour début avec. Ou, si vous utilisez des données source latine, des terminaisons de mots comme -um et -us seraient courantes terminaison, mais pas aussi courant si vous considérez toutes les paires les mêmes.

Donc, j'essaie essentiellement de créer un générateur de mots basé sur la chaîne de Markov qui prend en compte la façon dont les mots commencent et se terminent dans les données source.

Conceptuellement, cela a du sens pour moi, mais je ne peux pas comprendre comment implémenter cela du point de vue du logiciel. J'essaie de créer un petit outil PHP qui vous permet de déposer des données source (par exemple, une liste de 1000 mots) à partir de laquelle il générera ensuite une variété de mots aléatoires avec des départs, des intermédiaires et des fins réalistes. (Par opposition à la plupart des générateurs de mots basés à Markov, qui sont simplement basés sur la survenue statistique de paires dans l'ensemble.)

Je voudrais également le faire avec la longueur des mots déterminée par les données source, si possible; c'est-à-dire que la ventilation des mots générés au hasard devrait être approximativement la même que la dégradation de la longueur des données source.

Toutes les idées seraient massivement appréciées! Merci.

Était-ce utile?

La solution

La partie de ne pas respecter les débuts et les fins communs n'est pas réellement vrai si vous considérez que "l'espace entre les mots" comme un symbole - les débuts communs auront des fréquences élevées après "l'espace entre les mots" et les terminaisons courantes auront des fréquences hautes précédentes " entre les mots ". La longueur du mot correct se résume également à cela plus ou moins naturellement - le nombre moyen de lettres que vous publiez avant de passer à un symbole "Espace entre les mots" devrait être égal au nombre moyen de lettres par mot dans les données de formation, bien que quelque chose dans L'arrière de mon esprit me dit que la distribution pourrait être éteinte.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top