构建一个更真实的随机单词生成器?

6
我看过很多使用马尔可夫链生成基于源数据的随机单词的例子,但它们似乎对我来说有点过于机械和抽象。我正在尝试开发一个更好的方法。
我相信问题的一部分在于它们完全依赖于成对出现的整体统计,而忽略了单词以某种方式开始和结束的倾向。例如,如果您使用前1000个婴儿名字作为源数据,字母J总体上相对较少,但它是第二个最常见的以该字母开头的名字。或者,如果您使用拉丁语源数据,则像-um和-us这样的单词结尾将是常见的结尾,但如果您认为所有成对都相同,则不会像它们那样普遍。
因此,我基本上正在尝试组合一个基于马尔可夫链的单词生成器,该生成器考虑了源数据中单词的起始和结束方式。
从概念上讲,这对我来说很有意义,但我无法从软件角度实现它。我正在尝试组合一个小的PHP工具,允许您放入源数据(例如,1000个单词的列表),然后生成具有逼真开头、中间和结尾的各种随机单词。(与大多数基于马尔可夫模型的单词生成器不同,这些单词生成器仅基于整体成对出现的统计数据。)
如果可能的话,我也想使用源数据确定单词长度;即,随机生成的单词长度应与源数据的长度分布大致相同。
任何想法都将受到极大的赞赏!谢谢。
1个回答

3
关于不尊重常见开头和结尾的部分,如果您认为“单词间的空格”是一个符号,那么这并不是真的——常见的开头在“单词间的空格”后面会有高频率,而常见的结尾则会在“单词间的空格”前面有高频率。正确的单词长度也可以在这个过程中自然地解决——您在输出“单词间的空格”符号之前输出的平均字母数应该等于训练数据中每个单词的平均字母数,尽管我脑海中的某些东西告诉我分布可能会有所偏差。

谢谢,霍布斯!那实际上是我最终想到的解决方案。我意识到一个单词的开头和结尾本身就可以是一些东西,所以我分配了一个字符来代表它们。之后事情就很顺利了。 :-) - James Archer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接