【问题标题】:Similarity of two terms contain spelling mistakes两个术语的相似性包含拼写错误
【发布时间】:2018-12-06 01:23:22
【问题描述】:

我正在尝试确定两个术语之间的相似性;一个拼写正确,另一个可能包含也可能不包含拼写错误。

为此,我现在使用 TFIDFvectorizer 对这两个术语进行矢量化,然后使用相似性方法来确定它们之间的相似性。

这适用于以下类型的示例:

Original term  | Input term  |  Similarity
---------------------------------------
red car        | red car     |  1.0
red car        | big red car |  0.75

但是,如果出现拼写错误,例如:

Original term  | Input term  |  Similarity
------------------------------------------
red car        | redd carr   |  0.0

它给出了0 的相似性,即使它们是有些相似的术语(我不排除得到1.0 的相似性,但目标是得到相似性> 0.0

我的一个考虑是将每个单词分解为 X 个字符,这样每个术语将是:

Original term = ['re', 'ed', 'd ', ' c', 'ca', 'ar']

Input term = ['re', 'ed', 'dd', 'd ', ' c', 'ca', 'ar', 'rr']

然后确定它们之间的相似度并计算平均相似度。

对于解决此问题的潜在方法,我非常感谢任何其他建议。

【问题讨论】:

    标签: python vectorization spell-checking similarity tfidfvectorizer


    【解决方案1】:

    difflibanu 对你有用吗? 我认为它可能适用于更长的序列。

    In[1]: import difflib
    In[5]: mr = difflib.SequenceMatcher()
    In[7]: mr.set_seqs('red car', 'redd carr') 
    In[8]: mr.ratio()
    Out[8]: 0.875
    In[9]: mr.set_seqs('red car', 'redd ship') 
    In[10]: mr.ratio()
    Out[10]: 0.5
    

    【讨论】:

    • 对不起,如果我的回答很幼稚,我看到你问的是我不熟悉的 TFIDFVECTORIZER。
    【解决方案2】:

    我建议您查看以下链接,其中显示了How to Write a Spelling Corrector

    出于 tf-idf 的目的,您可能还对获取单词的根感兴趣。 nltk 库,特别是 stem() 部分(检查以下 link)可以帮助您完成该过程。但是,如果您的问题只是在这些特定的单词上,您可以为这个拼写错误创建一个替换函数并在使用 tf-idf 之前将其传递。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-11-19
      • 1970-01-01
      • 2015-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多