神经网络用于文本分类
文本分类 文本分类是很多业务问题中广泛使用到的NLP/监督机器学习(ML)。文本分类的目标是自动将文本/文档分类为一个或多个预定义类别。目前的成熟思路是用词向量解码文本,然后使用传统机器学习模型或者深度神经网络模型来做分类。 文本分类是学术界和工业界非常活跃的研究领域。本文主要介绍用于文本分类的几种神经网络模型方法,并比较它们的性能,代码实现主要基于Keras。文中代码都在这个DeepTextGitHub项目中. 文本分类的一些示例包括: 从社交媒体中了解受众情绪(😁 😐 😥) 检测垃圾邮件和非垃圾邮件 自动标记客户查询 将新闻文章📰分类为预定义主题 端到端文本分类流水线 端到端文本分类流水线由以下组件组成: 训练文本:输入文本,有监督模型能够通过已标注数据来学习和预测所需的类。 特征向量:特征向量是用于解码输入数据特征的信息的向量。 标签:预定义的类别/类,作为模型预测的目标。 算法模型:能够处理文本分类的算法(在我们的例子中:CNN,RNN,HAN, Fasttext) 预测:已经在历史数据集上训练过的模型,可以用于执行标签预测。 这里使用汽车消费者的评测数据集,在tsv文件中, 第一列是序号对我们没用, 第二列是label(0, 1),分别代表(消极,积极)评价,第三列是文本. 1 操控性舒服、油耗低,性价比高 0 动力的确有点点让我相信了up的确是个代步车而已! 1 1。车的外观很喜欢。2。省油,现在磨合期7.3,相信以后还会下降。 1 内饰的做工和用料同级别同价位最厚道的 0 减震系统太硬! 数据处理使用的类,具体见代码链接 class DataProcessor(object): """ Base class for data converters for sequence classification data sets. helper funcitons [read_tsv, read_text, read_json] """ ... class SampleProcessor(DataProcessor): """ Sample processor for the classification data set. Tranform the text to tensor for training if use pre-train model, need vocabulary file usage: process data files >>> processer = SampleProcessor(config, ) provide your own data in list format [train_X, train_Y, test_X, test_Y] >>> processer = SampleProcessor(config, data) """ 词向量 使用包含外部知识的embedding表达字词是目前的主流方法,经典的如word2vec,GLoVe,较新进的 ELMo,BERT,等预训练向量,集成了关于单词的新信息(词汇和语义),这些信息已经在非常大的数据集上进行了训练和提炼。 ...