两个词的相似性包含拼写错误

时间:2018-06-27 08:16:41

标签: python vectorization spell-checking similarity tfidfvectorizer

我试图确定两个词之间的相似性;一个拼写正确,另一个可能包含或可能不包含拼写错误。

现在要执行此操作,我先使用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']

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

对于可能解决此问题的其他建议,我将非常感谢。

2 个答案:

答案 0 :(得分:1)

difflib对您有帮助吗? 我认为它可能适合更长的顺序。

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

答案 1 :(得分:1)

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

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