Php 构建更真实的随机词生成器?

Php 构建更真实的随机词生成器?,php,random,word,generator,markov,Php,Random,Word,Generator,Markov,我见过许多基于源数据生成随机单词的例子,但它们对我来说似乎有点过于机械和抽象。我正在努力开发一个更好的 我认为问题的一部分在于,它们完全依赖于成对词的总体统计出现率,而忽略了单词以某种方式开始和结束的趋势。例如,如果您使用前1000名婴儿的名字作为源数据,那么字母J总体上是比较少见的,但它是名字的第二个最常见的字母。或者,如果你使用拉丁语源数据,词尾像-UM和-US将是常见的结局,但如果你认为所有的对都是相同的,那么就不常见了。 所以,我基本上是在尝试组合一个基于马尔可夫链的单词生成器,它考虑了

我见过许多基于源数据生成随机单词的例子,但它们对我来说似乎有点过于机械和抽象。我正在努力开发一个更好的

我认为问题的一部分在于,它们完全依赖于成对词的总体统计出现率,而忽略了单词以某种方式开始和结束的趋势。例如,如果您使用前1000名婴儿的名字作为源数据,那么字母J总体上是比较少见的,但它是名字的第二个最常见的字母。或者,如果你使用拉丁语源数据,词尾像-UM和-US将是常见的结局,但如果你认为所有的对都是相同的,那么就不常见了。 所以,我基本上是在尝试组合一个基于马尔可夫链的单词生成器,它考虑了单词在源数据中的开始和结束方式

从概念上讲,这对我来说是有意义的,但我不知道如何从软件的角度实现这一点。我正在尝试组合一个小PHP工具,它允许您输入源数据(例如,1000个单词的列表),然后从中生成各种具有真实开头、中间和结尾的随机单词。(与大多数基于马尔可夫的字生成器相反,后者仅基于对的总体统计出现率。)

如果可能的话,我还希望使用由源数据确定的字长来实现这一点;i、 例如,随机生成的单词的长度细分应该与源数据的长度细分大致相同


任何想法都将不胜感激!谢谢。

< P>不尊重共同的开端和结尾的部分,如果你认为“词之间的空间”是一个符号,那么共同的开端将有高频率跟随“单词之间的空间”,而共同的结尾在“词间距”之前会有高频率。正确的字长也或多或少自然地解决了这个问题——在转换为“单词之间的空格”符号之前,您输出的字母平均数应该等于训练数据中每个单词的字母平均数,尽管我的脑海中有某种东西告诉我,这个分布可能不正确。

谢谢,霍布斯!这就是我最终想到的解决办法。我意识到单词的开头和结尾可能是事物本身,所以我指定了一个字符来表示它们。从那以后一切都很顺利。:-)