0
点赞
收藏
分享

微信扫一扫

『NLP学习笔记』向量与矩阵、矩阵与矩阵的余弦相似度

拾杨梅记 2022-03-12 阅读 159
向量与矩阵、矩阵与矩阵的余弦相似度

文章目录

一. 余弦相似度计算

二. 向量与矩阵、矩阵与矩阵的余弦相似度

三. Python具体实现

3.1. 向量与向量

import numpy as np

a = np.array([1, 2, 1, 2, 3, 5, 6, 2])
b = np.array([1, 2, 1, 4, 6, 5, 5, 2])
print(a.shape, b.shape)

def vector_vector(a, b):
    """ 向量与向量之间的余弦相似性 """
    return np.dot(a, b) / (np.linalg.norm(a)*np.linalg.norm(b))

vector_vector(a, b)

3.2. 向量与矩阵

import numpy as np

a = np.array([1, 2, 1, 2, 3, 5, 6, 2])
B = np.array([
    [1, 2, 1, 2, 3, 5, 6, 2],
    [1, 2, 1, 2, 3, 5, 6, 2],
    [2, 3, 3, 2, 1, 2, 1, 1],
    [2, 2, 1, 1, 1, 2, 4, 4]
])
print(a.shape, B.shape)

def vector_vector(a, B):
    """ 向量与矩阵之间的余弦相似性 """
    return  np.dot(B, a) / (np.linalg.norm(a) * np.linalg.norm(B, axis=1))

vector_vector(a, B)

3.3. 矩阵与矩阵

import numpy as np

B = np.array([
    [1, 2, 1, 2, 3, 5, 6, 2],
    [1, 2, 1, 2, 3, 5, 6, 2],
    [2, 3, 3, 2, 1, 2, 1, 1],
    [2, 2, 1, 1, 1, 2, 4, 4]
])

C = np.array([
    [1, 2, 1, 2, 3, 5, 6, 2],
    [2, 1, 1, 2, 1, 2, 3, 3],
    [2, 3, 3, 2, 1, 2, 1, 1],
    [2, 2, 1, 1, 1, 2, 4, 4]
])

def vector_vector(A, B):
    """ 矩阵与矩阵之间的余弦相似性 """
    return  np.dot(A, B.T).diagonal() / (np.linalg.norm(A, axis=1) * np.linalg.norm(B, axis=1))

vector_vector(B, C)

四. 参考文献

举报

相关推荐

0 条评论