4

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

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

但任何字符组合"hello world"都会产生相同的熵,但会创建一个随机字符串,如"llloo ehrdw". 基于熵的方法在文本等长字符串上效果很好。在这里,您还可以计算单个字符来确定它是一种语言。您还可以在此处使用 Zipfs Law 来检查真实语言...

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

例如:

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)

因此,一切都是为了在这里找到单词以将它们与您的单词表进行比较,这真的很难。

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

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

4

2 回答 2

0

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

于 2013-06-11T14:01:17.373 回答
0

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

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

于 2013-06-11T14:11:58.953 回答