安卓计算中文句子余弦相似度
时间: 2023-11-07 09:06:58 浏览: 98
计算中文句子余弦相似度可以使用分词工具将句子转化为词向量,然后计算词向量间的余弦相似度。推荐使用Python的gensim库中的TfidfModel和SparseMatrixSimilarity来实现。具体实现可以参考以下代码:
```python
import jieba.posseg as pseg
from gensim import corpora, models, similarities
# 停用词列表,可根据实际情况添加其他停用词
stop_words = ['的', '了', '和', '是', '就', '都', '而', '及', '与', '或', '等', '亦', '从', '着', '可以', '到', '非', '吗']
# 分词函数
def cut_sentence(sentence):
words = pseg.cut(sentence)
return [word.word for word in words if word.word not in stop_words]
# 计算中文句子余弦相似度
def calc_similarity(s1, s2):
# 分词
cut_s1 = cut_sentence(s1)
cut_s2 = cut_sentence(s2)
# 构造词典和语料库
dictionary = corpora.Dictionary([cut_s1, cut_s2])
corpus = [dictionary.doc2bow(cut_s) for cut_s in [cut_s1, cut_s2]]
# 计算tf-idf值
tfidf = models.TfidfModel(corpus)
corpus_tfidf = tfidf[corpus]
# 计算相似度
index = similarities.SparseMatrixSimilarity(corpus_tfidf)
sim = index[tfidf[corpus[0]]][1]
return sim
```
其中,cut_sentence函数使用jieba库进行分词,并且去除停用词;calc_similarity函数接收两个句子作为输入,使用gensim库中的TfidfModel和SparseMatrixSimilarity计算这两个句子的余弦相似度,并返回相似度的值。注意,该函数所需的jieba、gensim库需要提前安装。
阅读全文