Vector 比较上下文向量

Vector 比较上下文向量,vector,nlp,cosine-similarity,Vector,Nlp,Cosine Similarity,我使用向量来表示单词周围的上下文,我需要相互比较上下文。以下是我的问题的简化版本: 假设我有一个向量a=[1,1,15,2,0]。然后我有一个向量b=[0,0,15,0,0]和c=[1,1,11,0,1]。通过余弦相似性比较两个向量时,b最接近a。然而,因为向量表示上下文,所以在我的例子中,c更有意义,因为b只是一个上下文,恰好有一个单词与原文相同,并且分数相同 我如何返回c作为最相似的?另一个相似性度量?或者也许我的推理有缺陷 正如我所说,这是我问题的简化。我已经在规范化向量,并使用对数似然法

我使用向量来表示单词周围的上下文,我需要相互比较上下文。以下是我的问题的简化版本:

假设我有一个向量a=[1,1,15,2,0]。然后我有一个向量b=[0,0,15,0,0]和c=[1,1,11,0,1]。通过余弦相似性比较两个向量时,b最接近a。然而,因为向量表示上下文,所以在我的例子中,c更有意义,因为b只是一个上下文,恰好有一个单词与原文相同,并且分数相同

我如何返回c作为最相似的?另一个相似性度量?或者也许我的推理有缺陷

正如我所说,这是我问题的简化。我已经在规范化向量,并使用对数似然法对上下文单词进行评分

谢谢

使用。在下面的Python演示中,请记住函数cosine和jaccard返回距离是相似性的倒数,并阅读注释:

# Input all the data
In [19]: from scipy.spatial.distance import cosine, jaccard
In [24]: a
Out[24]: array([ 1,  1, 15,  2,  0])
In [25]: b
Out[25]: array([ 0,  0, 15,  0,  0])
In [26]: c
Out[26]: array([ 1,  1, 11,  0,  1])
# Calculate cosine similarity. I've scaled it by a factor of 100 for legibility
In [20]: 100*cosine(a,b)
Out[20]: 1.3072457560346473
In [21]: 100*cosine(c,a)
Out[21]: 1.3267032349480568
# Note c is slightly "further away" from a than b.
# Now let's see what Mr Jaccard has to say
In [28]: jaccard(a,b)
Out[28]: 0.75
In [29]: jaccard(a,c)
Out[29]: 0.59999999999999998
# Behold the desired effect- c is now considerably closer to a than b
# Sanity check- the distance between a and a is 0
In [30]: jaccard(a,a)
Out[30]: 0.0
PS存在更多的相似性度量,每个度量在不同的情况下都是合适的。你有充分的理由相信c应该比b更像a吗?你的任务是什么?如果你想了解更多关于这个主题的内容,我强烈推荐。警告:200页长。

请使用。在下面的Python演示中,请记住函数cosine和jaccard返回距离是相似性的倒数,并阅读注释:

# Input all the data
In [19]: from scipy.spatial.distance import cosine, jaccard
In [24]: a
Out[24]: array([ 1,  1, 15,  2,  0])
In [25]: b
Out[25]: array([ 0,  0, 15,  0,  0])
In [26]: c
Out[26]: array([ 1,  1, 11,  0,  1])
# Calculate cosine similarity. I've scaled it by a factor of 100 for legibility
In [20]: 100*cosine(a,b)
Out[20]: 1.3072457560346473
In [21]: 100*cosine(c,a)
Out[21]: 1.3267032349480568
# Note c is slightly "further away" from a than b.
# Now let's see what Mr Jaccard has to say
In [28]: jaccard(a,b)
Out[28]: 0.75
In [29]: jaccard(a,c)
Out[29]: 0.59999999999999998
# Behold the desired effect- c is now considerably closer to a than b
# Sanity check- the distance between a and a is 0
In [30]: jaccard(a,a)
Out[30]: 0.0

PS存在更多的相似性度量,每个度量在不同的情况下都是合适的。你有充分的理由相信c应该比b更像a吗?你的任务是什么?如果你想了解更多关于这个主题的内容,我强烈推荐。警告:200页长。

这些向量中的数字代表什么?这些向量中的数字代表什么?如果这些向量是我认为它们是词汇表中单词的索引,那么这种计算余弦相似度的方法毫无意义。而且,这种联系已经消失了。我把它们理解为共现计数。如果不是,我会编辑或删除我的帖子。这很公平。令人惊讶的是,这样一个模棱两可的问题会得到两张赞成票。我已经盯着计数向量看了这么久,以至于我都不认为它是模棱两可的:D@2er0:我自己对答案投了更高的票,因为它在评论中陈述的假设下解决了问题,但这并不能使问题变得更好。如果这些向量是我认为它们是词汇表中单词的索引,那么这种计算余弦相似性的方法毫无意义。而且,这种联系已经消失了。我把它们理解为共现计数。如果不是,我会编辑或删除我的帖子。这很公平。令人惊讶的是,这样一个模棱两可的问题会得到两张赞成票。我已经盯着计数向量看了这么久,以至于我都不认为它是模棱两可的:D@2er0当前位置我自己对答案投了更高的票,因为它在评论中陈述的假设下解决了问题,但这并不能使问题变得更好。