我看到了许多使用马尔可夫链用于基于源数据生成随机单词的许多示例,但他们经常对我来说似乎有点过于机械和抽象。我正在努力发展一个更好的。

我相信部分问题是他们完全依赖于整体统计出现对,并忽略了单词以某种方式开始和结束的倾向。例如,如果将前1000名Baby名称用作源数据,则字母J总体相对少见,但它是名称的第二个最常见的字母开始。或者,如果您使用的是拉丁源数据,则为-um和-US的字结尾将是常见的结尾,但如果考虑所有对一样,则不像相同一样。

所以,我基本上试图将基于马尔可夫链的词生成器放在一起,该发生器考虑了单词开始和结束源数据的方式。

概念上,对我来说是有道理的,但我无法弄清楚如何从软件角度来实现这一点。我正在尝试将一个小PHP工具放在一起,让您丢弃源数据(例如,1000个单词列表),然后它将生成各种随机单词,其具有现实的开始,码头和结尾。 (与大多数基于Markov的文字发生器相反,它只是基于总体的统计发生。)

如果可能的话,我还要用由源数据确定的字长来执行此操作;即,随机生成的单词的长度分解应与源数据的长度分解大致相同。

任何想法都会大量赞赏!谢谢。

有帮助吗?

解决方案

关于不尊重公共开始和结局的部分实际上是不是真的,如果您认为要成为符号之间的“单词之间的空间” - 常见的开始将在“单词之间的空间”之后具有高频,并且常见结束将具有高频在“单词之间的空间”之前。正确的单词长度也脱离了更多或更少的自然 - 在转换之前输出到“单词”符号之间的“空间”之前输出的平均数量应该等于训练数据中的每单词的平均数量,虽然有些东西我的思想的背部正在告诉我,分布可能会关闭。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top