python - 有没有办法为余弦相似度高于 0.8 的名称分配唯一值?
问题描述
我能够计算不同名称之间的余弦相似度。之后,我想为那些相似度 > 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.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
我希望所有相似的名称在字典中具有相同的值。
解决方案
推荐阅读
- flutter - 为什么不能为 ListView 加载更多数据
- html - 尝试对齐其父容器为标题的容器内的项目
- xamarin - 在 Xamarin Forms 中实施 Adobe Analytics 的步骤是什么?
- python - 根据坐标更改二维列表
- flutter - Flutter 小部件在列中的自动高度
- ios - 知道用户何时导航到另一个屏幕
- ubuntu - Yocto 的操作系统兼容性列表是否适用于所有 Yocto 版本?
- python - 我想从列表列表中找到最常见的符号序列
- mysql - Mysql-query-with-groupby-非常慢
- javascript - 异步等待渲染组件反应