先看下数据:

1、建立词典、语料库

from gensim import corpora,models #主题挖掘,提取关键信息#建立词典,去重
pos_dict=corpora.Dictionary([ [i] for i in word_data_pos.word]) #shape=(n,1)
neg_dict=corpora.Dictionary([ [i] for i in word_data_neg.word])#建立语料库
pos_corpus=[ pos_dict.doc2bow(j) for j in [ [i] for i in word_data_pos.word] ] #shape=(n,(2,1))
neg_corpus=[ neg_dict.doc2bow(j) for j in [ [i] for i in word_data_neg.word] ]

2、主题数寻优

#构造主题数寻优函数def cos(vector1,vector2):'''函数功能:余玄相似度函数值越小越相似'''dot_product=0.0normA=0.0normB=0.0for a,b in zip(vector1,vector2):dot_product +=a*bnormA +=a**2normB +=b**2if normA==0.0 or normB==0.0:return Noneelse:return ( dot_product/((normA*normB)**0.5) )

#主题数寻优
#这个函数可以重复调用,解决其他项目的问题def LDA_k(x_corpus,x_dict):'''函数功能:'''#初始化平均余玄相似度mean_similarity=[]mean_similarity.append(1)#循环生成主题并计算主题间相似度for i in np.arange(2,11):lda=models.LdaModel(x_corpus,num_topics=i,id2word=x_dict) #LDA模型训练for j in np.arange(i):term=lda.show_topics(num_words=50)#提取各主题词top_word=[] #shape=(i,50)for k in np.arange(i):top_word.append( [''.join(re.findall('"(.*)"',i)) for i in term[k][1].split('+')]) #列出所有词#构造词频向量word=sum(top_word,[]) #列车所有词unique_word=set(word) #去重#构造主题词列表,行表示主题号,列表示各主题词mat=[] #shape=(i,len(unique_word))for j in np.arange(i):top_w=top_word[j]mat.append( tuple([ top_w.count(k) for k in unique_word ])) #统计list中元素的频次,返回元组#两两组合。方法一p=list(itertools.permutations(list(np.arange(i)),2)) #返回可迭代对象的所有数学全排列方式。y=len(p) # y=i*(i-1)top_similarity=[0]for w in np.arange(y):vector1=mat[p[w][0]]vector2=mat[p[w][1]]top_similarity.append(cos(vector1,vector2))#        #两两组合,方法二
#        for x in range(i-1):
#            for y in range(x,i):#计算平均余玄相似度mean_similarity.append(sum(top_similarity)/ y)return mean_similarity
#计算主题平均余玄相似度pos_k=LDA_k(pos_corpus,pos_dict)
neg_k=LDA_k(neg_corpus,neg_dict)

pd.Series(pos_k,index=range(1,11)).plot()
plt.title('正面评论LDA主题数寻优')
plt.show()

pd.Series(neg_k,index=range(1,11)).plot()
plt.title('负面评论LDA主题数寻优')
plt.show()

pos_lda=models.LdaModel(pos_corpus,num_topics=2,id2word=pos_dict)
neg_lda=models.LdaModel(neg_corpus,num_topics=2,id2word=neg_dict)pos_lda.print_topics(num_topics=10)
neg_lda.print_topics(num_topics=10)

基于LDA模型的主题分析相关推荐

  1. 基于LDA模型的邮件主题分类

    资源地址:希拉里邮件7000封左右,Emails.csv 运行环境:windows10(64bit) + python3.6 + pycharm Python源代码: import warnings ...

  2. NLP --- 文本分类(基于LDA的隐语意分析训练算法详解)

    上一节详细介绍了什么是LDA,详细讲解了他的原理,大家应该好好理解,如果不理解,这一节就别看了,你是看不懂的,这里我在简单的叙述LDA的算法思想: 首先我们只拥有很多篇文本和一个词典,那么我们就可以在 ...

  3. NLP --- 文本分类(基于LDA的隐语意分析详解)

    前几节我们分析了向量空间模型(VSM).基于奇异值分解(SVD)的潜语意分析(LSA).基于概率的潜语意分析(PLSA)这些模型都是为了解决文本分类问题,他们各自有自己的优点和缺点,其中VSM模型简单 ...

  4. 基于LDA模型的微博用户兴趣模型构建

    目录 一.理论基础 二.核心程序 三.仿真结论 一.理论基础 用户在使用微博过程中产生的行为称为微博用户行为,这些行为根据用户在行使过程中属于实施者还是接受者,分为主动行为和被动行为.其中,在微博的日 ...

  5. 自然语言处理-应用场景-文本分类:基于LSTM模型的情感分析【IMDB电影评论数据集】--(重点技术:自定义分词、文本序列化、输入数据批次化、词向量迁移使用)

    文本情感分类 1. 案例介绍 现在我们有一个经典的数据集IMDB数据集,地址:http://ai.stanford.edu/~amaas/data/sentiment/,这是一份包含了5万条流行电影的 ...

  6. 【项目实战】Python实现基于LDA主题模型进行电商产品评论数据情感分析

    说明:这是一个机器学习.数据挖掘实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取. 视频: Python实现基于LDA模型进行电商产品评论数据情感分析 ...

  7. 自然语言处理(NLP)——LDA模型:对电商购物评论进行情感分析

    目录 一.2020数学建模美赛C题简介 需求 评价内容 提供数据 二.解题思路 三.LDA简介 四.代码实现 1. 数据预处理 1.1剔除无用信息 1.1.1 剔除掉不需要的列 1.1.2 找出无效评 ...

  8. 文本挖掘:LDA模型对公号文章主题分析

    转载自:[大数据部落]文本挖掘:LDA模型对公号文章主题分析@tecdat拓端 原文链接:http://tecdat.cn/?p=2175/ 1 语义透镜 顾客满意度和关注点 我们对于评价数据进行LD ...

  9. 基于LDA和baidu-aip的舆情分析项目

    概述 本文主要分为数据获取(微博爬虫).文本分析(主题抽取.情感计算). 项目场景:以微博为数据源,分析新冠疫苗舆情的主题演化和情感波动趋势,结合时事进行验证,从而得出特殊事件对于舆情的特定影响,为突 ...

最新文章

  1. flink链接mysql_flink 将mysql作为Source和Sink的代码示例
  2. python gif动态图的合成
  3. 两个月的打卡活动圆满结束,今天公布兑奖详情
  4. [云炬创业学笔记]第二章决定成为创业者测试7
  5. 用MsgWaitForMultipleObjects代替WaitForSingleObject和WaitForMultipleObjects()
  6. linux服务器之间文件复制命令
  7. 项目版本管理的最佳实践:云效飞流Flow篇
  8. Python实战——2048
  9. kerberos linux 账号,使用AD / Kerberos进行身份验证/授权的Linux服务器是否需要计算机帐户?...
  10. gnome桌面终端程序 Guake
  11. vue中分割线的实现
  12. python密码学pdf_Python密码学编程 ([美]斯维加特) 中文完整pdf扫描版[199MB]
  13. 单元格内容分列多行_excel表格数据换行分列-EXCEL怎么分行呢?一个单元格有多行字,怎么向分列......
  14. java练习04|银行利率表如下表所示,请计算存款10000元,活期1年、活期2年,定期1年,定期2年后的本息合计。
  15. ***我是如何通过华为面试的?群面+技术面+综合面+英语面(Android岗)***
  16. 【ParaView教程】第四章 常见问题 —— 怎样计算正面投影面积?
  17. 获取ckeditor的内容
  18. mysql推binlog流_MySQL中binlog日记清理
  19. 拳头公司是哪个国家的
  20. 对各大预训练语言模型的简单总结和评述(BERT/RoBERTa/ALBERT/ELECTRA/ERNIE/structBERT/SpanBERT...)

热门文章

  1. flume伪分布模式实践
  2. 数据库(5)--触发器的定义
  3. 计算机经常使用不维护,浅析计算机维护中的常见故障及其处理方式
  4. 内网搭建图片网站:软件安装配置 1-3
  5. 初出茅庐的小李第59篇博客之测试Modbus协议的继电器
  6. php 去除notice,php怎么去掉notice提示
  7. linux下卸载sybase,Sybase数据库的彻底卸载
  8. 编译K2P的LEDE固件
  9. 比较好的Java 网站/论坛/博客集锦
  10. 有关Proteus安装时的一些报错