2010-09-27 144 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%來自底線。雖然從一種語言到另一種語言略有不同,但仍然可以檢測到非常清晰的模式。使用相同的方法來發現其他鍵盤佈局中的模式,然後確保在檢查亂碼之前檢測用於輸入的任何文本的佈局。儘管模式很明確,但只有將這種方法用於較長的腳本時效果最好,最好使用此方法作爲一個指標。使用其他指標(如混合有字母/數字的非字母/數字字符,文本長度等)將提供進一步的指標,在​​應用權重時,可以提供非常好的整體表示亂碼條目。