本港台开奖现场直播 j2开奖直播报码现场
当前位置: 新闻频道 > IT新闻 >

报码:如何用Python从海量文本抽取主题?(4)

时间:2017-07-02 22:05来源:本港台直播 作者:j2开奖直播 点击:
别着急。应用LDA方法,指定(或者叫瞎猜)主题个数是必须的。如果你只需要把文章粗略划分成几个大类,就可以把数字设定小一些;相反,如果你希望能

别着急。应用LDA方法,指定(或者叫瞎猜)主题个数是必须的。如果你只需要把文章粗略划分成几个大类,就可以把数字设定小一些;相反,如果你希望能够识别出非常细分的主题,就增大主题个数。

对划分的结果,如果你觉得不够满意,可以通过继续迭代,调整主题数量来优化。这里我们先设定为5个分类试试。

报码:如何用Python从海量文本抽取主题?

把我们的1000多篇向量化后的文章扔给LDA,让它欢快地找主题吧。

这一部分工作量较大,程序会执行一段时间,Jupyter Notebook在执行中可能暂时没有响应。等待一会儿就好,不要着急。

报码:如何用Python从海量文本抽取主题?

程序终于跑完了的时候,你会看到如下的提示信息:

报码:如何用Python从海量文本抽取主题?

可是,这还是什么输出都没有啊。它究竟找了什么样的主题?

主题没有一个确定的名称,而是用一系列关键词刻画的。我们定义以下的函数,把每个主题里面的前若干个关键词显示出来:

报码:如何用Python从海量文本抽取主题?

定义好函数之后,我们暂定每个主题输出前20个关键词。

报码:如何用Python从海量文本抽取主题?

以下命令会帮助我们依次输出每个主题的关键词表:

报码:如何用Python从海量文本抽取主题?

执行效果如下:

报码:如何用Python从海量文本抽取主题?

在这5个主题里,可以看出主题0主要关注的是数据科学中的算法和技术,而主题4显然更注重数据科学的应用场景。

剩下的几个主题可以如何归纳?作为思考题,留给你花时间想一想吧。

到这里,LDA已经成功帮我们完成了主题抽取。但是我知道你不是很满意,因为结果不够直观。

那咱们就让它直观一些好了。执行以下命令,会有有趣的事情发生。

报码:如何用Python从海量文本抽取主题?

对,你会看到如下的一张图,而且还是可交互的动态图哦。

报码:如何用Python从海量文本抽取主题?

图的左侧,用圆圈代表不同的主题,圆圈的大小代表了每个主题分别包含文章的数量。

图的右侧,列出了最重要(频率最高)的30个关键词列表。注意当你没有把鼠标悬停在任何主题之上的时候,这30个关键词代表全部文本中提取到的30个最重要关键词。

如果你把鼠标悬停在1号上面:

报码:如何用Python从海量文本抽取主题?

右侧的关键词列表会立即发生变化,红色展示了每个关键词在当前主题下的频率。

以上是认为设定主题数为5的情况。可如果我们把主题数量设定为10呢?

你不需要重新运行所有代码,只需要执行下面这几行就可以了。这段程序还是需要运行一段时间,请耐心等待。

报码:如何用Python从海量文本抽取主题?

程序输出给我们10个主题下最重要的20个关键词。

报码:如何用Python从海量文本抽取主题?

附带的是可视化的输出结果:

报码:如何用Python从海量文本抽取主题?

你马上会发现当主题设定为10的时候,一些有趣的现象发生了——大部分的文章抱团出现在右上方,而2个小部落(8和10)似乎离群索居。我们查看一下这里的8号主题,看看它的关键词构成。

报码:如何用Python从海量文本抽取主题?

通过高频关键词的描述,我们可以猜测到这一主题主要探讨的是政策和法律法规问题,难怪它和那些技术、算法与应用的主题显得如此格格不入。

说明

前文帮助你一步步利用LDA做了主题抽取。成就感爆棚吧?然而这里有两点小问题值得说明。

首先,信息检索的业内专家一看到刚才的关键词列表,就会哈哈大笑——太粗糙了吧!

(责任编辑:本港台直播)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
推荐内容