是否可以检查一个短的文本序列,例如两个或三个单词,是否是随机的?我的第一个想法是计算字符串的熵。
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)
因此,一切都是为了在这里找到单词以将它们与您的单词表进行比较,这真的很难。
所有这些方法的另一个问题可能是,它们只能检测某些语言或需要接受某种语言的训练。考虑到我们现在只想使用英语。
那么有什么好的方法可以做到这一点,还是我需要接受误报和误报?