python中文相似度_最准的中文文本相似度计算工具

text2vec是一个用于中文文本向量化和相似度计算的工具,支持词、句子向量表示。它提供了基准方法、词移距离(WMD)以及基于bm25的查询和文档相似度比较。实验结果显示,简单的基准方法在大多数情况下表现良好,而词移距离在某些数据集上与基准方法相当。安装text2vec可以使用pip3 install text2vec或从GitHub克隆并安装。
摘要由CSDN通过智能技术生成

text2vec

text2vec, chinese text to vetor.(文本向量化表示工具,包括词向量化、句子向量化)

Feature

文本向量表示

字词粒度,通过腾讯AI Lab开源的大规模高质量中文词向量数据(800万中文词),获取字词的word2vec向量表示。

句子粒度,通过求句子中所有单词词嵌入的平均值计算得到。

篇章粒度,可以通过gensim库的doc2vec得到,应用较少,本项目不实现。

文本相似度计算

基准方法,估计两句子间语义相似度最简单的方法就是求句子中所有单词词嵌入的平均值,然后计算两句子词嵌入之间的余弦相似性。

词移距离(Word Mover’s Distance),词移距离使用两文本间的词嵌入,测量其中一文本中的单词在语义空间中移动到另一文本单词所需要的最短距离。

query和docs的相似度比较

rank_bm25方法,使用bm25的变种算法,对query和文档之间的相似度打分,得到docs的rank排序。

Result

文本相似度计算

基准方法

尽管文本相似度计算的基准方法很简洁,但用平均词嵌入之间求余弦相似度的表现非常好。实验有以下结论:

1. 简单word2vec嵌入比GloVe嵌入表现的好

2. 在用word2vec时,尚不清楚使用停用词表或TF-IDF加权是否更有帮助。在STS数据集上,有一点儿帮助;在SICK上没有帮助。

仅计算未加权的所有word2vec嵌入平均值表现得很好。

3. 在使用GloVe时,停用词列表对于达到好的效果非常重要。利用TF-IDF加权没有帮助。

base1.jpg

词移距离

基于我们的结果,好像没有什么使用词移距离的必要了,因为上述方法表现得已经很好了。只有在STS-TEST数据集上,而且只有在有停止词列表的情况下,词移距离才能和简单基准方法一较高下。

move1.jpg

Install

pip3 install text2vec

or

git clone https://github.com/shibing624/text2vec.git

cd text2vec

python3 setup.py install

Usage:

get text vector

import text2vec

char = '我'

result = text2vec.encode(char)

print(type(result))

print(char, result)

word = '如何'

print(word, text2vec.encode(word))

a = '如何更换花呗绑定银行卡'

emb = text2vec.encode(a)

print(a, emb)

output:

我 [ 0.09639428 -0.14142498 0.02505628 0.0041334 0.0891804 -0.06853037

0.02480385 -0.00202681 0.04466304 0.05935134 0.06626346 0.02792982

-0.00122364 -0.03564163 0.07814336 -0.01186718 -0.11831381 -0.11164719

-0.02129865 -0.07289924 0.04736083 0.03148666 0.0069021 0.06107369

0.05683238 0.03053819 -0.08670152 0.05620533 0.07051748 -0.

Python中有多种方法可以实现简单的文本相似度分析操作,下面将详细介绍一种常用的方法。 一、准备工作: 1. 导入必要的库:从sklearn中导入CountVectorizer和cosine_similarity。 2. 定义文本列表:将要比较的文本存储在一个列表中。 二、数据预处理: 1. 实例化CountVectorizer:使用CountVectorizer将文本转换为词频矩阵,每个文本中的每个词都是一个特征。 2. 计算词频矩阵:调用fit_transform方法将文本列表作为参数传递给CountVectorizer实例,得到词频矩阵。 三、相似度分析: 1. 计算余弦相似度矩阵:将词频矩阵作为参数传递给cosine_similarity函数,得到文本之间的余弦相似度矩阵。 四、结果解释: 1. 解释余弦相似度矩阵:余弦相似度矩阵是一个对称矩阵,对角线上的元素都是1,表示文本与自身的相似度为最大值1;非对角线上的元素表示两个不同文本之间的相似度,值越大表示相似度越高。 示例代码如下: ```python from sklearn.feature_extraction.text import CountVectorizer from sklearn.metrics.pairwise import cosine_similarity # 定义文本列表 texts = ['这是一个文本。', '这是另一个文本。', '这是一个不同的文本。'] # 实例化CountVectorizer并计算词频矩阵 vectorizer = CountVectorizer() word_count_matrix = vectorizer.fit_transform(texts) # 计算余弦相似度矩阵 cosine_sim_matrix = cosine_similarity(word_count_matrix, word_count_matrix) # 解释余弦相似度矩阵 for i in range(len(texts)): for j in range(len(texts)): print(f"文本{i+1}与文本{j+1}的相似度为:{cosine_sim_matrix[i][j]}") ``` 这个示例中,我们使用CountVectorizer将文本转换为词频矩阵,然后使用cosine_similarity计算余弦相似度矩阵。最后,我们打印出每个文本与其他文本相似度
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值