马尔科夫连锁是一个(几乎标准)的方式以产生 随机的胡言乱语 它看起来聪明,未受过训练的眼睛。你会如何去关于标识马尔科夫产生的文本,从人类书面文本。

这将是真棒,如果你指的是蟒蛇友好。

有帮助吗?

解决方案

您可以使用“蛮力”的方法,因此你比较产生语言上收集的n-gram比生成它的马尔可夫模型为了更高的数据。

即。如果用一个2阶马尔可夫模型生成的语言,高达3克,将有正确的频率,但4 - 克可能不会。

您最多可以得到来自谷歌的公开的 n元数据集的这是巨大的,但 - 24G的压缩的 - 你需要通过邮寄得到它从的 LDC

编辑:添加一些实现细节

在正克已经被计算在内,所以你只需要计数(或频率)存储的方式,可以快速地搜索。一个正确索引的数据库,或者一个Lucene索引应该工作。

给定一段文字,扫描越过它并查找每个5克的频率在数据库中,并看看它行列相比,具有相同的4个字开始其它5-克。

实际上,一个更大的障碍可能是数据集的许可条款。使用它的商业应用程序可能会被禁止。

其他提示

一个简单的方法是将有一大群人看你输入文本,看看文字是有道理的。我只是半开玩笑的,这是一个棘手的问题。

我相信这是一个困难的问题,因为马尔可夫链生成的文本都将有很多真正的人类文字的相同性质的词频和词的顺序之间的简单关系的条款。

由马尔可夫链产生真正的文本和文本之间的差异是在语法的更高级别的规则和在语义的意义,这是很难编程进行编码。另一个问题是,马尔可夫链是生成文本不够好,他们有时会拿出语法和语义正确的语句。

作为一个例子,这里的从kantmachine 一个格言:

  

今天,他会觉得确信   人的意志是自由的;明天,   考虑不可分割的链条   自然,他看起来对自由的   单纯的幻想,并宣布性质是   所有功能于所有

虽然这个字符串被写了一个计算机程序,很难说一个人会不会说这一点。

我认为,除非你可以给我们介绍一下,揭露更明显的差异计算机和人类生成的文本更具体的细节将很难解决这个使用计算机编程。

如果你有几个大的马氏产生的文本,你能确定,他们所通过比较字频率之间的每一个样品。由于马尔科夫链上取决于常数字概率,该比例的任何特定词应大致相等离样品样品。

众包。使用机械土耳其人和得到一定数量的人投票。甚至有一些图书馆帮你把这个关闭。例如:

这里是个博客从O'Reilly的雷达对使用提示机械土耳其人来得到你的工作完成:

如果你写从符号的任意序列产生马尔可夫转移概率,然后计算马氏矩阵的熵速率的程序。 (请参见 http://en.wikipedia.org/wiki/Entropy_rate#Entropy_rates_for_Markov_chains )这基本上是如何容易地将文本可以仅使用马尔可夫链(更高的熵装置更难来预测)来预测的估计。因此我认为,马尔可夫矩阵的低熵是,越有可能是文字的样品是由马氏矩阵控制。如果您有关于如何写这个代码的问题,我曾经有在Python这正是这一点我计算机上的程序,所以我可以帮你。

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