1

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

为此,我现在使用 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']

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

对于解决这个问题的潜在方法,我真的很感激任何其他建议。

4

2 回答 2

1

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

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
于 2018-06-27T08:44:05.717 回答
1

我建议检查以下链接,它向您展示了 如何编写拼写校正器

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

于 2018-06-27T08:57:21.093 回答