我要计算两个向量的余弦相似性,定义计算函数如下
#计算两个句向量的余弦相似性值
def cosine_similarity(vec1, vec2):
a= np.array(vec1)
b= np.array(vec2)
cos1 = np.sum(a * b)
cos21 = np.sqrt(sum(a ** 2))
cos22 = np.sqrt(sum(b ** 2))
cosine_value = cos1 / float(cos21 * cos22)
return cosine_value
从文件读入已经训练好的词向量,格式如图所示
for doc_vec in doc_vec_f.readlines():
temp = doc_vec.split()
for i in range(len(temp)):
if i==0:
continue
else:
#print(type(temp[i]))
doc_vec_one.append(temp[i])
doc_vec_list.append(doc_vec_one)
将处理好的文档向量列表带入函数计算报错
ufunc 'subtract' did not contain a loop with signature matching types (dtype('<U1580'), dtype('<U1580')) -> dtype('<U1580')
因为np.array()的参数不能是string,查看temp[i]的类型是string,使用float(temp[i])转换为数值后,问题解决。
参考
https://stackoverflow.com/questions/59196051/numpy-core-exceptions-ufunctypeerror-ufunc-subtract-did-not-contain-a-loop-w