计算data1.txt 、data2.txt 、data3.txt这三篇文档之间的相似度 代码
时间: 2024-06-15 11:09:03 浏览: 80
分别基于CNN、Transformer、Bert和LSTM模型实现语义相似度计算的编码(语义理解)能力比较源码+报告.zip
计算文档之间的相似度可以使用文本相似度算法,常见的算法有余弦相似度和Jaccard相似度。下面是使用Python代码计算三篇文档之间余弦相似度的示例:
```python
import math
# 读取文档内容
def read_file(file_path):
with open(file_path, 'r', encoding='utf-8') as f:
content = f.read()
return content
# 计算词频
def calculate_word_frequency(content):
words = content.split()
word_frequency = {}
for word in words:
if word in word_frequency:
word_frequency[word] += 1
else:
word_frequency[word] = 1
return word_frequency
# 计算余弦相似度
def calculate_cosine_similarity(doc1, doc2):
word_frequency1 = calculate_word_frequency(doc1)
word_frequency2 = calculate_word_frequency(doc2)
# 计算向量点积
dot_product = 0
for word in word_frequency1:
if word in word_frequency2:
dot_product += word_frequency1[word] * word_frequency2[word]
# 计算向量长度
length1 = math.sqrt(sum([freq ** 2 for freq in word_frequency1.values()]))
length2 = math.sqrt(sum([freq ** 2 for freq in word_frequency2.values()]))
# 计算余弦相似度
similarity = dot_product / (length1 * length2)
return similarity
# 读取文档内容
doc1 = read_file('data1.txt')
doc2 = read_file('data2.txt')
doc3 = read_file('data3.txt')
# 计算相似度
similarity_1_2 = calculate_cosine_similarity(doc1, doc2)
similarity_1_3 = calculate_cosine_similarity(doc1, doc3)
similarity_2_3 = calculate_cosine_similarity(doc2, doc3)
print("data1.txt和data2.txt的相似度:", similarity_1_2)
print("data1.txt和data3.txt的相似度:", similarity_1_3)
print("data2.txt和data3.txt的相似度:", similarity_2_3)
```
请注意,以上代码仅提供了一种计算文档相似度的方法,具体的相似度计算方法可以根据实际需求选择。另外,需要将`data1.txt`、`data2.txt`、`data3.txt`替换为实际的文件路径。
阅读全文