【问题标题】:How to correct the mispelt words in R with a user defined words datarame如何使用用户定义的单词数据框更正 R 中拼写错误的单词
【发布时间】:2020-02-01 17:12:01
【问题描述】:

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

报告的条款。

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

请有人告诉我完成这项任务的最佳方法是什么。 提前感谢您的反馈

【问题讨论】:

    标签: r replace tidyverse text-mining stringr


    【解决方案1】:

    这可能是要走的路......

    输入

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

    【讨论】:

    • 我想将“报告的术语”中的单词与错误的拼写单词匹配,然后更新与错误拼写单词相对的正确拼写单词。我已经相应地编写了代码以满足我的要求,但它没有按照预期的输出工作。报告术语_2 = list() for (i in df1$reported_term){ j
    【解决方案2】:

    即使将每个单词都与综合字典进行比较,文本校正也非常困难,您永远不知道未包含的单词是否拼写错误,名称等。

    那是说你怎么能解决你的问题?

    1. 您必须编写允许/更正单词的字典!

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

    3. 将比较中的每个单词替换为字典中高于某个归一化距离理论阈值(lv-距离/源单词长度)的匹配项。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-26
      • 1970-01-01
      • 2014-11-10
      • 2019-10-22
      • 1970-01-01
      • 2012-08-16
      • 1970-01-01
      • 2020-06-02
      相关资源
      最近更新 更多