向量之间相似度计算的若干方式

向量之间相似度计算的若干方式

假定存在向量Q与向量K,计算两者之间的相似度。

一. 传统基于距离度量的相似度计算

①欧氏距离

f=\sum_{k=1}^n{\left ( Q_i-Ki \right )^2}

import numpy
dist = numpy.sqrt(numpy.sum(numpy.square(Q - K)))
# or
dist = numpy.linalg.norm(Q- K)

②余弦距离

f=\frac{Q^T\cdot K}{\left \| Q \right \|\cdot \left \| K \right \|}

import numpy
from scipy.spatial.distance import pdist

dist = 1 - numpy.dot(Q,K)/(numpy.linalg.norm(Q)*numpy.linalg.norm(K))
# or
dist = pdist(numpy.vstack([Q,K]),'cosine')

二. 深度学习中的相似度计算

①点乘

f\left (Q,K \right )=Q^TK

②加权点乘

f\left ( Q,K \right )=Q^TWK

③拼接

f\left(Q,K \right )=W[Q,K]               [\cdot ]表示拼接操作

④感知器

f\left(Q,K \right )=V^Ttanh\left(WQ+UK \right )

上述四种方式均可通过sigmoid或者softmax函数来实现相似度的归一化

 

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Simhash算法可以用来计算每行文本之间相似度。具体步骤如下: 1. 对于每行文本,使用Simhash算法生成一个长度为n的二进制哈希值。其中n是哈希值的长度,一般取64位或128位。 2. 对于两行文本,可以通过计算它们的Simhash值之间的海明距离来判断它们的相似度。海明距离指的是两个二进制数对应位不同的个数。 3. 如果两行文本的Simhash值之间的海明距离小于等于k(k是一个设定的阈值),则认为它们相似。否则认为它们不相似。 4. 可以将所有的文本按照相似度分成若干个簇,相似度高的文本归到同一个簇中。 5. 在对文本进行相似度计算时,可以使用一些优化方法来提高计算效率,比如对Simhash值进行预处理,或者使用倒排索引等技术。 总之,Simhash算法可以快速准确地计算每行文本之间相似度,适用于文本去重、文本聚类等应用场景。 ### 回答2: SimHash算法是一种用于计算文本相似度的算法。它通过将每个文本表示为一个固定长度的二进制位串,根据二进制位的相异程度来判断文本的相似度。 具体来说,SimHash算法的计算过程如下: 1. 对于每行文本,首先将其进行分词和预处理,如去除停用词、标点符号等,得到一组特征词。 2. 初始化一个长度为64的二进制位串(可以根据具体需求设置其他长度),所有位初始值为0。 3. 对于特征词组成的集合,对每个特征词计算其哈希值(可以使用常见的哈希函数如MD5、SHA1)。 4. 对每个哈希值,将其转化为一个长度为64的二进制位串,并根据哈希值的每一位是0还是1,将相应位置的二进制位加上1或减去1。 5. 遍历所有特征词的哈希值,累加每个二进制位的值。 6. 对累加结果的每个二进制位进行判断,如果大于0,则将对应位置置1,否则置0。 7. 经过以上步骤,每行文本都被表示为一个长度为64的SimHash值。 8. 计算任意两行文本的相似度,可以通过计算两个SimHash值的汉明距离来衡量。汉明距离是指两个二进制位串不同位的个数。 通过上述计算,可以得到每行文本之间相似度。汉明距离越小,表示文本越相似;汉明距离越大,表示文本越不相似。 SimHash算法有较好的计算效率和准确度,在文本去重、文本聚类等领域具有广泛的应用价值。 ### 回答3: SimHash算法是一种用于计算文本相似度的方法。它通过将每行文本转化为一个固定长度的二进制数,然后比较这些二进制数的相似程度来衡量文本的相似度。 具体而言,SimHash算法首先将每行文本转化为特征向量。这个过程通常包括分词、去停用词、词干提取等预处理步骤。然后,通过对每个词的Hash值进行加权求和,得到文本的SimHash值。 接下来,计算每行文本之间相似度。通常情况下,可以使用汉明距离来衡量两个二进制数的相似程度。汉明距离定义为两个二进制数之间不同位的数量。如果两个SimHash值的汉明距离越小,说明它们的相似度越高。 因此,可以通过依次计算每行文本的SimHash值,并计算其与其他行文本之间的汉明距离,来得到每行文本之间相似度。具体而言,可以计算每行文本与其他行文本的汉明距离,并通过设定一个阈值来判断它们是否相似。如果汉明距离小于阈值,则认为两行文本相似。 需要注意的是,SimHash算法是一种近似计算的方法,它在计算效率和准确度之间做了权衡。因此,在使用SimHash算法计算文本相似度时,需要根据实际需求选择合适的参数和阈值,以获得满足要求的结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值