是否可以检查短文本序列是否随机?

时间:2013-06-11 10:53:00

标签: algorithm entropy text-analysis

是否可以检查短文本序列,例如两三个字,是随机还是不是? 我的第一个想法是计算字符串上的熵。

H("hello world") = 2.84535
H("sdzfjksher") = 3.12193

"hello world"中字符的任意组合都会产生相同的熵,但会创建一个像"llloo ehrdw"这样的随机字符串。基于熵的方法适用于像文本这样的长字符串。在这里,您还可以计算单个字符以确定其语言。你也可以在这里使用Zipfs法来检查真正的语言......

下一个方法是常用词的查找表,就像普通的英语词典一样。此方法的问题是首先创建单词列表。

例如:

input string        result
------------------------------------------------------
"hello world"       matches 2 words
"helloworld"        random string
"lllooehrdw"        random string
"hello.world"       probably 2 words 
"a.be.was"          probably 3 words (but this is probably a strange edge case)

所以关于在这里找到单词以将它们与你的单词列表进行比较,这可能真的很难。

所有这些方法的另一个问题可能是,他们只检测某些语言或需要接受某种语言的训练。考虑到我们现在只想使用英语。

那么有什么好的方法可以做到这一点,还是我需要接受误报和假阴性?

2 个答案:

答案 0 :(得分:0)

您可以计算文本中使用的字符的频率,并将其与英语和/或其他语言的已知字符分布进行比较。这将表明文本与/或类似于该语言的可能性。

答案 1 :(得分:0)

听起来您想使用字母的频率来查看字符串是单词还是随机字母。 http://scottbryce.com/cryptograms/stats.htm

结合统计数据和单词列表听起来像是减少误报的方法。