使用gensim进行中文文本的文本相似度计算
发布时间:2024-01-18 18:44:16
Gensim是一个用于自然语言处理的Python库,它提供了一种简单而有效的方法来计算文本之间的相似度。在本示例中,我们将使用gensim来计算中文文本之间的相似度。
首先,我们需要安装gensim库。可以使用pip命令来安装:
pip install gensim
接下来,让我们来了解如何使用gensim计算中文文本的相似度。
from gensim.models import Word2Vec
from gensim.similarities import WmdSimilarity
import jieba
# 创建一个简单的文本集合
documents = [
"我喜欢吃苹果",
"苹果好吃",
"我喜欢吃香蕉",
"香蕉好吃",
"我喜欢吃橙子",
"橙子好吃",
]
# 将每个文本进行分词
tokenized_docs = [list(jieba.cut(doc)) for doc in documents]
# 使用Word2Vec模型训练词向量
model = Word2Vec(tokenized_docs, min_count=1, size=100)
# 创建WmdSimilarity对象
instance = WmdSimilarity(tokenized_docs, model, num_best=2)
# 输入一个查询文本
query = "我喜欢吃水果"
# 对查询文本进行分词
query_tokens = list(jieba.cut(query))
# 计算查询文本与文本集合中每个文本的相似度
sims = instance[query_tokens]
# 打印相似度最高的两个文本
for i in range(len(sims)):
print("Query document:", query)
print("Similar document", i+1)
print("Similarity score:", sims[i][1])
print(documents[sims[i][0]])
print()
在上面的示例中,我们首先创建了一个包含一些文本的文本集合。然后,我们使用jieba库对每个文本进行分词。为了计算词向量,我们使用Word2Vec模型对分词后的文本进行训练。
然后,我们创建了一个WmdSimilarity对象。该对象需要分词后的文本、Word2Vec模型和要返回的相似度结果的数量。
接下来,我们输入一个查询文本,并对其进行分词。然后,我们使用WmdSimilarity对象计算查询文本与文本集合中每个文本的相似度。
最后,我们打印出具有最高相似度得分的两个文本和相似度得分。在我们的例子中,如果查询文本是"我喜欢吃水果",输出将是:
Query document: 我喜欢吃水果 Similar document 1 Similarity score: 0.96547076 我喜欢吃苹果 Query document: 我喜欢吃水果 Similar document 2 Similarity score: 0.89547926 苹果好吃
这样,我们就可以使用gensim计算中文文本之间的相似度了。
