我有一个像这样的输入表:
In [182]: data_set
Out[182]:
name ID
0 stackoverflow 123
1 stikoverflow 322
2 stack, overflow 411
3 internet.com 531
4 internet 112
5 football 001
我想基于fuzzywuzzy对类似的字符串进行分组。因此,在应用模糊匹配之后,具有多于一些相似性阈值的所有字符串(例如>%90相似性)将组合在一起。所以期望的输出是:
In [182]: output
Out[182]:
name ID group
0 stackoverflow 123 1
1 stikoverflow 322 1
2 stack, overflow 411 1
3 internet.com 531 2
4 internet 112 2
5 football 001 3
我正在搜索不同的主题,我发现this和this只是名称匹配而没有进行群集。另外this只显示最佳匹配,但它对我没有帮助。这个page也解释了关于需要预先设置簇数的k-means聚类,这在这种情况下是不实际的。
更新:
我认为process
包中的fuzzywuzzy
方法会在某种程度上处理我的问题。但是这种方法只将字符串与列表进行比较而不是列表列表:
from fuzzywuzzy import process
with open("data-set.txt", "r") as f:
data = f.read().split("\n")
process.extract("stackoverflow",data, limit=3)
输出:
[('stackoverflow', 100), ('stack, overflow', 93), ('stikoverflow', 88)]
但仍然不知道如何使用它进行聚类。