是否可以检查短文本序列,例如两三个字,是随机还是不是? 我的第一个想法是计算字符串上的熵。
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)
所以关于在这里找到单词以将它们与你的单词列表进行比较,这可能真的很难。
所有这些方法的另一个问题可能是,他们只检测某些语言或需要接受某种语言的训练。考虑到我们现在只想使用英语。
那么有什么好的方法可以做到这一点,还是我需要接受误报和假阴性?
答案 0 :(得分:0)
您可以计算文本中使用的字符的频率,并将其与英语和/或其他语言的已知字符分布进行比较。这将表明文本与/或类似于该语言的可能性。
答案 1 :(得分:0)
听起来您想使用字母的频率来查看字符串是单词还是随机字母。 http://scottbryce.com/cryptograms/stats.htm
结合统计数据和单词列表听起来像是减少误报的方法。