欢迎访问宙启技术站
智能推送

使用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计算中文文本之间的相似度了。