2009-12-05 77 views
3

我試圖使用斯坦福大學NLP來檢查文本樣本的拼寫準確性。它只是文本的度量,而不是過濾器或任何東西,所以如果它關閉了一點就沒問題,只要錯誤是一致的。Java斯坦福大學NLP:拼寫檢查

我的第一個想法是檢查字是由詞彙知:

​​

然而,這會產生相當多的誤報:

misspelled: Sincerity 
misspelled: Sisyphus 
misspelled: Sisyphus 
misspelled: fidelity 
misspelled: negates 
misspelled: gods 
misspelled: henceforth 
misspelled: atom 
misspelled: flake 
misspelled: Sisyphus 
misspelled: Camus 
misspelled: foandf 
misspelled: foandf 
misspelled: babby 
misspelled: formd 
misspelled: gurl 
misspelled: pregnent 
misspelled: babby 
misspelled: formd 
misspelled: gurl 
misspelled: pregnent 
misspelled: Camus 
misspelled: Sincerity 
misspelled: Sisyphus 
misspelled: Sisyphus 
misspelled: fidelity 
misspelled: negates 
misspelled: gods 
misspelled: henceforth 
misspelled: atom 
misspelled: flake 
misspelled: Sisyphus 

如何做任何想法這個更好?

+0

什麼是'lp'?請將其聲明和構造函數添加到某處的問題中。 – 2009-12-06 01:51:28

+0

我加了。謝謝。 – 2009-12-06 17:42:55

回答

9

使用解析器的詞典的isKnown(String)方法作爲拼寫檢查器不是解析器的可行用例。這個方法是正確的:「錯誤」意味着在解析器訓練的大約100萬字文本中沒有看到(具有給定的大寫字母)這個詞。但是,用數據驅動的方式來培訓一個全面的拼寫檢查工具是不夠的。人們通常會使用至少兩個數量級的文本,並且可能會增加一些巧妙處理大小寫。解析器包含了一些巧妙處理訓練數據中看不到的單詞,但這並不反映在isKnown(String)方法返回的內容中。

0

它看起來像你的答案/錯誤之間的專有名稱,真實的話(我假設不存在於詞典)和真正的拼寫錯誤。對「誠意」的一個錯誤的否定也表明,大寫可能會拋棄它,儘管你希望它足夠聰明,不至於 - 無論如何都值得檢查。複數也不應該成爲問題,而是對「神」的錯誤否定?它能正確識別「神」嗎?

由於您正在嘗試檢查拼寫,爲什麼要間接檢查它?什麼是lp.getLexicon()。isKnown(w.word())在內部做什麼?這不取決於加載的語料庫嗎?爲什麼不加載字典,將案例規範化爲大散列,並執行「包含」檢查?既然你處於NLP環境中,那麼也應該很容易去除專有名稱,尤其是考慮到你不是在100%的精確度。