gpt4 book ai didi

python - 列表中两个单词之间的余弦相似度

转载 作者:行者123 更新时间:2023-11-30 23:13:09 25 4
gpt4 key购买 nike

我正在定义一个函数,它接受单词列表并返回列表中彼此之间具有非零余弦相似度的单词的信息(以及相似度值)。

谁能帮我解决这个问题。我在想如果我能得到一个预先计算的 word2vec 矢量文件那么它会非常有帮助,但互联网上没有。

最佳答案

您可以定义这两个函数

def word2vec(word):
from collections import Counter
from math import sqrt

# count the characters in word
cw = Counter(word)
# precomputes a set of the different characters
sw = set(cw)
# precomputes the "length" of the word vector
lw = sqrt(sum(c*c for c in cw.values()))

# return a tuple
return cw, sw, lw

def cosdis(v1, v2):
# which characters are common to the two words?
common = v1[1].intersection(v2[1])
# by definition of cosine distance we have
return sum(v1[0][ch]*v2[0][ch] for ch in common)/v1[2]/v2[2]

并像本示例中那样使用它们

>>> a = 'safasfeqefscwaeeafweeaeawaw'
>>> b = 'tsafdstrdfadsdfdswdfafdwaed'
>>> c = 'optykop;lvhopijresokpghwji7'
>>>
>>> va = word2vec(a)
>>> vb = word2vec(b)
>>> vc = word2vec(c)
>>>
>>> print cosdis(va,vb)
0.551843662321
>>> print cosdis(vb,vc)
0.113746579656
>>> print cosdis(vc,va)
0.153494378078

顺便说一句,word2vec您在标签中提到的内容是完全不同的业务,这需要我们中的一个人花大量的时间和精力来研究它,猜猜怎么着,我不是那个人......

关于python - 列表中两个单词之间的余弦相似度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29484529/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com