2012-07-07 104 views
8

我有一個TSV(製表符分隔值)文件,我需要拼寫檢查拼寫錯誤和組合單詞(即'我愛你'和'Iloveyou')。自動更正拼寫檢查器

我已經在我的機器上安裝了Aspell,並且可以使用aspell()函數通過R來運行它。

files <- "train2.tsv" 
res <- aspell(files) 
str(res) 
summary(res) 

但是,在R中運行它的輸出只是拼寫錯誤的單詞列表和可能的建議。

> summary(res) 
Possibly mis-spelled words: 
[1] "amant"  "contaneir" "creat"  "ddition"  "EssaySet"  "EssayText" "experiament" "expireiment" "expirement" 
[10] "Fipst"  "infomation" "Inorder"  "measureing" "mintued"  "neccisary" "officialy" "renuminering" "rinsen"  
[19] "sticlenx"  "sucessfully" "tipe"   "vineager"  "vinigar"  "yar" 

> str(res) 
Classes ‘aspell’ and 'data.frame':  27 obs. of 5 variables: 
$ Original : chr "EssaySet" "EssayText" "expirement" "expireiment" ... 
$ File  : chr "train2.tsv" "train2.tsv" "train2.tsv" "train2.tsv" ... 
$ Line  : int 1 1 3 3 3 3 3 3 6 6 ... 
$ Column  : int 4 27 27 108 132 222 226 280 120 156 ... 
$ Suggestions:List of 27 
    ..$ : chr "Essay Set" "Essay-Set" "Essayist" "Essays" ... 
    ..$ : chr "Essay Text" "Essay-Text" "Essayist" "Sedatest" ... 
    ..$ : chr "experiment" "excrement" "excitement" "experiments" ... 
    ..$ : chr "experiment" "experiments" "experimenter" "excrement" ... 
    ..$ : chr "Amandy" "am ant" "am-ant" "Amanda" ... 
    ..$ : chr "year" "ya" "Yard" "yard" ... 

是否有辦法讓aspell(或任何其他拼寫檢查程序)自動更正拼寫錯誤的單詞?

回答

8

看起來你可以做到以下幾點:

s = load_up_users_dictionary() 

for word in text_to_check: 
    if word not in s: 
     new_words = s.suggest(word) 
     replace_incorrect_word(word, new_words[0])#Pick the first word from the returned list. 

就在文件上快速瀏覽和看起來像你會做自動使用建議正確的拼寫什麼。

http://0x80.pl/proj/aspell-python/index-c.html

編輯: 意識到你可能不找Python代碼,但是這將是與Python做它作爲問題被標記與Python的最簡單的方法。這可能是一種更有效的方法,但它已經遲到了,首先想到這一點。

+0

我標記了python,因爲我知道它有一些很好的NLP庫,並且認爲如果在R中什麼都沒有通過,它將是一個很好的備份。謝謝。 – screechOwl 2012-07-07 15:10:46

+0

好的,從這個意義上說,上面是一個簡單的方法,在文檔中可能有一個隱藏的寶石,它可以完全滿足你的需求。 – sean 2012-07-07 16:25:50