'''
计算余弦相似度
'''
import jieba
import numpy as np
def get_word_vector():
"""
w = np.ones((3,4))
q = np.ones((3,4"))
print(w)
print(np.sum(w * q))
"""
s1 = input("句子1:")
s2 = input("句子2:")
cut1 = jieba.cut(s1)
cut2 = jieba.cut(s2)
list_word1 = (','.join(cut1)).split(',')
list_word2 = (','.join(cut2)).split(',')
print(list_word1)
print(list_word2)
key_word = list(set(list_word1 + list_word2))#取并集
print(key_word)
word_vector1 = np.zeros(len(key_word))#给定形状和类型的用0填充的矩阵存储向量
word_vector2 = np.zeros(len(key_word))
for i in range(len(key_word)):#依次确定向量的每个位置的值
for j in range(len(list_word1)):#遍历key_word中每个词在句子中的出现次数
if key_word[i] == list_word1[j]:
word_vector1[i] += 1
for k in range(len(list_word2)):
if key_word[i] == list_word2[k]:
word_vector2[i] += 1
print(word_vector1)#输出向量
print(word_vector2)
return word_vector1, word_vector2
def cosine():
v1, v2 = get_word_vector()
return float(np.sum(v1 * v2))/(np.linalg.norm(v1) * np.linalg.norm(v2))
print(cosine())
肯定可以的呢,需要重新写一遍,比较费时间
你好,我是问答小助手,非常抱歉,本次您提出的有问必答问题,目前超出我们的服务范围,暂时无法为您解答。
首次提问人员可免费体验一次有问必答服务。目前首次提问的问题服务范围为:Java开发、数据库等领域专业技术问题,为您提供问题的解决思路和指导。不提供源码代写、项目文档代写、论文代写、安装包资源发送或安装指导等服务哦~
我们后续会持续优化,扩大我们的服务范围,为您带来更好地服务。