如何使用用户定义的单词数据框纠正R中的错误单词

如何使用用户定义的单词数据框纠正R中的错误单词,r,replace,tidyverse,text-mining,stringr,R,Replace,Tidyverse,Text Mining,Stringr,我喜欢在以前的帖子中有人问过类似的问题,但我觉得我的要求很特别。 我有一个数据框架,其中包括一个由代表报告的拼写错误的术语 报告条款 abdmen pain abdomane pain 我有另一个数据帧,我已手动更正 Wrong spell Correct spell abdmen abdomen abdomane abdomen abdome abdomen abdumen abdomen abodmen abdomen adnomen ab

我喜欢在以前的帖子中有人问过类似的问题,但我觉得我的要求很特别。 我有一个数据框架,其中包括一个由代表报告的拼写错误的术语

报告条款

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
请有人告诉我做这项工作的最佳方法是什么。
提前感谢您的反馈

文本更正非常困难,即使您将每个单词与一份全面的笔录进行比较,您也永远不知道未包含的单词是否拼写错误、名称等

也就是说,你如何解决你的问题

你必须编一本允许/更正单词的词典

您必须使用单词距离将未清理数据框中的每个单词与词典进行比较。您可以使用现有的库或自己编写代码,因为公式并不是那么难

将比较中的每个单词替换为字典中的匹配项,这些匹配项高于标准化距离lv距离/源单词长度的理论阈值


这可能是一条路

输入

代码

输出


我想将报告术语中的单词与错误的拼写单词进行匹配,然后更新与错误拼写单词相对应的正确拼写单词。我已经编写了相应的代码来满足我的需求,但它没有按照预期的输出工作。reportedterm_2=df1中i的列表$reported_项{j
#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"