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

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

时间:2017-07-02 22:05来源:本港台直播 作者:j2开奖直播 点击:
然后读入我们的数据文件datascience.csv,注意它的编码是中文GB18030,不是Pandas默认设置的编码,所以此处需要显式指定编码类型,以免出现乱码错误。 我们

然后读入我们的数据文件datascience.csv,注意它的编码是中文GB18030,不是Pandas默认设置的编码,所以此处需要显式指定编码类型,以免出现乱码错误。

我们来看看数据框的头几行,以确认读取是否正确。

显示结果如下:

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

没问题,头几行内容所有列都正确读入,文字显式正常。我们看看数据框的长度,以确认数据是否读取完整。

执行的结果为:

行列数都与我们爬取到的数量一致,通过。

下面我们需要做一件重要工作——分词。这是因为我们需要提取每篇文章的关键词。而中文本身并不使用空格在单词间划分。此处我们采用“结巴分词”工具。这一工具的具体介绍和其他用途请参见《如何用Python做中文分词?》一文。

文章链接:

我们首先调用jieba分词包。

我们此次需要处理的,不是单一文本数据,而是1000多条文本数据,因此我们需要把这项工作并行化。这就需要首先编写一个函数,处理单一文本的分词。

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

有了这个函数之后,我们就可以不断调用它来批量处理数据框里面的全部文本(正文)信息了。你当然可以自己写个循环来做这项工作。但这里我们使用更为高效的apply函数。

下面这一段代码执行起来,可能需要一小段时间。请耐心等候。

执行过程中可能会出现如下提示。没关系,忽略就好。

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

执行完毕之后,我们需要查看一下,文本是否已经被正确分词。

结果如下:

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

单词之间都已经被空格区分开了。下面我们需要做一项重要工作,叫做文本的向量化。

不要被这个名称吓跑。它的意思其实很简单。因为计算机不但不认识中文,甚至连英文也不认识,它只认得数字。我们需要做的,是把文章中的关键词转换为一个个特征(列),然后对每一篇文章数关键词出现个数。

假如这里有两句话:

I love the game.

I hate the game.

那么我们就可以抽取出以下特征:

I

love

hate

the

game

然后上面两句话就转换为以下表格:

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

第一句表示为[1, 1, 0, 1, 1],第二句是[1, 0, 1, 1, 1]。这就叫向量化了。机器就能看懂它们了。

原理弄清楚了,让我们引入相关软件包吧。

处理的文本都是微信公众号文章,里面可能会有大量的词汇。我们不希望处理所有词汇。因为一来处理时间太长,二来那些很不常用的词汇对我们的主题抽取意义不大。所以这里做了个限定,只从文本中提取1000个最重要的特征关键词,然后停止。

下面我们开始关键词提取和向量转换过程:

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

到这里,似乎什么都没有发生。因为我们没有要求程序做任何输出。下面我们就要放出LDA这个大招了。先引入软件包:

然后我们需要人为设定主题的数量。这个要求让很多人大跌眼镜——我怎么知道这一堆文章里面多少主题?!

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