【发布时间】:2013-06-11 10:52:59
【问题描述】:
是否可以检查一个短的文本序列,例如两三个字,是随机的还是不随机的? 我的第一个想法是计算字符串的熵。
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)
因此,只需在此处查找单词以将它们与您的单词表进行比较,这真的很难。
所有这些方法的另一个问题可能是,它们只能检测某些语言或需要针对某种语言进行训练。考虑到我们现在只想使用英语。
那么有什么好的方法可以做到这一点,还是我需要接受误报和误报?
【问题讨论】:
-
恐怕这是 AI 完备的。
-
(如果没有,至少需要一个包含所有常用英语单词的整个数据库。)
-
是的,当然,还可以看到最后一个字符串,它可能是随机的,但也包含三个单词......
-
但是语言中一定有任何不是随机的特征吗?喜欢使用不常见的字符。所以如果我有一个单词“zzyycxyx”,这可能是随机的,因为它包含很多 z、x、y 并且其中没有人声..
-
您要解决的原始问题是什么?也许有一种解决方法或以更简单的方式解决原始问题的方法?例如,尝试检测在表单中输入无意义数据的人。
标签: algorithm entropy text-analysis