手把手教你学会 LDA 话题模型可视化 pyLDAvis 库

栏目: 数据库 · 发布时间: 5年前

内容简介:在之前我们学习过lda话题模型,相关的文章我放在这里,大家有兴趣可以看一看。

在之前我们学习过lda话题模型,相关的文章我放在这里,大家有兴趣可以看一看。

自然语言处理之LDA主题模型

致敬褚先生:pyLDAvis可视化不认输的一生

对文本分析感兴趣的可以关注下我的直播间内的课程 python文本分析:从入门到精通

pyLDAvis是话题模型交互式可视化库,最初是在R语言社区的Carson Sievert和Kenny Shirley开发的。他们俩的努力使得话题可视化成为可能,现在pyLDAvis可以通过 python 特别是jupyter notebook来分析并可视化话题模型。如果你对pyLDAvis的运行原理感兴趣,建议你阅读这篇论文。

LDAvis: A method for visualizing and interpreting topics https://nlp.stanford.edu/events/illvi2014/papers/sievert-illvi2014.pdf

pyLDAvis安装

一、pyLDAvis使用方法

导入模型语法

pyLDA需要先导入模型,支持的模型的来源有三种:

  • sklearn的lda模型

  • gensim的lda模型

  • graphlab的lda模型

导入的语法

参数解读:

  • sklearn lda/gensim lda: 计算好的话题模型

  • sklearn dtm/gensim dtm: 文档词频矩阵

  • vectorizer/dictionary: 词语空间

  • topic_model: graphlab生成的话题模型

  • docs: 语料集

graphlab我们没有学习,之后的课程可能会讲到。gensim和sklearn我们都接触过,而且昨天我们分享的教程是gensim方式生成话题模型,今天我们主要是看看sklearn方式生成的话题模型的可视化。其实不管哪一种模型生成方式,使用方法基本类似。

可视化语法

二、实战

我们做pyLDAvis话题模型可视化,步骤分为:

  • 数据读取

  • 预处理

  • 生成文档词频矩阵

  • 生成LDA模型

  • pyLDAvis可视化

数据读取

昨天我分享的内容作为话题分析实际上略微有些牵强,因为对褚时健先生讨论其实主要是他的不认输精神,本质上话题之间界限很模糊。今天我专门从知乎上采集了 大学生创业、学术圈 两种数据源。

运行

我们假设现在数据在采集或者保存过程中,丢失了话题类别的标注。但是我们知道数据大概有四类,按照话题数等于2去做话题分析,理论上应该能区分开。整个 df['content'] 作为我们研究的语料库,语料库中的每一行数据是一个文档。

运行

预处理

数据预处理是文本分析的开始,也是最重要最费功夫的地方。上面的数据我们看到有很多html标签,在这部分我们将剔除非中文字符,只保留中文。而且要保证进入语料库中的文本是长文本(比如在这里我们只要长度大于20的文本保留到语料库中)。

将非汉字替换为""

运行

语料库中可能因为剔除非中文后,内容已经非常简短,为防止短文本进入语料库,我这里设置长度大于10的才能进入语料库中。我比较喜欢dataframe.agg方法来做一些数据操作,不熟悉的童鞋可以看  使用Pandas更好的做数据科学 ,里面有详细的介绍。

生成文档词频矩阵

做文本分析,尤其是涉及到sklearn机器学习。我们需要将中文文本数据整理成sklearn能懂的形式,因为sklearn最初只是为西方语言设计的,而西方文本中的单词是以空格间隔,而中文是所有的字词没有空格间隔。所以我们需要设计一个文本清洗函数:

  • 先分词

  • 剔除无意义词语和长度小于2的词语

  • 之后用空格间隔词语

运行

创建LDA话题模型

在这里我们使用sklearn生成LDA话题模型,一般做LDA时我们都有对研究数据有大致的了解。像我知道数据包含两类(大学生创业、学术圈),所以这里我们将话题数设置为n_components=2

运行

pyLDAvis可视化

最后,我们使用 pyLDAvis库 进行话题的可视化。该库可以交互式的显示不同话题,及每个话题的相关词语。

导入模型方法

可视化方法

执行下方可视化代码

手把手教你学会 LDA 话题模型可视化 pyLDAvis 库

pyLDAvis可以进行参数微调,在上面的动态图我调整了lambda参数,词语的权重就发生了变化。综合图中的特征词分布来看,话题1是学术圈话题,话题2是大学生创业。

往期文章

Python系列课(爬虫、文本分析、机器学习)

致敬褚先生:pyLDAvis可视化不认输的一生

将excel中某一列拆分为多个列

【工具篇】如何用Google Colab高效的学习Python

爬虫实战:抓取知乎问题“大学生如何赚到一万元”

小demo:对德文数据进行文本分析

使用Python制作WORD报告

使用Pandas、Jinja和WeasyPrint制作pdf报告   

如何让python代码显示进度信息?

PySimpleGUI: 开发自己第一个软件

100G 文本分析语料资源(免费下载)

文件腾转挪移操作,那都不是事儿

在微信后台回复 lda可视化 ,即可获得本项目代码

你看到这里,你懂得 手把手教你学会 LDA 话题模型可视化 pyLDAvis 库


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Java Servlet&JSP经典实例

Java Servlet&JSP经典实例

(美)佩里 / 朱涛江、邹红霞、林琪 / 中国电力出版社 / 2005-7 / 86.00元

本书将用于帮助指导Java web开发人员的日常任务,提供典型的web相关问题的快速解决方案。本书集中介绍了如何用Java初始化某些与web相关的任务,而不是教会读者如何使用Java语言,或者事无巨细地解释servlet和JSP API。书中包含了大量关于复杂的日常开发任务的技巧,这些技巧涵盖了许多与Servlet 2.4和JSP 2.0规范相关联的新特性,包括ServletRequestList......一起来看看 《Java Servlet&JSP经典实例》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器