Python 使用sklearn哈希向量器获取相似性百分比

Python 使用sklearn哈希向量器获取相似性百分比,python,scikit-learn,vectorization,Python,Scikit Learn,Vectorization,我有一个python程序,它从几个站点获取文章并将它们存储在数据库中,在我的例子中,当我不想在数据库中添加新文章时,我应该检查它是否是重复的文章。我只想通过获取相似度百分比并为其设置阈值来完成这项工作(例如,我说如果(两个字符串的相似度百分比)>70%,那么新文章是重复的) 我的问题是找到相似度的百分比。现在我使用和SequenceMatcher类: diff = SequenceMatcher( None, article1.content, article2.content).rati

我有一个python程序,它从几个站点获取文章并将它们存储在数据库中,在我的例子中,当我不想在数据库中添加新文章时,我应该检查它是否是重复的文章。我只想通过获取相似度百分比并为其设置阈值来完成这项工作(例如,我说如果(两个字符串的相似度百分比)>70%,那么新文章是重复的)

我的问题是找到相似度的百分比。现在我使用和SequenceMatcher类:

diff = SequenceMatcher(
   None, article1.content, article2.content).ratio()
但这是不对的,我认为在这种情况下使用(?):


如何获得两个hashvector的相似度百分比(例如余弦距离)以及如何将其转换为百分比?感谢您的回答。

使用
哈希向量器的默认设置(特别是
norm=“l2”
),这两个向量之间的余弦相似性为

sim = (article1_vector * article2_vector.T).A[0, 0]
这实际上只是一个点积,通过一些技巧来摆脱SciPy稀疏矩阵格式

这使得
-1
1
之间具有相似性,因此您可以添加一个并除以二得到一个百分比

sim = (article1_vector * article2_vector.T).A[0, 0]