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 使用方法 基本操作顺序是: 1. 在GooSeeker分词和文本分析软件上进行任务创建并导入包含原始内容的excel,并导出分词效果表 2. 将导出的分词效果表放在本notebook的data/raw文件夹中 3. 从头到尾执行本notebook的单元 注意:每个notebook项目目录都预先规划好了,具体参看Jupyter Notebook项目目录规划参考。如果要做多个分析项目,把整个模板目录专门拷贝一份给每个分析项目。 1.4 简要技术说明 在每个功能项单元,如果不需要关心的编程细节,将注明【编程细节】。 本notebook主要实现以下几个步骤: 1. 读取data/raw文件夹中的从分词工具导出的分词效果表 2. 对分词效果表进行基本的预处理 3. 使用Gensim库做LDA主题模型实验 4. 使用可视化工具分析生成的主题 2,第三方库 本notebook使用了gensim库和pyLDAvis库,gensim库用于生成BOW词袋和做LDA主题提取, pyLDAvis库用于LDA主题结果的可视化。 请安装下面2个第3方库,方法步骤是: 1. 在Windows开始菜单中找到Anaconda 2. 在Anaconda菜单中找到Anaconda Prompt菜单,选择这个菜单可以打开一个命令行窗口,在命令行窗口中执行下面两条命令: 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:极端天气讨论 上面话题地图中引用了两篇论文,分别是: 1. LDAvis: A method for visualizing and interpreting topics 2. Termite: Visualization Techniques forAssessing Textual Topic Models 7,本次实验存在的问题及下一步的实验 1. 由于本次实验使用的语料库(微博记录)总共只有2万多条,并且先用集搜客文本分词和情感分析软件做好了分词,所以对电脑资源的消耗不大,所有的数据都是加载到内存处理的。实际的分析项目,需要考虑性能问题,这个可以参考Gensim的官方文档 2. GooSeeker分词和文本分析软件具有手工筛选特征词的功能,下一个实验将先手工选词,再做LDA分析,对比实验效果 3. 语料库的内容质量会影响最后的提取和分析结果, 下一步准备采集电商评论,用LDA做提取消费者话题的实验 8,下载notebook 作为数据探索实验,本notebook放在文件:notebook\eda 下载notebook源代码请点击:微博内容分词后建立LDA主题模型 |
kopkop: 直接加载pyLDAvis.gensim,然后最后一步的可视化用pyLDAvis.gensim.prepare
17773376573: No module named 'pyLDAvis.gensim_models'请问这个怎么解决啊?
东斤兑: 执行成功了,已经显示了矢量列表的前10行,就卡在6.4
东斤兑: 我在搞LDA,然后我做好分词,正要去除纯数字和只有一个字的词,然后根据处理后的语料库生成唯一性词典的时候,老是报错,我不知道是哪一步错了,错误要么是TypeE ...
15964002091: 这个模板有notebook下载吗