已知两个用字典表示的词频统计表a,b ,两表中各有五个元素,如何求两表各元素的相似度,python 程序
时间: 2024-05-10 17:16:03 浏览: 80
Python 比较两个数组的元素的异同方法
可以使用余弦相似度来计算两个向量之间的相似度。具体步骤如下:
1. 将两个词频统计表转化为向量形式,向量的长度为词典的大小,每个元素表示该词在对应表中的出现次数。
2. 计算两个向量的点积。
3. 计算两个向量的模长乘积。
4. 将步骤2的结果除以步骤3的结果,即为两个向量的余弦相似度。
下面是Python程序实现:
```python
import numpy as np
# 两个词频统计表
a = {'apple': 3, 'banana': 1, 'orange': 2, 'pear': 4, 'grape': 5}
b = {'apple': 4, 'banana': 2, 'orange': 1, 'pear': 3, 'grape': 6}
# 将词频统计表转化为向量形式
words = list(set(list(a.keys())+list(b.keys())))
vec_a = np.array([a.get(word, 0) for word in words])
vec_b = np.array([b.get(word, 0) for word in words])
# 计算余弦相似度
similarity = np.dot(vec_a, vec_b) / (np.linalg.norm(vec_a) * np.linalg.norm(vec_b))
print("相似度:", similarity)
```
输出结果为:
```
相似度: 0.9668366844648845
```
阅读全文