from gensim.models import doc2vec
from gensim import corpora,models
import jieba,os
from gensim.similarities.docsim import Similarityraw_documents = ['0无偿居间介绍买卖毒品的行为应如何定性','1吸毒男动态持有大量毒品的行为该如何认定','2如何区分是非法种植毒品原植物罪还是非法制造毒品罪','3为毒贩贩卖毒品提供帮助构成贩卖毒品罪','4将自己吸食的毒品原价转让给朋友吸食的行为该如何认定','5为获报酬帮人购买毒品的行为该如何认定','6毒贩出狱后再次够买毒品途中被抓的行为认定','7虚夸毒品功效劝人吸食毒品的行为该如何认定','8妻子下落不明丈夫又与他人登记结婚是否为无效婚姻','9一方未签字办理的结婚登记是否有效','10夫妻双方1990年按农村习俗举办婚礼没有结婚证 一方可否起诉离婚','11结婚前对方父母出资购买的住房写我们二人的名字有效吗','12身份证被别人冒用无法登记结婚怎么办?','13同居后又与他人登记结婚是否构成重婚罪','14未办登记只举办结婚仪式可起诉离婚吗','15同居多年未办理结婚登记,是否可以向法院起诉要求离婚'
]corpora_documents = []
for item_text in raw_documents:item_str = jieba.lcut(item_text)print(item_str)corpora_documents.append(item_str)
print(corpora_documents)print('data ok!')
corpora_documents = []
corpora_documents2=[]
for i, item_text in enumerate(raw_documents):words_list = list(jieba.cut(item_text))document = doc2vec.TaggedDocument(words=words_list, tags=[i])corpora_documents.append(words_list)corpora_documents2.append(document)# 生成字典和向量语料
dictionary = corpora.Dictionary(corpora_documents)
corpus = [dictionary.doc2bow(text) for text in corpora_documents]
#sim模型
similarity = Similarity('-Similarity-index', corpus, num_features=10000)
#测试数据
test_data_1 = '周杰伦是个低调爱做慈善的好明星'
test_cut_raw_1 = list(jieba.cut(test_data_1))
#用sim计算相似度
test_corpus_1 = dictionary.doc2bow(test_cut_raw_1)
'''test_corpus_1 = dictionary.doc2bow(test_cut_raw_1)
similarity.num_best = 5
print('——————————————sim———————————————')
print(similarity[test_corpus_1])  # 返回最相似的样本材料,(index_of_document, similarity) tuples'''
similarity.num_best = 5
print('——————————————sim———————————————')
print(similarity[test_corpus_1])

结果为

['0', '无偿', '居间', '介绍', '买卖', '毒品', '的', '行为', '应', '如何', '定性']
['1', '吸毒', '男', '动态', '持有', '大量', '毒品', '的', '行为', '该', '如何', '认定']
['2', '如何', '区分', '是', '非法', '种植', '毒品', '原', '植物', '罪', '还是', '非法', '制造', '毒品', '罪']
['3', '为', '毒贩', '贩卖毒品', '提供', '帮助', '构成', '贩卖毒品', '罪']
['4', '将', '自己', '吸食', '的', '毒品', '原价', '转让', '给', '朋友', '吸食', '的', '行为', '该', '如何', '认定']
['5', '为', '获', '报酬', '帮人', '购买', '毒品', '的', '行为', '该', '如何', '认定']
['6', '毒贩', '出狱', '后', '再次', '够买', '毒品', '途中', '被', '抓', '的', '行为', '认定']
['7', '虚夸', '毒品', '功效', '劝人', '吸食毒品', '的', '行为', '该', '如何', '认定']
['8', '妻子', '下落不明', '丈夫', '又', '与', '他人', '登记', '结婚', '是否', '为', '无效', '婚姻']
['9', '一方', '未', '签字', '办理', '的', '结婚登记', '是否', '有效']
['10', '夫妻', '双方', '1990', '年', '按', '农村', '习俗', '举办', '婚礼', '没有', '结婚证', ' ', '一方', '可否', '起诉', '离婚']
['11', '结婚', '前', '对方', '父母', '出资', '购买', '的', '住房', '写', '我们', '二人', '的', '名字', '有效', '吗']
['12', '身份证', '被', '别人', '冒用', '无法', '登记', '结婚', '怎么办', '?']
['13', '同居', '后', '又', '与', '他人', '登记', '结婚', '是否', '构成', '重婚罪']
['14', '未办', '登记', '只', '举办', '结婚仪式', '可', '起诉', '离婚', '吗']
['15', '同居', '多年', '未办理', '结婚登记', ',', '是否', '可以', '向', '法院', '起诉', '要求', '离婚']
[['0', '无偿', '居间', '介绍', '买卖', '毒品', '的', '行为', '应', '如何', '定性'], ['1', '吸毒', '男', '动态', '持有', '大量', '毒品', '的', '行为', '该', '如何', '认定'], ['2', '如何', '区分', '是', '非法', '种植', '毒品', '原', '植物', '罪', '还是', '非法', '制造', '毒品', '罪'], ['3', '为', '毒贩', '贩卖毒品', '提供', '帮助', '构成', '贩卖毒品', '罪'], ['4', '将', '自己', '吸食', '的', '毒品', '原价', '转让', '给', '朋友', '吸食', '的', '行为', '该', '如何', '认定'], ['5', '为', '获', '报酬', '帮人', '购买', '毒品', '的', '行为', '该', '如何', '认定'], ['6', '毒贩', '出狱', '后', '再次', '够买', '毒品', '途中', '被', '抓', '的', '行为', '认定'], ['7', '虚夸', '毒品', '功效', '劝人', '吸食毒品', '的', '行为', '该', '如何', '认定'], ['8', '妻子', '下落不明', '丈夫', '又', '与', '他人', '登记', '结婚', '是否', '为', '无效', '婚姻'], ['9', '一方', '未', '签字', '办理', '的', '结婚登记', '是否', '有效'], ['10', '夫妻', '双方', '1990', '年', '按', '农村', '习俗', '举办', '婚礼', '没有', '结婚证', ' ', '一方', '可否', '起诉', '离婚'], ['11', '结婚', '前', '对方', '父母', '出资', '购买', '的', '住房', '写', '我们', '二人', '的', '名字', '有效', '吗'], ['12', '身份证', '被', '别人', '冒用', '无法', '登记', '结婚', '怎么办', '?'], ['13', '同居', '后', '又', '与', '他人', '登记', '结婚', '是否', '构成', '重婚罪'], ['14', '未办', '登记', '只', '举办', '结婚仪式', '可', '起诉', '离婚', '吗'], ['15', '同居', '多年', '未办理', '结婚登记', ',', '是否', '可以', '向', '法院', '起诉', '要求', '离婚']]
data ok!
——————————————sim———————————————
[(11, 0.3333333432674408), (4, 0.3162277638912201), (9, 0.2357022613286972), (7, 0.21320071816444397), (0, 0.21320071816444397)]

使用doc2vec计算相似度

#doc2vec计算相似度
model = doc2vec.Doc2Vec(size=89, min_count=1, iter=10)model.build_vocab(corpora_documents2)
model.train(corpora_documents2,total_examples=model.corpus_count, epochs=model.iter)
print('——————————————doc2vec———————————————')
inferred_vector = model.infer_vector(test_cut_raw_1)
sims = model.docvecs.most_similar([inferred_vector], topn=5)
print(sims)

结果为:

——————————————doc2vec———————————————
[(4, 0.18099625408649445), (15, 0.11766307055950165), (13, 0.11126244068145752), (9, 0.0980050191283226), (1, 0.05012283846735954)]

LSI 计算文档相似度

#转化成tf-idf向量
tfidf_model=models.TfidfModel(corpus)
corpus_tfidf = [tfidf_model[doc] for doc in corpus]
#转化成lsi向量
lsi= models.LsiModel(corpus_tfidf,id2word=dictionary,num_topics=50)
corpus_lsi = [lsi[doc] for doc in corpus]
similarity_lsi=Similarity('Similarity-Lsi-index', corpus_lsi, num_features=1600,num_best=5)
test_corpus_3 = dictionary.doc2bow(test_cut_raw_1)  # 2.转换成bow向量
test_corpus_tfidf_3 = tfidf_model[test_corpus_3]  # 3.计算tfidf值
test_corpus_lsi_3 = lsi[test_corpus_tfidf_3]  # 4.计算lsi值
print('——————————————lsi———————————————')
print(similarity_lsi[test_corpus_lsi_3])

结果为:

——————————————lsi———————————————
[(2, 0.9777664542198181), (4, 0.19862982630729675), (7, 0.17728787660598755), (5, 0.17022894322872162), (1, 0.16858258843421936)]

用lda计算文档相似度

#转化成lda向量
lda= models.LdaModel(corpus_tfidf,id2word=dictionary,num_topics=50)
corpus_lda = [lda[doc] for doc in corpus]
similarity_lda=Similarity('Similarity-LDA-index', corpus_lda, num_features=1600,num_best=5)
test_corpus_lda_3 = lda[test_corpus_tfidf_3]  # 4.计算lda值
print('——————————————lda———————————————')
print(similarity_lda[test_corpus_lda_3])

结果为:

——————————————lda———————————————
[(2, 0.9901499152183533), (4, 0.024744609370827675), (14, 0.0200016051530838), (12, 0.0200016051530838), (10, 0.0200016051530838)]
print(lsi)
print('——————————————向量———————————————')
print(lsi[corpus_tfidf[0]])

结果为:

LsiModel(num_terms=131, num_topics=50, decay=1.0, chunksize=20000)
——————————————向量———————————————
[(0, 0.21783106255388965), (1, -0.23067638649063138), (2, 0.032697713549656726), (3, -0.009954274168357714), (4, 0.020529906009231626), (5, -0.10249886544444127), (6, 0.07089181319707308), (7, -0.9015393660527969), (8, 0.237450369773125), (9, -0.0035498586946740023), (10, 0.041123515533565254), (11, 0.05210694737124495), (12, -0.07484362939089922), (13, 0.04961858691949999), (14, -0.023892249350932215), (15, 0.0027318443602367707)]

文档相似度的比较tf-idf lda lsi相关推荐

  1. 使用spark计算文档相似度

    2019独角兽企业重金招聘Python工程师标准>>> 1.TF-IDF文档转换为向量 以下边三个句子为例 罗湖发布大梧桐新兴产业带整体规划 深化伙伴关系,增强发展动力 为世界经济发 ...

  2. word2vec相似度计算_文档相似度助力搜索引擎

    几种简单相似度算法: 1.简单共有词判断 假设现有文本A和B,将A.B经过分词.去停用词之后形成集合A={a1,a2,...,an}和集合B={b1,b2,...,bn}.用NUM(A∩B)表示集合A ...

  3. 文档相似度之doc2vec、文档聚类

    文档相似度之doc2vec.文档聚类 示例代码: import jieba import pandas as pd from gensim import corpora, models from ge ...

  4. 文档相似度之词条相似度word2vec、及基于词袋模型计算sklearn实现和gensim

    文档相似度之词条相似度word2vec.及基于词袋模型计算sklearn实现和gensim 示例代码: import jieba import pandas as pd from gensim.mod ...

  5. 向量空间模型(VSM)在文档相似度计算上的简单介绍

      向量空间模型(VSM:Vector space model)是最常用的相似度计算模型,在自然语言处理中有着广泛的应用,这里简单介绍一下其在进行文档间相似度计算时的原理. 假设共有十个词:w1,w2 ...

  6. Python自然语言处理:文档相似度计算(gensim.models)

    目录 1. tf-idf(每个文档形成一个tfidf向量) 2. 仅频率(每个文档形成一个频率值向量) 3. 仅出现与否(每个文档形成一个出现与否的二元向量) 4. Word2vec模型(每个词形成一 ...

  7. vsm java_向量空间模型(VSM)在文档相似度计算上的简单介绍

    C#实现在: 向量空间模型(VSM:Vector space model)是最常用的相似度计算模型,在自然语言处理中有着广泛的应用,这里简单介绍一下其在进行文档间相似度计算时的原理. 假设共有十个词: ...

  8. java文档相似度计算,计算文档与文档的相似度

    最近帮很多本科毕业生做文本数据分析,经常遇到的一个需求是计算文档相似度. 思路: 抽取语料(所有文档)中的词语,构建词典(词语与数字对应起来). 根据构建的词典对每个文档进行重新编码(将文档转化为向量 ...

  9. WMD:基于词向量的文档相似度计算

    EMD算法简介 该部分引用自[1] Earth Mover's Distance (EMD),和欧氏距离一样,他们都是一种距离度量的定义,可以用来测量某分布之间的距离.EMD主要应用在图像处理和语音信 ...

最新文章

  1. Groovy安装与入门实例
  2. How to become an expert in the IP industry? Here is where you should start
  3. 2020教资高频考点作文素材汇总
  4. 如何在spring中读取properties配置文件里面的信息
  5. MySQL高级 - SQL技巧 - SQL执行顺序及正则表达式
  6. STM32F407的硬件I2C
  7. 从零开始的Python学习Episode 4——列表
  8. SWT ScrolledComposite解释
  9. jQuery基础教程之如何注册以及触发自定义事件
  10. js中getBoundingClientRect的作用及兼容方案
  11. 西瓜书《机器学习》决策树IDW3, C4.5公式推导
  12. 青岛大学苏晓泉组-微生物组16S扩增子功能校正算法Meta-Apo
  13. String Permutation
  14. android获取网页接口JSON数据
  15. Cocos2d-x 3.1.1 学习日志16--A星算法(A*搜索算法)学问
  16. 计算机考研350是什么水平,计算机考研考350难吗
  17. 一篇解释清楚Cookie是什么?
  18. dedecms织梦搬家数据库导入失败
  19. 游戏文件服务器,游戏服务器文件
  20. 语音信号处理第三章:

热门文章

  1. 如何优雅地训练大型模型?
  2. 94页论文综述卷积神经网络:从基础技术到研究前景
  3. 华人团队用Transformer做风格迁移,速度快、可试玩,网友却不买账
  4. GitHub 又一开源神器!写代码、搜问题,全部都在「终端」完成!
  5. 最后通牒!这所985大学通知近百名硕博研究生限期回校答辩,逾期退学!
  6. 漫画:什么是快速排序?(完整版)
  7. 【免费福利】零AI基础,如何搭建聊天机器人:技术架构剖析
  8. Django源码分析7:migrate命令的浅析
  9. Django博客系统注册(创建用户模块应用)
  10. python自定义包或模块在Linux服务器导入错误的解决办法