2012-07-07 63 views
8

Tôi có tệp TSV (giá trị được phân tách bằng tab) mà tôi cần kiểm tra chính tả lỗi chính tả và từ kết hợp (ví dụ: 'Tôi yêu bạn' so với 'Iloveyou').Tự động sửa lỗi chính tả

Tôi đã cài đặt Aspell trên máy của mình và có thể chạy qua R bằng hàm aspell().

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

Tuy nhiên, đầu ra từ chạy trong R chỉ là danh sách từ sai chính tả và đề xuất có thể có.

> 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" ... 

Có cách nào để có aspell (hoặc bất kỳ trình kiểm tra chính tả nào khác) tự động sửa các từ sai chính tả không?

Trả lời

8

Dường như bạn có thể làm như sau:

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. 

Chỉ trong nháy mắt nhanh chóng qua các tài liệu và trông giống như những gì bạn sẽ phải làm gì để tự động sử dụng đúng chính tả gợi ý.

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

Edit: Nhận ra rằng bạn có thể không được tìm mã python, nhưng đây sẽ là cách dễ nhất để làm điều đó với python như câu hỏi đã được gắn thẻ với trăn. Có lẽ là một phương pháp hiệu quả hơn để làm điều đó, nhưng nó đã muộn và điều này đến đầu tiên.

+0

Tôi đã gắn thẻ python bởi vì tôi biết nó có một số thư viện tốt cho NLP và cho rằng nó sẽ là một bản sao lưu tốt nếu không có gì đến trong R. Cảm ơn bạn. – screechOwl

+0

Ok, theo nghĩa đó, ở trên là một phương pháp đơn giản để làm điều đó, có lẽ có một viên ngọc ẩn trong tài liệu sẽ làm chính xác những gì bạn cần. – sean

Các vấn đề liên quan