2010-09-27 93 views
7

winner of a recent Wikipedia vandalism detection competition表明,检测可以通过“检测随机键盘命中考虑QWERTY 键盘布局”加以改进。检测随机键盘命中考虑QWERTY键盘布局

例子:woijf qoeoifwjf oiiwjf oiwj pfowjfoiwjfo oiwjfoewoh

是否有已经做了这个(最好free and open source)软件吗?

如果不是,是否有积极的自由/开放源码软件项目,其目标是要实现这一目标?

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

+1

故意破坏检测算法已经包含字典/基于语法的检测,所以在这里我正在寻找一种算法,不使用字典或语法,而是使用手指模式。 – 2010-09-27 08:45:48

+1

以及'finger patterns'与字典条目以及语法规则有何不同?这是相同的方法,区别在于一个是正检测,另一个是负检测。此外 - 你不清楚你要求什么 - 随机键盘命中考虑qwerty没有什么不同,然后随机键盘命中考虑德沃夏克,除非他们不是真正的随机(也许更好地称之为'常用故意破坏构造')。 – Unreason 2010-09-27 10:45:49

+0

@不理由:关于你的第一个问题:我的意思是现有人类语言的字典和语法。你提出的“负面检测”是有趣的,随意提出它作为一个答案。关于“更进一步”:我重新提出了我的问题:给你一个在QWERTY键盘上输入的字符序列,你如何计算它被不小心键入的概率? (即:某人的目标不是为了表达某些东西,而是快速输入许多角色,例如oiuroiqewrcoqf) – 2010-09-27 11:21:40

回答

5

如果分析文本中的两个bigrams在QWERTY条件下接近,但英语语言的统计频率接近于零(如对“fg”或“cd”),则可能会出现随机键盘命中。如果发现更多这样的对,机会就会大大增加。

如果您想考虑使用双手进行打击,然后使用另一个字母来分隔QWERTY贴近度的测试字母,但使用两个bigram(或甚至三卦)来测试​​doubleram频率。例如,在文本“flsjf”中,您可以检查F和S是否为QWERTY距离,但是用于频率的bigrams FL和LS(或trigram FLS)。

+1

+1这听起来不错,但首先需要提取这些用于乱码的常见bigrams列表;否则最终结果将基于猜测(猜测哪些bigrams或trigrams是乱码的特征)。 – Unreason 2010-09-27 11:57:43

+0

也许对于OP来说,需要说明的是,bigram匹配是在拼写检查器 – Unreason 2010-09-27 12:00:01

+0

中接受的常用算法。作为参考,我想补充一点,重复一个不寻常的二元论是一个准确的标志。 – 2010-10-04 07:42:11

2

根据我的经验,大多数键盘糖化往往都在家中排。检查所用字符的大部分是否为asdfjkl;是相当简单的。

+1

哇我从未注意到这一点,但对于我的随机糖化,这是如此真实! – Blindy 2010-09-27 11:58:56

0

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

例如asasasasasdf可以与连接assasddf语法来产生。

有了这样的语法,扩展到键盘上的所有字母(字母彼此相邻)可以在解析后给出衡量一个文本可以用这个“乱码”语法产生多少的度量。注意:当然,任何讨论这种语法的文本和列举“乱码”文本的例子都会得到明显高于常规拼写检查文本的分数。

请注意,示例方法不会以'h4x0r rulezzzzz !!!!!'的形式捕获破坏行为。

这里的另一种方法(可以与上述方法相结合)将是统计分析破坏文本的语料库,并尝试在破坏文本中获得常用词。

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

怎么样KISS - 通过英文拼写检查器运行的文本,如果它失败悲惨地得出结论,它可能是胡言乱语(问题是,为什么要快速区分胡言乱语从随机废话或从非常严重拼写文本?)

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

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

注:
从长远来看,我可以想象,破坏者将适应并开始捣毁,从其他维基百科页面例如,摘编,这将是最终很难自动检测人为破坏(OK,现有的文本可以校验和并国旗在重复上提出,但如果文本来自其他来源,它将最终很难)。

+0

关于你的“做笔记”段落:确实,'h4x0r rulezzzzz !!!!!'案件不是针对这个目标的,实际上它是通过其他方式来处理的,胜者的文件谈到了这一点。简而言之:“zzzzz”的字符重复和过多的标点符号已经将其标记为可能的破坏行为。 – 2010-09-27 12:01:58

1

考虑两个字母序列的经验分布,即“字母给定它跟在字母b之后的概率”,所有这些概率填充一个大小为27x27(考虑空间为字母)的表格。

现在,将其与来自一堆英文/法文/任何文本的历史数据进行比较。使用Kullback散度进行比较。

+0

我是否正确地实施你的解决方案我需要一个“混合文本”的语料库? – 2010-09-27 12:30:06

+0

你需要一个标准的英文文本(如维基百科文章)的语料库。 – 2010-09-27 12:31:52

+0

我认为只考虑文章的最后一个版本(除非它真的很短)可能适用于Wikipedia示例。 – 2010-09-27 16:34:53

1

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