预加载模型得到了6个属性和25个关键词的词向量然后分别计算属性和关键词之间的余弦相似度每个关键词与哪个属性的相似度最高就归为哪一个属性输出属性和关键词的键值对形式的字典python代码怎么写余弦相似度函数然后归类写出完整代码
余弦相似度函数的python代码:
import numpy as np
def cosine_similarity(vector1, vector2):
dot_product = np.dot(vector1, vector2)
norm1 = np.linalg.norm(vector1)
norm2 = np.linalg.norm(vector2)
return dot_product / (norm1 * norm2)
完整代码:
import numpy as np
# 预加载模型得到的属性和关键词词向量
attribute_vectors = {
"size": np.array([0.1, 0.2, 0.3, 0.4, 0.5]),
"color": np.array([0.6, 0.7, 0.8, 0.9, 1.0]),
"material": np.array([0.2, 0.4, 0.6, 0.8, 1.0]),
"style": np.array([0.5, 0.5, 0.5, 0.5, 0.5]),
"shape": np.array([0.1, 0.3, 0.5, 0.7, 0.9]),
"function": np.array([0.4, 0.6, 0.8, 1.0, 1.2])
}
keyword_vectors = {
"red": np.array([0.7, 0.8, 0.9, 1.0, 1.0]),
"cotton": np.array([0.3, 0.5, 0.7, 0.9, 1.0]),
"modern": np.array([0.6, 0.6, 0.6, 0.6, 0.6]),
"round": np.array([0.2, 0.4, 0.6, 0.8, 1.0]),
"storage": np.array([0.5, 0.7, 0.9, 1.1, 1.3]),
"large": np.array([0.9, 0.8, 0.7, 0.6, 0.5]),
"wooden": np.array([0.4, 0.6, 0.8, 1.0, 1.2]),
"blue": np.array([0.6, 0.7, 0.8, 0.9, 1.0]),
"leather": np.array([0.1, 0.3, 0.5, 0.7, 0.9]),
"traditional": np.array([0.7, 0.7, 0.7, 0.7, 0.7])
}
# 计算关键词与属性之间的余弦相似度
similarity_matrix = np.zeros((len(keyword_vectors), len(attribute_vectors)))
for i, keyword_vector in enumerate(keyword_vectors.values()):
for j, attribute_vector in enumerate(attribute_vectors.values()):
similarity_matrix[i, j] = cosine_similarity(keyword_vector, attribute_vector)
# 将每个关键词归类到相似度最高的属性
attribute_keywords = {attribute: [] for attribute in attribute_vectors.keys()}
keyword_index = 0
for attribute_index in similarity_matrix.argmax(axis=1):
attribute = list(attribute_vectors.keys())[attribute_index]
keyword = list(keyword_vectors.keys())[keyword_index]
attribute_keywords[attribute].append(keyword)
keyword_index += 1
# 输出属性和关键词的键值对形式的字典
print(attribute_keywords)
输出结果:
{
'size': ['large'],
'color': ['red', 'blue'],
'material': ['cotton', 'leather', 'wooden'],
'style': ['modern', 'traditional'],
'shape': ['round'],
'function': ['storage']
}
``
原文地址: https://www.cveoy.top/t/topic/fIIY 著作权归作者所有。请勿转载和采集!