当前位置:   article > 正文

计算文本相似度的几种方法以及实现原理_文本相似度计算代码

文本相似度计算代码

第一种基于TF-IDF向量法计算文本相似度

import jieba
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity

# 语料库
corpus = [
    '你借的钱什么时候还呀',
    '你到底什么时候还钱',
    '你如果不还钱的话,你的征信将会收到影响',
    '欠钱不还会影响征信',
    '影响征信的原因可能是欠钱不还'
]

# 分词
corpus_cut = [' '.join(list(jieba.cut(text))) for text in corpus]

# TF-IDF向量化
vectorizer = TfidfVectorizer()
corpus_tfidf = vectorizer.fit_transform(corpus_cut)

# 计算相似度
similarity_matrix = cosine_similarity(corpus_tfidf)

print(similarity_matrix)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

运行结果如下:

[[1.         0.75203953 0.         0.         0.        ]
 [0.75203953 1.         0.         0.         0.        ]
 [0.         0.         1.         0.32580811 0.21520437]
 [0.         0.         0.32580811 1.         0.66052491]
 [0.         0.         0.21520437 0.66052491 1.        ]]
  • 1
  • 2
  • 3
  • 4
  • 5

第二种基于LSI模型向量法计算相似度模型

import jieba
from gensim import corpora, models, similarities

# 语料库
corpus = ['你借的钱什么时候还呀',
          '你到底什么时候还钱',
          '你如果不还钱的话,你的征信将会收到影响',
          '欠钱不还会影响征信',
          '影响征信的原因可能是欠钱不还']

# 分词
corpus_cut = [list(jieba.cut(text)) for text in corpus]

# 构建词典
dictionary = corpora.Dictionary(corpus_cut)

# 构建语料库
corpus_bow = [dictionary.doc2bow(text) for text in corpus_cut]

# 训练LSI模型
lsi_model = models.LsiModel(corpus_bow, id2word=dictionary, num_topics=2)

# 计算文本相似度
corpus_lsi = lsi_model[corpus_bow]
index = similarities.MatrixSimilarity(corpus_lsi)

# 计算相似度
similarity_matrix = index[corpus_lsi]

print(similarity_matrix)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

运行结果如下:

[[1.         0.99816966 0.7902421  0.119727   0.13108377]
 [0.99816966 1.         0.75173587 0.05946621 0.07088902]
 [0.7902421  0.75173587 0.99999994 0.7030001  0.7110951 ]
 [0.119727   0.05946621 0.70300007 1.         0.9999345 ]
 [0.13108377 0.07088902 0.7110951  0.9999345  1.        ]]
  • 1
  • 2
  • 3
  • 4
  • 5
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/941469
推荐阅读
相关标签
  

闽ICP备14008679号