Проверка орфографии с автозаменой

У меня есть файл TSV (значения, разделенные табуляцией), в котором мне нужно проверить орфографию на наличие опечаток и комбинированных слов (например, «Я люблю тебя» и «Я люблю тебя»).

Я установил Aspell на свой компьютер и могу запустить его через R с помощью функции aspell().

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 (или любая другая программа проверки орфографии) автоматически исправляла слова с ошибками?


person screechOwl    schedule 07.07.2012    source источник


Ответы (1)


Похоже, вы можете сделать следующее:

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. Вероятно, есть более эффективный способ сделать это, но уже поздно, и это первым пришло на ум.

person sean    schedule 07.07.2012
comment
Я отметил python, потому что знаю, что у него есть несколько хороших библиотек для НЛП, и решил, что это будет хорошая резервная копия, если в R ничего не получится. Спасибо. - person screechOwl; 07.07.2012
comment
Хорошо, в этом смысле описанное выше — это простой способ сделать это, возможно, в документации есть скрытая жемчужина, которая сделает именно то, что вам нужно. - person sean; 07.07.2012