2009-06-08 21 views
2

我相信你們中有不少人會看到Google Wave演示。我特別想知道拼寫檢查技術。拼寫檢查程序有多革命性,通過確定一個詞在上下文中出現的位置來提出這些建議?上下文相關的拼寫檢查引擎

我以前沒有見過這種技術,但是有沒有其他地方的例子?
如果有的話,代碼示例和文獻的工作?

+1

我無法真正回答您的問題,但由於您的原因,我決定查看Google Wave。我不得不說,哇! – 2009-06-08 13:13:08

回答

12

我的2美分。鑑於translate.google.com是統計機器翻譯引擎和A Halevy的「數據的不合理有效性」,P Norvig(Google研究總監)& F Pereira:我假定(打賭)這是一個統計驅動的拼寫檢查器

它是如何工作的:你收集一個非常大的你想拼寫檢查的語言語料庫。您將該語料庫作爲短語表存儲在適應的數據結構中(例如,如果您必須計算n-grams子集,則爲suffix arrays),以跟蹤n-gram數(即估計的概率)。

例如,如果你的陰莖只是constitued的:

I had bean soup last diner. 

從這個入口,你會生成以下雙克(套的2個字):

I had, had bean, bean soup, soup last, last diner 

和三克(一套三字):

I had bean, had bean soup, bean soup last, soup last diner 

但它們將被統計相關性的測試修剪爲例le:我們可以假設三元組

I had bean 

將會消失的短語表。

現在,拼寫檢查只是看看這個大詞組,並檢查「概率」。 (您需要一個良好的基礎設施來存儲這個詞組表格,以高效的數據結構和內存,Google將它用於translate.google.com,爲什麼不這樣做?這比統計機器翻譯更容易。)

例如:您鍵入

I had been soup 

和一語中的,桌子上有一個

had bean soup 

三克與一個比你剛剛輸入什麼可能性要高得多!事實上,你只需要改變一個單詞(這是一個「不那麼遙遠」的三元組),就可以有一個更高概率的三元組。應該有一個處理權衡距離/概率的評估函數。這個距離甚至可以用字符來計算:我們正在進行拼寫檢查,而不是機器翻譯。

這只是我的假設意見。;)

1

您可以瞭解所有關於這樣的話題跳水到自然語言處理。你甚至可以進行深入的分析,猜測在一串給定單詞後面哪個單詞會出現。

如果您對這樣的話題感興趣,我強烈建議使用完全用python編寫的NLTK(自然語言工具包)。這是一個非常廣泛的工作,有很多工具和相當不錯的文檔。