考虑QWERTY键盘布局检测随机键盘命中

时间:2010-09-27 08:41:23

标签: algorithm n-gram qwerty text-classification

winner of a recent Wikipedia vandalism detection competition建议通过“检测QWERTY随机键盘命中率来改善检测效果 键盘布局“。

示例:woijf qoeoifwjf oiiwjf oiwj pfowjfoiwjfo oiwjfoewoh

是否有任何软件已经(最好是free and open source)?

如果不是,是否有一个活跃的FOSS项目目标是为了达到这个目标?

如果不是,你会如何建议实施这样的软件?

5 个答案:

答案 0 :(得分:6)

如果分析文本中的两个bigrams在QWERTY术语中接近但在英语语言中具有接近零的统计频率(如对“fg”或“cd”),则有可能涉及随机键盘命中。如果找到更多这样的对,那么机会会大大增加。

如果你想考虑使用双手进行抨击,那么测试用另一个字母分隔的字母用于QWERTY贴近度,但是两个双字母(甚至三卦)用于双字母频率。例如,在文本“flsjf”中,您将检查F和S的QWERTY距离,但是对于频率,请检查bigrams FL和LS(或trigram FLS)。

答案 1 :(得分:2)

根据我的经验,大多数键盘糖化都会出现在主页上。检查所用字符的大部分是asdfjkl;是否相当简单。

答案 2 :(得分:2)

考虑两个字母序列的经验分布,即“给出字母a的概率遵循字母b”,所有这些概率填充一个大小为27x27的表(将空格视为字母)。

现在,将其与一系列英语/法语/任何文本的历史数据进行比较。使用Kullback分歧进行比较。

答案 3 :(得分:1)

采用基于键盘布局的方法将提供一个很好的指标。使用QWERTY布局,您会发现任何给定文本中大约52%的字母将来自键盘字符的顶行。大约32%的角色来自中间线,14%将来自底线。虽然从一种语言到另一种语言略有不同,但仍然可以检测到非常清晰的模式。使用相同的方法来发现其他键盘布局中的模式,然后确保在检查乱码之前检测用于输入的任何文本的布局。尽管模式很清楚,但最好只使用此方法作为一个指标,因为这种方法适用于较长的脚本。使用其他指标,如非字母/数字字符与字母/数字,文本长度等混合将提供进一步的指标,在​​应用加权时,可以提供非常好的整体指示乱码。

答案 4 :(得分:0)

弗雷德利的答案可以扩展到一个语法,用来构造附近字母的单词。

例如,可以使用连接asasasasasdfassasd的语法生成df

使用这样的语法,扩展到键盘上的所有字母(字母彼此相邻)可以在解析后,给出一个用“乱码”语法生成多少文本的度量。 / p>

警告:当然,任何讨论这种语法的文本和列出“乱码”文本的例子都会比普通的拼写检查文本得分高得多。

请注意,示例方法不会以“h4x0r rulezzzzz !!!!!”的形式捕获故意破坏。

此处的另一种方法(可与上述方法整合)将统计分析破坏文本的语料库,并尝试在破坏文本中获取常用词。

编辑:
既然你假设QWERTY,我想我们也可以假设英语?

KISS怎么样 - 通过英语拼写检查程序运行文本,如果它失败可怜地得出结论,这可能是胡言乱语(问题是,为什么要快速区分快速打字的乱码与随机废话或者非常拼写错误的文本? )

或者,如果要考虑其他键盘布局(Dvorak,任何人?)和语言,那么可以通过所有可用的语言拼写检查器运行文本,然后继续(这也会使语言自动检测)。

这不是一种非常有效的方法,但可以用作基线测试。

注意:
从长远来看,我认为破坏者会适应并开始破坏,例如来自其他维基百科页面的摘录,这最终很难自动检测为故意破坏(好吧,现有文本可以校验和重复标记,但如果文本来自其他一些来源,最终会很难)。