Как исправить ошибочные слова в R с помощью пользовательских слов данных - PullRequest
0 голосов
/ 03 октября 2019

Мне нравится, что подобный вопрос задавался в предыдущих постах, но я чувствую, что мое требование своеобразно. У меня есть фрейм данных, который состоит из одного, в котором сообщается о неверных орфографических терминах.

Сообщенные термины.

abdmen pain
abdomane pain

У меня есть другой фрейм данных, в который я внес исправления вручную.

Wrong spell Correct spell
abdmen      abdomen
abdomane    abdomen
abdome      abdomen
abdumen     abdomen
abodmen     abdomen
adnomen     abdomen
aabdominal  abdominal
abdominal   abdominal

Теперь мне нужно исправить написанное в следующих терминах:

Reported terms
abdomen pain
abdomen pain

Не могли бы вы, пожалуйста, кого-нибудь сообщить мне, каков наилучший способ решения этой задачи. Заранее спасибо за отзыв

Ответы [ 2 ]

0 голосов
/ 03 октября 2019

Это может быть путь ...

ввод

#your current list of entries
incorrect = list("abdmen pain" , "abdomane pain")

# [[1]]
# [1] "abdmen pain"
# 
# [[2]]
# [1] "abdomane pain"

код

library(magrittr) #for pipe operator
library(stringdist)

#list of all possible correct entries
correct = list("abdomen pain", "abdominal pain")

#calculate stringdistance between incorrect and correct, 
# take the solution with the smallest stringdistance as answer
lapply(incorrect, function(x) {
  lapply(correct, function(y) {
    stringdist(x,y)
  }) %>% unlist() %>% which.min() %>% correct[[.]]
})

выход

# [[1]]
# [1] "abdomen pain"
# 
# [[2]]
# [1] "abdomen pain"
0 голосов
/ 03 октября 2019

Исправление текста очень сложно, даже если вы сравниваете каждое слово со всесторонним комментарием, вы никогда не знаете, являются ли слова, не содержащиеся в тексте, ошибочными, именами и т. Д.

Тем не менее, как можно решить вашу проблему? *

  1. Вы должны составить словарь разрешенных / исправленных слов!

  2. Вы должны сравнить каждое слово в вашем неочищенном фрейме данных со словарем, используя слово-расстояние. Вы можете использовать существующие библиотеки , например, эту или написать свою собственную, так как формула не так уж сложна.

  3. Замените каждое слово в сравнении на совпадения из словаря, которыйвыше некоторого теоретического порога нормализованного расстояния (lv-дистанция / длина исходных слов).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...