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

示例代码:

import jieba
import pandas as pd
from gensim import corpora, models
from gensim.models.ldamodel import LdaModel
from gensim import similarities
from gensim.models import doc2vec, Doc2Vecraw = pd.read_table('./金庸-射雕英雄传txt精校版.txt', names=['txt'], encoding="GBK")#  章节判断用变量预处理
def m_head(tmpstr):return tmpstr[:1]def m_mid(tmpstr):return tmpstr.find("回 ")raw['head'] = raw.txt.apply(m_head)
raw['mid'] = raw.txt.apply(m_mid)
raw['len'] = raw.txt.apply(len)#  章节判断
chapnum = 0
for i in range(len(raw)):if raw['head'][i] == "第" and raw['mid'][i] > 0 and raw['len'][i] < 30:chapnum += 1if chapnum >= 40 and raw['txt'][i] == "附录一:成吉思汗家族":chapnum = 0raw.loc[i, 'chap'] = chapnum#  删除临时变量
del raw['head']
del raw['mid']
del raw['len']rawgrp = raw.groupby('chap')
chapter = rawgrp.agg(sum)  # 只有字符串的情况下,sum函数自动转为合并字符串
chapter = chapter[chapter.index != 0]# print(chapter)def m_doc(doclist):reslist = []for i, doc in enumerate(doclist):reslist.append(doc2vec.TaggedDocument(jieba.lcut(doc), [i]))return reslistcorp = m_doc(chapter.txt)
print(corp[:2])d2vmodel = Doc2Vec(vector_size=300, window=20, min_count=5)
d2vmodel.build_vocab(corp)print(d2vmodel.wv.vocab)#  将新文本转换为相应维度空间下的向量
new_vec = d2vmodel.infer_vector(jieba.lcut(chapter.txt[1]))
print(d2vmodel.docvecs.most_similar([new_vec], topn=10))  # 打印与哪些章节相似

运行结果:

示例代码:

import jieba
import pandas as pd
import jieba.analyse as ana
from sklearn.feature_extraction.text import TfidfTransformer
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.cluster import KMeansraw = pd.read_table('./金庸-射雕英雄传txt精校版.txt', names=['txt'], encoding="GBK")#  章节判断用变量预处理
def m_head(tmpstr):return tmpstr[:1]def m_mid(tmpstr):return tmpstr.find("回 ")raw['head'] = raw.txt.apply(m_head)
raw['mid'] = raw.txt.apply(m_mid)
raw['len'] = raw.txt.apply(len)#  章节判断
chapnum = 0
for i in range(len(raw)):if raw['head'][i] == "第" and raw['mid'][i] > 0 and raw['len'][i] < 30:chapnum += 1if chapnum >= 40 and raw['txt'][i] == "附录一:成吉思汗家族":chapnum = 0raw.loc[i, 'chap'] = chapnum#  删除临时变量
del raw['head']
del raw['mid']
del raw['len']rawgrp = raw.groupby('chap')
chapter = rawgrp.agg(sum)  # 只有字符串的情况下,sum函数自动转为合并字符串
chapter = chapter[chapter.index != 0]
# print(chapter)#  为章节增加名称标签
print('0' * 30)
print(chapter.head())
print('1' * 30)
print(chapter.index)
print('2' * 30)
chapter.index = [raw.txt[raw.chap == i].iloc[0] for i in chapter.index]
print(chapter.head())
print('3' * 30)
print(chapter.index)#  设定分词及请理停用词函数
stop_list = list(pd.read_csv('./停用词.txt', names=['w'], sep='aaa', encoding='utf-8').w)
# print(stop_list)#  jeiba分词
def m_cut(intxt):return [w for w in jieba.cut(intxt) if w not in stop_list and len(w) > 1]cut_txt = lambda x: " ".join(m_cut(x))
clean_chap = chapter.txt.apply(cut_txt)
print('4' * 30)
print(clean_chap[:2])#  计算TF-IDF矩阵
vectorizer = CountVectorizer()
wordmtx = vectorizer.fit_transform(clean_chap)  # 将文本中的词语转换为词频矩阵transformer = TfidfTransformer()
tfidf = transformer.fit_transform(wordmtx)  # 基于词频矩阵计算TF-IDF值
print('5' * 30)
print(tfidf)#  进行聚类分析
clf = KMeans(n_clusters=5)
s = clf.fit(tfidf)
print('6' * 30)
print(s)
print(clf.cluster_centers_)print('7' * 30)
print(clf.cluster_centers_.shape)
print(clf.labels_)chapter['clsres'] = clf.labels_
print(chapter.head())chapter.sort_values('clsres').clsreschapgrp = chapter.groupby('clsres')
chapcls = chapgrp.agg(sum)  # 只有字符串列的情况下,sum函数自动转为合并字符串cut_txt = lambda x: " ".join(m_cut(x))
chapclsres = chapcls.txt.apply(cut_txt)
print('8' * 30)
print(chapclsres)#  列出关键词以刻画类别特征
ana.set_stop_words('./停用词.txt')
for item in chapclsres:print(ana.extract_tags(item, topK=10))

运行结果:

000000000000000000000000000000txt
chap
1.0   第一回 风雪惊变    钱塘江浩浩江水,日日夜夜无穷无休的从两浙西路临安府牛家村边绕过,东流...
2.0   第二回 江南七怪    颜烈跨出房门,过道中一个中年士人拖着鞋皮,踢跶踢跶的直响,一路打着哈...
3.0   第三回 黄沙莽莽    寺里僧众见焦木圆寂,尽皆悲哭。有的便为伤者包扎伤处,抬入客舍。  忽...
4.0   第四回 黑风双煞    完颜洪熙笑道:“好,再打他个痛快。”蒙古兵前哨报来:“王罕亲自前来迎...
5.0   第五回 弯弓射雕    一行人下得山来,走不多时,忽听前面猛兽大吼声一阵阵传来。韩宝驹一提缰...
111111111111111111111111111111
Float64Index([ 1.0,  2.0,  3.0,  4.0,  5.0,  6.0,  7.0,  8.0,  9.0, 10.0, 11.0,12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0, 20.0, 21.0, 22.0,23.0, 24.0, 25.0, 26.0, 27.0, 28.0, 29.0, 30.0, 31.0, 32.0, 33.0,34.0, 35.0, 36.0, 37.0, 38.0, 39.0, 40.0],dtype='float64', name='chap')
222222222222222222222222222222txt
第一回 风雪惊变  第一回 风雪惊变    钱塘江浩浩江水,日日夜夜无穷无休的从两浙西路临安府牛家村边绕过,东流...
第二回 江南七怪  第二回 江南七怪    颜烈跨出房门,过道中一个中年士人拖着鞋皮,踢跶踢跶的直响,一路打着哈...
第三回 黄沙莽莽  第三回 黄沙莽莽    寺里僧众见焦木圆寂,尽皆悲哭。有的便为伤者包扎伤处,抬入客舍。  忽...
第四回 黑风双煞  第四回 黑风双煞    完颜洪熙笑道:“好,再打他个痛快。”蒙古兵前哨报来:“王罕亲自前来迎...
第五回 弯弓射雕  第五回 弯弓射雕    一行人下得山来,走不多时,忽听前面猛兽大吼声一阵阵传来。韩宝驹一提缰...
333333333333333333333333333333
Index(['第一回 风雪惊变', '第二回 江南七怪', '第三回 黄沙莽莽', '第四回 黑风双煞', '第五回 弯弓射雕', '第六回 崖顶疑阵','第七回 比武招亲', '第八回 各显神通', '第九回 铁枪破犁', '第十回 往事如烟', '第十一回 长春服输','第十二回 亢龙有悔', '第十三回 五湖废人', '第十四回 桃花岛主', '第十五回 神龙摆尾', '第十六回 《九阴真经》','第十七回 双手互搏', '第十八回 三道试题', '第十九回 洪涛群鲨', '第二十回 九阴假经', '第二十一回 千钧巨岩','第二十二回 骑鲨遨游', '第二十三回 大闹禁宫', '第二十四回 密室疗伤', '第二十五回 荒村野店', '第二十六回 新盟旧约','第二十七回 轩辕台前', '第二十八回 铁掌峰顶', '第二十九回 黑沼隐女', '第三十回 一灯大师', '第三十一回 鸳鸯锦帕','第三十二回 湍江险滩', '第三十三回 来日大难', '第三十四回 岛上巨变', '第三十五回 铁枪庙中', '第三十六回 大军西征','第三十七回 从天而降', '第三十八回 锦囊密令', '第三十九回 是非善恶', '第四十回 华山论剑'],dtype='object')
444444444444444444444444444444
第一回 风雪惊变    第一回 风雪 惊变 钱塘江 浩浩 江水 日日夜夜 无穷 无休 浙西 临安 牛家村 绕过 流入...
第二回 江南七怪    第二回 江南七怪 颜烈 跨出 房门 过道 一个 中年 士人 直响 一路打 哈欠 迎面 士人 ...
Name: txt, dtype: object
555555555555555555555555555555(0, 43933)    0.006457785610768902(0, 43900)  0.005344421721247819(0, 43894)  0.005806509485742016(0, 43893)  0.0078196129731351(0, 43889)    0.0033321780154806882(0, 43867) 0.005806509485742016(0, 43853)  0.016033265163743454(0, 43846)  0.005806509485742016(0, 43823)  0.0037195432578317456(0, 43817) 0.0037195432578317456(0, 43807) 0.0034512135427621155(0, 43804) 0.01741952845722605(0, 43795)   0.04064556640019411(0, 43794)   0.01778216762000709(0, 43791)   0.004041869471194046(0, 43785)  0.006457785610768902(0, 43761)  0.0035797817066998473(0, 43759) 0.006457785610768902(0, 43735)  0.006457785610768902(0, 43564)  0.004231057831726734(0, 43558)  0.006457785610768902(0, 43552)  0.005344421721247819(0, 43530)  0.006457785610768902(0, 43521)  0.004445541905001772(0, 43519)  0.006457785610768902:   :(39, 249)  0.007363892219505564(39, 243)   0.002661190169191508(39, 241)   0.0029348179528258193(39, 239)  0.003881818699411122(39, 237)   0.0246660951449147(39, 235) 0.017282292487475925(39, 229)   0.004213809881329308(39, 199)   0.004734964104017336(39, 183)   0.004734964104017336(39, 177)   0.006013956032520825(39, 164)   0.004334625242694368(39, 160)   0.010489088265541683(39, 153)   0.006261482471574542(39, 133)   0.0034963627551805616(39, 130)  0.0027944020310634574(39, 123)  0.0058696359056516385(39, 121)  0.006261482471574542(39, 111)   0.01044129239492948(39, 102)    0.01596714101514905(39, 91) 0.010081707882709857(39, 84)    0.006013956032520825(39, 72)    0.005580106229793086(39, 56)    0.054538300429186476(39, 54)    0.01044129239492948(39, 33) 0.007187789388150439
666666666666666666666666666666
KMeans(n_clusters=5)
[[0.         0.         0.         ... 0.00258824 0.         0.        ][0.         0.         0.         ... 0.         0.         0.        ][0.00056294 0.00044564 0.00044564 ... 0.         0.00046898 0.00056294][0.         0.         0.         ... 0.         0.         0.        ][0.         0.         0.         ... 0.         0.         0.        ]]
777777777777777777777777777777
(5, 43955)
[3 3 3 3 3 3 4 4 4 2 3 0 4 2 0 2 2 0 0 0 0 0 2 2 2 2 1 1 2 2 2 1 2 2 2 2 22 2 0]txt  clsres
第一回 风雪惊变  第一回 风雪惊变    钱塘江浩浩江水,日日夜夜无穷无休的从两浙西路临安府牛家村边绕过,东流...       3
第二回 江南七怪  第二回 江南七怪    颜烈跨出房门,过道中一个中年士人拖着鞋皮,踢跶踢跶的直响,一路打着哈...       3
第三回 黄沙莽莽  第三回 黄沙莽莽    寺里僧众见焦木圆寂,尽皆悲哭。有的便为伤者包扎伤处,抬入客舍。  忽...       3
第四回 黑风双煞  第四回 黑风双煞    完颜洪熙笑道:“好,再打他个痛快。”蒙古兵前哨报来:“王罕亲自前来迎...       3
第五回 弯弓射雕  第五回 弯弓射雕    一行人下得山来,走不多时,忽听前面猛兽大吼声一阵阵传来。韩宝驹一提缰...       3
888888888888888888888888888888
clsres
0    第十二回 亢龙有悔 黄蓉正 撕开 身后 有人 说道 撕作 三份 鸡屁股 两人 一惊 怎地 背...
1    第二十七回 轩辕台 两人 正闹间 楼梯 声响 适才 随杨康 丐帮 长老 走到 黄二人 桌边 ...
2    第十回 往事如烟 完颜康 见到 杨铁心 惊诧 之下 认出 大叫 提起 铁枪 行步 朝天 一炷...
3    第一回 风雪 惊变 钱塘江 浩浩 江水 日日夜夜 无穷 无休 浙西 临安 牛家村 绕过 流入...
4    第七回 比武招亲 江南 六怪 郭靖 晓行夜宿 东南 进发 非止 一日 大漠 草原 这天 张家...
Name: txt, dtype: object
['洪七公', '郭靖', '欧阳锋', '黄蓉', '黄药师', '欧阳克', '周伯通', '叫化', '武功', '黄蓉道']
['黄蓉', '郭靖', '裘千仞', '帮主', '丐帮', '杨康', '铁掌', '简长老', '鲁有脚', '群丐']
['郭靖', '黄蓉', '黄药师', '周伯通', '欧阳锋', '师父', '黄蓉道', '梅超风', '郭靖道', '武功']
['郭靖', '丘处机', '铁木真', '柯镇恶', '杨铁心', '韩小莹', '梅超风', '包惜弱', '朱聪', '韩宝驹']
['郭靖', '完颜康', '黄蓉', '王处一', '陆庄主', '陆冠英', '小王爷', '穆易', '那公子', '穆念慈']

文档相似度之doc2vec、文档聚类相关推荐

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

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

  2. 文档相似度的比较tf-idf lda lsi

    from gensim.models import doc2vec from gensim import corpora,models import jieba,os from gensim.simi ...

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

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

  4. 基于gensim的Deep learning with paragraph2vec 官方models.doc2vec文档解释

    ♦版权声明:转载时请注明出处URL,谢谢大家~ ♦文章声明:博主为在校生,基于学习兴趣作此文章,与大家分享.水平有限,恳请大家批评指正~ gensim介绍 [官网] gensim是一款强大的自然语言处 ...

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

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

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

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

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

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

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

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

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

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

最新文章

  1. 少年郎,你为什么没有对象?是缺点“土味情话”
  2. asp.net input怎么获取值
  3. #每日播报# 8月6日 Github 热门项目汇总
  4. php cdi_CDI中的事务异常处理
  5. gmat阅读.html,GMAT阅读长难句50句+参考译文.pdf
  6. 浅谈面向对象的javascript几个特性
  7. WCF入门学习3-配置文件与部署iis
  8. synchronized 关键字的底层原理
  9. IntelliJ IDEA 12.0中文字符显示不正常解决方案
  10. 将Go的main包拆分为多个文件
  11. 操作系统课程设计--银行家算法的模拟实现
  12. 小米官网竖直导航栏html,小米官网css3导航菜单代码_html/css_WEB-ITnose
  13. modelica语言学习记录V1.0
  14. Edge,IE浏览器 兼容模式设置
  15. Pytorch中报错RuntimeError: The size of tensor a (60) must match the size of tensor b (56)
  16. c语言自定义函数返回值的作用,C语言自定义函数
  17. 图像特征与描述(2)
  18. 《GPU编程与CG语言之阳春白雪下里巴人》 读书笔记3 漫反射与Lambert光照模型
  19. 微博html5版什么手机,搜狐微博推出全新手机HTML5触屏版
  20. auto.js教程:找图函数,图片内随机点击

热门文章

  1. 程序员转型AI,成功几率有几分?
  2. 希捷发布CORTX对象存储软件与开源社区,普惠超大规模数据存储
  3. 想成为一个数据科学家却不知道从何下手?这份路线图带你打开数据科学大门!...
  4. 节后招人平均工资9000上热搜,为什么有些人去哪里都值钱?
  5. AI一分钟|FF联合创始人聂天心离职;Siri联合创始人从苹果离职
  6. AI一分钟 | 北京开放自动驾驶车辆路测道路105公里;阿里将人工智能引入时尚界...
  7. 监管AI?吴恩达跟马斯克想到一块去了
  8. Spring Boot 实现万能文件在线预览
  9. 面试官问:对象池技术了解吗?apache common pool2呢?
  10. 面试官:说说RabbitMQ 消费端限流、TTL、死信队列