Python将数据中的相似记录(字符串)分组

2024-10-01 07:27:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这样一个输入表:

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

我想根据fuzzyfuzzy对相似的字符串进行分组。因此,在应用模糊匹配之后,所有具有超过某个相似度阈值(比如,>;%90相似度)的字符串将组合在一起。因此,期望的输出是:

^{pr2}$

我在搜索不同的主题时发现this和{a2}它们只是名称匹配,没有进行聚类。另外this一个只显示最佳匹配,它对我没有帮助。这个page还解释了k-均值聚类,它需要预先设置簇的数量,这在本例中是不实际的。在

更新:

我发现fuzzywuzzy包中的process方法可以在一定程度上解决我的问题。但此方法只比较字符串与列表,而不比较列表与列表:

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)]

但是我还是不知道如何使用它来聚类。在


Tags: 方法字符串in列表datastack聚类this