Python 有没有办法为余弦相似度高于0.8的名称指定唯一值?
我能够计算不同名字之间的余弦相似性。 之后,我想为那些相似性>0.8的名称分配唯一的值 我曾尝试创建一个字典,其中包含名称作为键,并将唯一值作为值Python 有没有办法为余弦相似度高于0.8的名称指定唯一值?,python,pandas,machine-learning,nlp,Python,Pandas,Machine Learning,Nlp,我能够计算不同名字之间的余弦相似性。 之后,我想为那些相似性>0.8的名称分配唯一的值 我曾尝试创建一个字典,其中包含名称作为键,并将唯一值作为值 dict1 = {} ui = 0 def word2vec(word): from collections import Counter from math import sqrt cw = Counter(word) sw = set(cw) lw = sqrt(sum(c*c for c in cw.
dict1 = {}
ui = 0
def word2vec(word):
from collections import Counter
from math import sqrt
cw = Counter(word)
sw = set(cw)
lw = sqrt(sum(c*c for c in cw.values()))
return cw, sw, lw
def cosdis(v1, v2):
common = v1[1].intersection(v2[1])
return sum(v1[0][ch]*v2[0][ch] for ch in common)/v1[2]/v2[2]
list1 = list(df['Name'].unique())
for m in list1:
for i in range(0, len(list1)):
vec1 = word2vec(m)
vec2 = word2vec(list1[i])
x = cosdis(vec1,vec2)
if(x >=.80):
dict1[m, list[i]] = 'A' + str(ui)
else:
pass
ui = ui + 1
我希望所有相似的名字在字典中都有相同的值