[原创] 使用 fastText 做中文文本分类(1)

查看本系列文章合集,请看这里

 什么是“文本分类”

它是图书馆学, 信息学和计算机科学中的一个问题。其任务是将一个文档分配到一个或者多个类别中。

举例:

文本 类别
瑞幸咖啡今日发布声明称,瑞幸咖啡公司将于6月29日在纳斯达克停牌,并进行退市备案。声明表示,在国内消费市场方面,瑞幸咖啡全国4000多家门店将正常运营,近3万名员工仍将一如既往的为用户提供优质产品和服务。公司衷心感谢广大消费者的支持厚爱,并再次为事件造成的恶劣影响向社会各界诚挚道歉。 财经
明朝中后期西南沿海一个重要的问题就是倭寇的骚扰,这个问题本来是有希望被当时的浙江总督用和平的方法解决掉的,但是中途就出了个王本固这个插曲。 历史

其中,“类别”是事先定义好的。一段文本可以属于多个类别,例如,第2个例子可以同时属于“历史”和“明朝”这两个类别。

 fastText是什么
fastText是Facebook于2016年开源的一个词向量计算和文本分类工具,官方定义:

Library for efficient text classification and representation learning

工具如其名,“fast”,表明它的速度很快。
fastText应用很广泛,本文以只有1个类别中文文本分类任务为例,展示如何从源数据开始,到数据处理,到最后完成分类的过程。
文章来源:https://www.codelast.com/
 安装fastText
fastText 有一个在命令行直接就能用的可执行程序,也有Python的接口,这两样东西我们都装上。
安装、使用fastText对编译器版本、Python版本都有一定的要求,可以查看fastText网站了解这些信息。

wget https://github.com/facebookresearch/fastText/archive/v0.9.2.zip
unzip v0.9.2.zip
cd fastText-0.9.2
make
pip install .

本文写作时,fastText的最新版是 0.9.2,如果版本有更新,上面的命令要跟着修改。
我们会看到当前目录下生成了一个名为“fasttext”的可执行程序。这样,fastText就可以开始用了。但这只是万里长征第一步,之后的文本预处理、类别标注才是最麻烦的。

 文本分类的流程
并不是我们有了文本数据(一行一个字符串),就能直接喂给fastText训练出来一个分类模型了,我们不仅要对数据进行一些细致的清洗,还要把输入fastText的数据做成它要求的格式,这样它才能识别并训练出模型。

简单地说,文本分类的过程主要由以下步骤构成:
● 对待分类的文本数据做预处理。例如:去掉文本里的乱七八糟的字符、标点符号,等等。并且,由于中文不像英文有天然的空格做为词与词之间的分隔符,因此,我们只能使用分词器来对中文句子进行分词。
● 对文本进行标注。fastText训练的是有监督的文本分类模型,你得先给它一堆例子:什么样的文本,对应的正确分类是什么。这样它才能学出一个模型,用于预测一个没有见过的文本的类别。标注可以由人工完成(效率低,一般不现实),也可以从一些可信的数据源获取文本的正确分类。
● 把处理好的文本数据拆分成training集和validation集,training集用于训练模型,validation集用于检验模型效果。
● 用fastText训练training集得到一个模型,用validation集检验模型效果,如果效果不好,调整模型训练的参数训练一个新模型继续检验效果。

下面,就依次描述以上各项。请看下一篇文章。

文章来源:https://www.codelast.com/
➤➤ 版权声明 ➤➤ 
转载需注明出处:codelast.com 
感谢关注我的微信公众号(微信扫一扫):

wechat qrcode of codelast

发表评论