Press "Enter" to skip to content

微博内容分词后怎样用JupyterNotebook做LDA主题模型分析

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

1,项目说明

 

1.1 数据分析师可以驾驭的数据处理模板

 

LDA(Latent Dirichlet Allocation)是一种文档生成模型。它认为一篇文章是有多个主题的,而每个主题又对应着不同的词。一篇文章的构造过程,首先是以一定的概率选择某个主题,然后再在这个主题下以一定的概率选出某一个词,这样就生成了这篇文章的第一个词。不断重复这个过程,就生成了整片文章。这里假定词与词之间是没顺序的。

 

LDA的使用是上述文档生成的逆过程,它将根据一篇得到的文章,去寻找出这篇文章的主题,以及这些主题对应的词。

 

Python3下的Gensim库,是一个自然语言处理库,能够将文档根据TF-IDF, LDA, LSI 等模型转化成向量模式,以便进行进一步的处理。此外,gensim还实现了word2vec功能,能够将单词转化为词向量。

 

Python+gensim【中文LDA】简洁模型 一文做了详细讲解,本notebook参照该文做了简化。没有采用jieba分词,而是采用 GooSeeker分词和文本分析软件 的输出结果。这样做的有个最大好处是:剩下要写的python代码就很少了,防止分散过多精力去调试程序。另外,GooSeeker分词软件有图形界面,在交互数据分析过程中可以清楚地观察分析过程和结果,符合数据探索的要求。

 

下图展示了本notebook使用的处理流程

在之前的实验中,我们借助GooSeeker分词和文本分析软件生成的分词结果和情感分析结果,在notebook中做词云图和情感走势图。本次实验,为了聚焦于Gensim部分的使用,减少python的代码量,我们依然直接读取GooSeeker分词和文本分析软件生成的分词结果,做进一步的处理。

 

1.2 本模板适应的场景

 

本模板根据GooSeeker分词和文本分析软件生成的分词效果表,对数据进行基本处理后,调用Gensim库做进一步处理。

 

1.3 使用方法

 

基本操作顺序是:

 

 

GooSeeker分词和文本分析软件

    1. 上进行任务创建并导入包含原始内容的excel,并导出分词效果表

 

    1. 将导出的分词效果表放在本notebook的data/raw文件夹中

 

    1. 从头到尾执行本notebook的单元

 

 

注意:每个notebook项目目录都预先规划好了,具体参看Jupyter Notebook项目目录规划参考。如果要做多个分析项目,把整个模板目录专门拷贝一份给每个分析项目。

 

1.4 简要技术说明

 

在每个功能项单元,如果不需要关心的编程细节,将注明【编程细节】。

 

本notebook主要实现以下几个步骤:

 

 

    1. 读取data/raw文件夹中的从分词工具导出的分词效果表

 

    1. 对分词效果表进行基本的预处理

 

    1. 使用Gensim库做LDA主题模型实验

 

    1. 使用可视化工具分析生成的主题

 

 

2,第三方库

 

本notebook使用了gensim库和pyLDAvis库,gensim库用于生成BOW词袋和做LDA主题提取, pyLDAvis库用于LDA主题结果的可视化。

 

请安装下面2个第3方库:

 

pip install -i https:// pypi.tuna.tsinghua.edu.cn /simple gensim #国内安装使用清华的源,速度快

 

pip install -i https:// pypi.tuna.tsinghua.edu.cn /simple pyLDAvis

 

3,数据源

 

数据源是GooSeeker分词和文本分析软件生成的分词效果表。 原始数据是从微博上采集的关于“甘肃马拉松事故”的博文数据。供参考和实验。

 

将要分析的微博内容以Excel格式导入GooSeeker分词软件,几分钟后就能得到词频词性表和分词效果表。如果还做了关键词筛选,还可以生成共词矩阵和社交关系图。另外情感分析也可自动执行,也可以配置自己的情感词库和文本分类关键词。下图展示了可导出的分词结果表。本文使用Python对分词效果表进行统计分析和画图。

 

下图显示的是从集搜客分词和文本分析软件导出的分词效果表数据,下面我们会读取这个excel并且把”分词数据”这一列”做处理和转换,每个单元格按Gensim的要求转换成一个列表。

4,修改历史

 

2021-06-18:第一版发布

 

5,版权说明

 

本notebook是GooSeeker大数据分析团队开发的,所分析的源数据是GooSeeker分词和文本分析软件生成的,本notebook中的数据和代码可自由共享使用,包括转发、复制、修改、用于其他项目中。

 

6,python程序

 

6.1 准备程序环境

 

导入必要的Python程序包,设定要分析的文件名变量。使用以下变量对应GooSeeker分词结果表:

file_word_freq:词频表
file_seg_effect: 分词效果表
file_word_choice_matrix: 选词矩阵表
file_word_choice_match: 选词匹配表
file_word_choice_result: 选词结果表
file_co_word_matrix: 共词矩阵表

【编程细节】本节下面的代码将对上述词频表名变量赋值

6.2 检测data\raw目录下是否有分词效果表

C:\Users\work\workspace_219\notebook\微博内容分词后怎样用JupyterNotebook做LDA主题模型实验-0621\notebook\eda\..\..\data\raw

 

分词效果excel表: data\raw\ 分词效果_202106180944189420.xlsx

 

6.3 读取分词效果表

 

以下的演示以GooSeeker分词和文本分析软件生成的分词效果excel表为例,需要把分词效果表放到本notebook的data/raw文件夹下

分词效果表已经把每个句子切分成了一个个词,词与词之间用空格间隔,所以,只需要执行split,就能分成词数组

6.4 对读取到的分词效果数据(语料库)进行预处理

 

去除纯数字和只有一个字的词

6.5 使用Gensim库进行主题模型实验

 

根据处理后的语料库生成唯一性词典

显示词典的前10行

生成矢量列表(list of vectors)

显示矢量列表的前10行

使用Gensim库的models.LdaModel方法进行主题建模

 

注意:本步骤的运行时间长短,和语料库的大小有关。语料库大的话,需要等待的时间会相应比较长

 

运行完成后会看到提示显示:LDA建模运行结束

显示提取出的每个主题的相关词

建模后,会生成每篇文档对应每个主题的概率

 

下面显示前10篇文档

6.6 根据提取的模型数据进行可视化

可以选看每个主题

已经上面提取的3个主题下的词,作者依据自己的理解总结为:

 

主题1:关于事故原因方面的,天灾还是人祸

 

主题2:事故救援方面

 

主题3:极端天气讨论

 

上面话题地图中引用了两篇论文,分别是:

LDAvis: A method for visualizing and interpreting topics
Termite: Visualization Techniques forAssessing Textual Topic Models

7,本次实验存在的问题及下一步的实验

 

1. 由于本次实验使用的语料库(微博记录)总共只有2万多条,并且先用集搜客文本分词和情感分析软件做好了分词,所以对电脑资源的消耗不大,所有的数据都是加载到内存处理的。实际的分析项目,需要考虑性能问题,这个可以参考Gensim的官方文档

 

2. GooSeeker分词和文本分析软件具有手工筛选特征词的功能,下一个实验将先手工选词,再做LDA分析,对比实验效果

 

3. 语料库的内容质量会影响最后的提取和分析结果, 下一步准备采集电商评论,用LDA做提取消费者话题的实验

Be First to Comment

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注