Python将数据集

时间:2018-06-18 22:47:24

标签: python pandas cluster-analysis string-matching fuzzywuzzy

我有一个像这样的输入表:

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

我正在搜索不同的主题,我发现thisthis只是名称匹配而没有进行群集。另外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)]

但仍然不知道如何使用它进行聚类。

1 个答案:

答案 0 :(得分:0)

这可以使用 branchA 来完成:

string-grouper

string-grouper