主题模型分析

2 篇文章 0 订阅
订阅专栏

链接入口:【python-sklearn】中文文本 | 主题模型分析-LDA(Latent Dirichlet Allocation)_哔哩哔哩_bilibili

详细版代码入口: 如何用Python从海量文本抽取主题?

概念

主题:自动将文本语料库编码为一组具有实质性意义的类别

主题分析的典型代表:隐含狄利克雷分布(LDA)

LDA

最明显的特征:能够将若干文档自动编码分类为一定数量的主题。

主题数量需要人为确定主题数量

原理

通过对比新旧文档来判断模型的好坏,然后在不同参数的很多模型找到最优模型。

 

 

代码

导入sklearn模块:

from sklearn.feature_extraction.text import TfidfVectorizer, CountVectorizer
from sklearn.decomposition import LatentDirichletAllocation

 定义函数print_top_words:

def print_top_words(model, feature_names, n_top_words):
    tword = []
    for topic_idx, topic in enumerate(model.components_):
        print("Topic #%d:" % topic_idx)
        topic_w = " ".join([feature_names[i] for i in topic.argsort()[:-n_top_words - 1:-1]])
        tword.append(topic_w)
        print(topic_w)
    return tword

 将数据进行转化:

CountVectorizer统计词频,文中代码限定term出现次数必须大于10。

n_features = 1000 #提取1000个特征词语
tf_vectorizer = CountVectorizer(strip_accents = 'unicode',
                                max_features=n_features,
                                stop_words='english',
                                max_df = 0.5,
                                min_df = 10)
tf = tf_vectorizer.fit_transform(data.content_cutted)

主题模型训练 

n_topics = 8#人为定义主题数量
lda = LatentDirichletAllocation(n_components=n_topics, max_iter=50,
                                learning_method='batch',
                                learning_offset=50,
#                                 doc_topic_prior=0.1,
#                                 topic_word_prior=0.01,
                               random_state=0)
lda.fit(tf)

 LatentDirichletAllocation函数:

n_components=n_topics     表示隐含主题数K

max_iter=50     表示EM算法的最大迭代次数为10
learning_method='batch'      表示LDA的求解算法为 ‘batch’,变分推断EM算法
learning_offset=50      表示仅仅在算法使用”online”时有意义。用来减小前面训练样本批次对最终模型的影响。

α相当于 doc_topic_prior,β相当于topic_word_prior,前者我们一般定义为0.1,后者为0.01。

α,β如果不设置,则都默认为1/n_topics

方法:

fit(X[, y]):利用训练数据训练模型,输入的X为文本词频统计矩阵。

n_top_words = 25#打印每个主题下面的前25个词语
tf_feature_names = tf_vectorizer.get_feature_names()
topic_word = print_top_words(lda, tf_feature_names, n_top_words)

运行结果:(主题的名字需要自定义) 

 

确定最优的主题数量

主题数量不能过多,不然会导致过分分类

可视化

import pyLDAvis
import pyLDAvis.sklearn

pyLDAvis.enable_notebook()
pic = pyLDAvis.sklearn.prepare(lda, tf, tf_vectorizer)
pyLDAvis.display(pic)
pyLDAvis.save_html(pic, 'lda_pass'+str(n_topics)+'.html')
pyLDAvis.display(pic)
#去工作路径下找保存好的html文件
#和视频里讲的不一样,目前这个代码不需要手动中断运行,可以快速出结果

结果显示:

每个圈代表一个主题,主题之间相距越远,表示主题之间相似度越小,分化效果越好。

 

主题困惑度(更严谨)

一般来说,最低的主题困惑度对应的主题数是最优的。

import matplotlib.pyplot as plt

plexs = []
scores = []
n_max_topics = 16
for i in range(1,n_max_topics):
    print(i)
    lda = LatentDirichletAllocation(n_components=i, max_iter=50,
                                    learning_method='batch',
                                    learning_offset=50,random_state=0)
    lda.fit(tf)
    plexs.append(lda.perplexity(tf))
    scores.append(lda.score(tf))

n_t=15#区间最右侧的值。注意:不能大于n_max_topics
x=list(range(1,n_t+1))
plt.plot(x,plexs[0:n_t])
plt.xlabel("number of topics")
plt.ylabel("perplexity")
plt.show()

结果显示:

根据手肘法,缩减横向坐标的取值范围,可以发现x=8时,有一个低谷,我觉得是相当于极小值。

 关于困惑度可参考: 折肘法+困惑度确定LDA主题模型的主题数_巴基海贼王的博客-CSDN博客_lda主题数

输出结果

import numpy as np

topics=lda.transform(tf)

topic = []
for t in topics:
    topic.append("Topic #"+str(list(t).index(np.max(t))))
data['概率最大的主题序号']=topic
data['每个主题对应概率']=list(topics)
data.to_excel("data_topic.xlsx",index=False)

王小草【机器学习】笔记--主题模型LDA
【人工智能】王小草的博客
12-30 1883
标签(空格分隔): 王小草机器学习笔记笔记整理时间:2016年12月30日 笔记整理者:王小草1. 共轭先验分布1.1 β分布在进入正题之前,先来了解一下beta分布。Γ函数 Γ函数是阶乘在实数上的推广。β分布 Beta分布的概率密度函数为:f(x) = 其中系数B为: Γ函数可以堪称是阶乘的实数域推广。 Beta分布的期望可以定义为: 1.2 共轭先验分布回顾贝叶斯分类算法,通过先验概
LDA主题模型原理解析与python实现
热门推荐
wind_blast的博客
12-22 2万+
LDA(Latent dirichlet allocation)[1]是有Blei于2003年提出的三层贝叶斯主题模型,通过无监督的学习方法发现文本中隐含的主题信息,目的是要以无指导学习的方法从文本中发现隐含的语义维度-即“Topic”或者“Concept”。隐性语义分析的实质是要利用文本中词项(term)的共现特征来发现文本的Topic结构,这种方法不需要任何关于文本的背景知识。文本的隐性语义表
搜索背后的奥秘——浅谈语义主题计算
weixin_34162228的博客
11-23 423
摘要: 两篇文档是否相关往往不只决定于字面上的词语重复,还取决于文字背后的语义关联。对语义关联的挖掘,可以让我们的搜索更加智能化。本文着重介绍了一个语义挖掘的利器:主题模型主题模型是对文字隐含主题进行建模的方法。它克服了传统信息检索中文档相似度计算方法的缺点,并且能够在海量互联网数据中自动寻找出文字间的语义主题。近些年来各大互联网公司都开始了这方面的探索和尝试。就让我们看...
主题分析
盐一酱的专栏
02-02 3201
本文主要是将论文《Using thematic analysis in psychology》中的内容进行了简要记录。 ###定义 什么是thematic analysis? 文中给出的定义是: Thematic analysis is a method for identifying, analysing, and reporting patterns (themes) within data. It minimally organises and describes your data set in
主题模型分析模型——pLSA
所有的今天都是为了不后悔的明天
05-25 1974
基于概率统计的pLSA模型(probabilistic Latent Semantic Analysis,概率隐语义分析),增加了主题模型,形成简单的贝叶斯网络,可以使用EM算法学习模型参数。 pLSA应用与信息检索、过滤、自然语言处理等领域,pLSA考虑到词分布和主题分布,使用EM算法来学习参数。pLSA可以看做概率化的矩阵分解。   D代表文档,Z代表主题(隐含类别),W代表单词;
基于小红书评论的TF-IDF下的LDA主题模型分析
最新发布
06-04
基于小红书评论的TF-IDF下的LDA主题模型分析
用gensim训练LDA模型,进行新闻文本主题分析
06-27
- **应用**:主题模型可以用于新闻分类、推荐系统、情感分析等任务。 6. **优化与调整** - **调参**:尝试不同的主题数量、迭代次数等参数,寻找最佳模型性能。 - **优化性能**:通过并行化、降低词汇表大小等...
【项目实战】Python实现基于LDA主题模型进行电商产品评论数据情感分析
02-14
《Python实现基于LDA主题模型进行电商产品评论数据情感分析》 该项目实战旨在利用Python编程语言,结合LDA(Latent Dirichlet Allocation)主题模型,对电商产品评论数据进行深度的情感分析。LDA是一种无监督机器...
基于gensim的文本主题模型(LDA)分析
01-05
博客《基于gensim的文本主题模型(LDA)分析》对应文档
主题模型 LDA (Latent Dirichlet Allocation)
06-22
这是我读书时的一次内部分享,现拿来与大家分享
在PYTHON中进行主题模型LDA分析
拓端研究室TRL
10-31 1011
主题建模是一种在大量文档中查找抽象主题的艺术方法。一种作为监督无的机器学习方法,主题模型不容易评估,因为没有标记的“基础事实”数据可供比较。然而,由于主题建模通常需要预先定义一些参数(首先是要发现的主题ķ的数量),因此模型评估对于找到给定数据的“最佳”参数集是至关重要的。文本挖掘:主题模型(LDA)及R语言实现分析游记数据时长12:59使用未标记的数据时,模型评估很难。这里描述的指标都试图用理论方法评估模型的质量,以便找到“最佳”模型。有些指标仅用于评估后验分布(主题 - 单词和文档 - 主题分布),而无需
主题模型
qq_36734094的博客
02-08 597
主题模型(topic modeling)是一种常见的机器学习应用,主要用于对文本进行分类。传统的文本分类器,例如贝叶斯、KNN和SVM分类器,只能将测试对象分到某一个类别中,假设我给出三个分类:“算法”、“网络”和“编译”让其判断,这些分类器往往将对象归到某一类中。 但是如果一个外行完全给不出备选类别,有没有分类器能够自动给出类别判断呢?   有,这样的分类器就是主题模型。   潜在狄立...
主题分析DEMO
u010225788的专栏
12-13 1083
主题分析也同分组分析一样可分为列表形式和分组形式。制作列表形式的主题分析时,将分组字段区域设置为空,列表字段不为空即可;制作分组形式的主题分析时,将分组字段和列表字段均不设置为空即可。这里以列表形式的主题分析为例介绍主题分析的制作方法。 下面将以分析某产品的退货情况来介绍主题分析的建立过程。 第一,选择数据源和主题,点击确定后进入报表设计界面 第二, 字段选择 选择好数据源和主题
机器学习之sklearn——主题模型
weixin_34183910的博客
01-11 370
from gensim import corpora, models corpus只截取了一部分 lsi = models.LsiModel(corpus_tfidf, num_topics=2, id2word=dic) 将文本的tfidf向量输入生成Lsi模型,num_topics为生成主题个数,也为Lsi进行SVD分解时,生成矩阵列向量数;id2word是语料字典 ...
主题模型(LDA)
weixin_43979941的博客
04-23 307
python词云图的制作(用户评论分析
qq_52053775的博客
07-17 1082
规则4如果读入的字符与第一个列表的第一个字符不相同,触发压缩判断,如果得出重复且列表所含国际字符数且大于等于2,则进行压缩去除,清空两个列表,把读入的这个放入第一个列表第一个位置。规则3如果读入的字符与第一个列表的第一个字符相同,而第二个列表也有国际字符,则触发压缩判断,若得出不重复,则清空两个列表,把读入的这个字符放入第一个列表第一个位置。规则2如果读入的字符与第一个列表的第一个字符相同,而第二个列表也有国际字符,则触发压缩判断,若得出重复,则进行压缩去除,清空第二个列表。......
探索主题建模:使用LDA分析文本主题
kilig_CSM的博客
11-03 6943
主题建模是一种用于从文本数据中提取主题或话题的技术。主题可以被视为文本数据的概括性描述,它们涵盖了文本中的关键概念。主题建模可以应用于各种领域,如文档分类、信息检索、推荐系统等。主题建模是文本挖掘领域的重要技术,可以自动发现文本数据中的主题。LDA是一种常用的主题建模方法,可以通过Python和Gensim库进行实现。通过文本预处理、模型训练和结果分析,可以有效地提取文本数据中的隐藏主题,用于各种应用。
【NVivo教程】如何进行主题分析
weixin_33841503的博客
12-25 5197
NVivo是一种帮助您轻松组织和分析无序信息的软件,让您最终作出更好的决策。在本篇文章里,将用循序渐进的指南介绍帮助您通过分析的自然进程进入NVivo的世界,实现科学的主题分析。有任何建议和提示请在下方评论区留言,方便大家学习讨论。一、在Nvivo进行主题分析的准备工作1、回顾你的研究问题和研究方法确保你有一个明确的研究问题。将它们导入NVivo以便于参考。2、阅读一些抄本并写总结备忘录打开文本时...
Gibbs抽样在LDA主题模型中的应用与分析
"这篇文档是关于使用Gibbs抽样方法来分析和应用uvm1.1的主题模型,特别是LDA(Latent Dirichlet Allocation)模型。文章介绍了LDA模型的基本原理,其中主题被视为词汇的概率分布,文本是这些主题的随机组合。每个...
写文章

热门文章

  • IDEA遇到Plugin ‘org.apache.maven.plugins:maven-compiler-plugin:3.8.1‘ not found报错 5215
  • 概率论复习 5019
  • 《马克思主义基本原理》复习重点 4068
  • 概率论【蜂考】期末速成(一) 2257
  • 数据结构-期末复习(一) 1980

分类专栏

  • axios 1篇
  • 数据结构 5篇
  • 概率论 4篇
  • 数据科学导论 3篇
  • 深入理解计算机系统 8篇
  • python 2篇
  • Kaggle学习之旅 7篇
  • 数据科学竞赛
  • 生物 2篇
  • Scikit-learn 2篇
  • 英语 1篇

最新评论

  • hexo init报错Failed to connect to github.com port 443 after 2051 ms: Couldn‘t connect to server

    cc_note: 你是我的神

  • 《马克思主义基本原理》复习重点

    llpo67: 6,马克思发csdn表情包不过,收藏了👌

  • 《马克思主义基本原理》复习重点

    rose~Fxl: 哈哈哈哈哈哈哈哈哈哈哈哈考得怎么样~

  • 《马克思主义基本原理》复习重点

    qq_64484959: 你真的,我哭死表情包

  • kaggle篇章三,新手入门糖尿病检测

    rose~Fxl: 发你私信哈,我也找不到之前看的是哪个网页了,只是存过一些数据表格

大家在看

  • 职业发展如何进入人工智能领域
  • DataX实战:从MongoDB到MySQL的数据迁移--修改源码并测试打包 557
  • 【Docker基础】Docker Desktop入门使用指南 573
  • 构建高效Web应用:通过MVC(Servlet+JSP+JavaBean)实现基本分页功能 922
  • Mybatis-flex整合达梦数据库 1009

最新文章

  • 解决测试类Class not found报错
  • Ubuntu下载
  • hexo init报错Failed to connect to github.com port 443 after 2051 ms: Couldn‘t connect to server
2024年1篇
2023年24篇
2022年21篇

目录

目录

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

天下网标王百度百科对网站优化廊坊网站优化多少钱seo网站优化标准大连网站优化电池充电网站排名优化的影响因素有哪些规模大的网站优化与推广电话安庆企业网站优化哪家有名烟台网站优化哪家专业视频优化app官方网站下载佛山网站首页关键词优化工具和龙网站优化推广分享优化网站排名的几种方法网站优化新方法罗湖教育网站优化营销湖北网站关键词排名优化技巧定西正规网站优化东至网站优化哪家正规网站优化十大方法鼓楼区网站优化哪家好乳山seo优化网站黄南湖南网站优化推广GOOGLE网站优化设计秦皇岛网站优化推广电话网站排名优化首先选兴田德润北京专业网站优化外包增城网站关键词优化技术网站SEO优化百度垦利网站优化公司鄂州外包网站优化要多少钱怎么做免费网站优化方案香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

天下网标王 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化