首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

NLP-15 分钟搭建中文文本分类模型

本文系作者投稿,作者:艾力亚尔(微博 @艾力亚尔),暴风大脑研究院研发工程师,现负责电视端的语音助手相关工作。

https://eliyar.biz/nlp_chinese_text_classification_in_15mins/

欢迎大家投稿,AI、NLP相关即可。

文本分类是自然语言处理核心任务之一,常见用文本审核、广告过滤、情感分析、语音控制和反黄识别等NLP领域。本文主要是介绍我最近开源的极简文本分类和序列标注框架 Kashgari (https://github.com/BrikerMan/Kashgari)

搭建环境和数据准备

准备工作,先准备 python 环境和数据集。

Python 3.6 环境

THUCNews 数据集子集,链接: https://pan.baidu.com/s/1hugrfRu 密码: qfud

如果需要完整数据集请自行到 THUCTC:一个高效的中文文本分类工具包 下载,请遵循数据提供方的开源协议。上面的子数据集包括一下 10 个分类。

每个分类 6500 条数据。感谢 @gaussic 在使用卷积神经网络以及循环神经网络进行中文文本分类 分享。

虚拟环境中安装所有需要的依赖

数据分别为格式为一样一条新闻,每一行是 格式。我们需要把新闻内容分词后作为输入喂给模型。

训练与验证模型

Kashgari 目前提供了三种分类模型结构 和 。我们先使用

运行结果

由于数据特征比较明显,几轮就达到了 0.9999,val_acc 都 1.0 了。

再拿验证机验证一下模型,测试集上 F1 达到了 0.98,相当不错的成绩了。

保存模型和加载保存模型

模型的保存和重新加载都非常简单

使用 tensorboard 可视化训练过程

Kashgari 是基于 Keras 封装,所以可以很方便的使用 keras 的各种回调函数来记录训练过程,比如我们可以使用 来可视化训练过程。

在项目目录运行下面代码即可启动 tensorboard 查看可视化效果

使用预训练词向量

由于长新闻特征比较明显,语料量也比较大,很容易取得比较不错的结果。但是如果我们的语料比较少,特征不是很明显时候直接训练可能会导致模型过拟合,泛化能力很差,此时我们可以使用预训练的词 Embedding 层来提高模型的泛化能力。

参考

使用卷积神经网络以及循环神经网络进行中文文本分类

中文文本分类对比(经典方法和CNN)

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190129G0HIKP00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券