Dio*_*Dio 5 python cluster-analysis string-matching pandas 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
Run Code Online (Sandbox Code Playgroud)
我想根据模糊模糊对类似的字符串进行分组。因此,在应用模糊匹配后,所有超过某个相似度阈值(如 > %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
Run Code Online (Sandbox Code Playgroud)
我正在搜索不同的主题,我发现这个和这个只是名称匹配而不是聚类。此外,这个只显示了最佳匹配,它对我没有帮助。这个页面也解释了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)
Run Code Online (Sandbox Code Playgroud)
输出:
[('stackoverflow', 100), ('stack, overflow', 93), ('stikoverflow', 88)]
Run Code Online (Sandbox Code Playgroud)
但仍然不知道如何使用它进行集群。
Chr*_*erg -1
这可以使用以下方法来完成string-grouper
:
from string_grouper import group_similar_strings
group_similar_strings(data_set['name'])
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1736 次 |
最近记录: |