我有一个带有公司名称列的数据集,我必须在公司组中重新组合它们。 例如: 戴尔英国、戴尔法国、戴尔美国=>;戴尔集团 数据不干净,有些单元格可能包含点或错拼等错误。你知道吗
我尝试了一些类似模糊比较的方法,但有时组前缀很小,比如3M group,名称的结尾也比较长。你知道吗
你有我的歌吗?你知道吗
谢谢你,对不起我的英语
数据:
import pandas as pd
from fuzzywuzzy import fuzz
import pprint
import re
df = pd.read_csv("data2.csv", nrows=100)
l = list(df["SUPPLIER_NAME"])
#print(df["SUPPLIER_NAME"])
liste = []
for i in range(len(l)):
liste2 = []
liste2.append(l[i])
for j in range(len(l)):
if i!=j:
if fuzz.partial_ratio(l[i], l[j])>60:
liste2.append(l[j])
liste.append(liste2)
pprint.pprint(liste)
SUPPLIER_NAME
Dell France
Dell UK
Del US
3M Italy
3M COMPANY
3M SCIENCE
3.M SPAIN
3 M
MCDONALDS France
MC DONALDS COMPANY
MCDONALD'S INC.
输出:
[['Dell France', 'Dell UK', 'Del US', 'MCDONALDS France'],
['Dell UK', 'Dell France', 'Del US'],
['Del US', 'Dell France', 'Dell UK'],
['3M Italy', '3 M '],
['3M COMPANY', '3.M SPAIN', '3 M ', 'MC DONALDS COMPANY'],
['3M SCIENCE', '3.M SPAIN', '3 M '],
['3.M SPAIN', '3M COMPANY', '3M SCIENCE', '3 M '],
['3 M ', '3M Italy', '3M COMPANY', '3M SCIENCE', '3.M SPAIN'],
['MCDONALDS France', 'Dell France', 'MC DONALDS COMPANY', "MCDONALD'S INC."],
['MC DONALDS COMPANY', '3M COMPANY', 'MCDONALDS France', "MCDONALD'S INC."],
["MCDONALD'S INC.", 'MCDONALDS France', 'MC DONALDS COMPANY']]
1。预处理
从基本的清理开始,即删除特殊字符/标点符号、降低大小写等,以实现基本的规范化。在这里,你可以使用简单的字符串函数,比如replace,lower,等等。找到here一个关于预处理的中型博客,供你参考。你知道吗
2。计数分析
提取使用计数频率更正单词,即如果单词出现的频率超过某个特定的频率/百分比,则将其添加到正确的单词列表中。你知道吗
(您可以在前两个步骤之间迭代以优化预处理并获得适当的列表)
三。拼写检查
下一步可以使用自定义词典来应用拼写检查,即使用步骤2中的列表作为拼写检查算法的基础。python中的拼写检查算法有多种选择,例如symspell、pyspellchecker等
第四条。模糊匹配
对每个名字进行迭代,从公司列表中找出最佳模糊匹配(在步骤2中实现)。fuzzy-wuzzy是这里可以使用的最好的python实现。你知道吗
相关问题 更多 >
编程相关推荐