矩阵 文本相似度

# -*- coding: UTF-8 -*-
import warnings
warnings.filterwarnings(action='ignore', category=UserWarning, module='gensim')
# 分词
import jieba
def cut(sentence):
    generator = jieba.cut(sentence,cut_all=False)
    return [word for word in generator]
text0 = '多数学院已经放学,但多数学生仍在学习'
text1 = '数学专业的学生多数仍在学院学习'
text2 = '补习数学'
texts = [text0, text1, text2]
length = len(texts)
cross_text = [([word for word in jieba.cut(i)], [[word for word in jieba.cut(j)] for j in texts if j != i]) for i in texts]
# 文本相似度矩阵
from gensim import corpora, models, similarities
cross_dictionary = [corpora.Dictionary(i[1]) for i in cross_text]
def cross(i, cross_dictionary):
    dictionary = cross_dictionary[i]
    feature_cnt = len(dictionary.token2id.keys())
    corpus = [dictionary.doc2bow(text) for text in cross_text[i][1]]
    vector = dictionary.doc2bow(cross_text[i][0])
    tfidf = models.TfidfModel(corpus)
    index = similarities.SparseMatrixSimilarity(tfidf[corpus], num_features=feature_cnt)
    sim = index[tfidf[vector]]
    return [value for value in sim]
sim_matrix = [cross(i, cross_dictionary) for i in range(length)]
for i in range(len(sim_matrix)):
    sim_matrix[i].insert(i, 1)
print sim_matrix
# 可视化
import matplotlib.pyplot as mp, seaborn
seaborn.heatmap(sim_matrix, center=1, annot=True)
mp.show()

 

唯一的问题是不对称

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值