模糊匹配-方法1 Python 结巴分词

时间:2024-03-07 15:47:36

目前有很多touchpoint去获取用户信息。 

但是由于很多应用,app等,或者用户的注册覆盖率尚未普及如wechat or alipay。所以对于一些非验证用户,需要去做一些模糊匹配。 

 

比方说用户登录信息并未第一时间被识别为已知用户。 

则需要和用户库内的用户信息做对比,比方说,名字,公司。 

 

下列代码即为最基本的匹配,主要是2个原则

1.名字是否完全相同

2.公司的名字有相同的文字的字符串有多长。

后续在对比的时候,可以加入对于顺序的比较。 

即为,abcd和abce,dbae这两者目前得分是一样的,但是引入对于顺序的固定会大不相同。 但是由于目前公司是有意义的名词,所以对此进行了分词,选用了jieba分词。但是坦白说分的不是特别的细。分出来的词其实本身是带有一定顺序的。所以也可以暂时不考虑顺序的问题。

 

 

============

import pandas as pd
import jieba

def print_hi():
attendee = pd.read_excel(\'C:\\Users\\E622844\\Downloads\\Test1.xlsx\',sheet_name=\'Sheet2\')
account = pd.read_excel(\'C:\\Users\\E622844\\Downloads\\Test1.xlsx\',sheet_name=\'Sheet1\')
# test = jieba.cut(name,cut_all=False)\'\'
attendee = attendee.values
account = account.values
Sheet2={}
for i in attendee:
HCO=[]
temp = jieba.cut(i[1], cut_all=False)
for a in temp:
HCO.append(a)
Sheet2[i[0]] = HCO
print(Sheet2)
Sheet1 = {}
for i in account:
if i[1] not in Sheet1:
Sheet1[i[1]] = []
Sheet1[i[1]].append(i[0])
print(Sheet1)
# HCO = {}
# test=[]
# temp = jieba.cut(i[0], cut_all=False)
# for a in temp:
# test.append(a)
# HCO[i[2]] = test
# Sheet1[i[1]] = HCO
# print(Sheet1[\'王开颜\'])
#2个table读写完毕之后开始比较了shee2去找Sheet1
for S2_YS in Sheet2:
if S2_YS in Sheet1:
for HCO in Sheet1[S2_YS]:
temp = jieba.cut(HCO, cut_all=False)
test = []
for a in temp:
test.append(a)
# print(test)
Y= list(set(Sheet2[S2_YS]).intersection(test))
# print(Y)
str=\'\'.join(Y)
if(\'result\' not in vars()):
result = 0
if len(str)>result:
result=len(str)
resultstr=str
#print(result)
# if length()
# print(S2_YS)
# print(Sheet2[S2_YS])
# print(Y)

data={\'a\':S2_YS,\'b\':Sheet2[S2_YS],\'C\':resultstr,\'D\':result}
writer=pd.ExcelWriter(\'C:\\Users\\E622844\\Downloads\\Test1.xlsx\')
df1=pd.DataFrame(data)
df1.to_excel(writer,\'Final\')
writer.save()

#此处我需要增加一列在S2
if __name__ == \'__main__\':
print_hi()