用词向量模型,用python,逐行比较excel第一、第二列的两个单元格之间的文本的相似度,并将结果写入第三列
时间: 2024-05-12 13:19:03 浏览: 12
下面是一个示例代码,使用gensim库中的Word2Vec模型计算文本相似度,并将结果写入Excel第三列:
```python
import pandas as pd
import numpy as np
import gensim
from gensim.models import Word2Vec
# 读取Excel文件
df = pd.read_excel('example.xlsx')
# 加载Word2Vec模型
model = Word2Vec.load('model.bin')
# 定义计算相似度的函数
def calc_similarity(text1, text2):
# 分词并去掉停用词
words1 = [word for word in jieba.cut(text1) if word not in stop_words]
words2 = [word for word in jieba.cut(text2) if word not in stop_words]
# 计算词向量的平均值
vec1 = np.mean([model.wv[word] for word in words1 if word in model.wv], axis=0)
vec2 = np.mean([model.wv[word] for word in words2 if word in model.wv], axis=0)
# 计算余弦相似度
sim = np.dot(vec1, vec2) / (np.linalg.norm(vec1) * np.linalg.norm(vec2))
return sim
# 遍历Excel表格,计算相似度并写入第三列
for i in range(len(df)):
text1 = str(df.iloc[i, 0])
text2 = str(df.iloc[i, 1])
sim = calc_similarity(text1, text2)
df.iloc[i, 2] = sim
# 将结果保存到Excel文件
df.to_excel('example_with_similarity.xlsx', index=False)
```
需要注意的是,这里使用了中文分词和停用词处理,需要提前安装jieba库并下载停用词表。另外,使用Word2Vec模型计算相似度需要加载预先训练好的模型,此处假设模型已经保存为model.bin文件。