大数据时代,人们将越来越依赖数据做出决策。与此同时,信息与数据的数量也呈现指数型增长。能否帮助用户更便捷地从海量信息中提炼出有价值的数据,将成为衡量大数据公司是否具有竞争力的重要关键。
热巢是一支兼有极客与创客精神的团队。即日起,热巢的技术研发团队将围绕数据与算法,陆续分享一系列前沿的技术实验与技术思想,并提出务实的解决之道。
让我们一起来探索『数据驱动创意』吧!
机器学习实验一:如何用机器学习处理文本分类?
作者:高峰
热巢首席算法工程师、中科院上海生命科学研究院博士
什么是文本分类?
文本分类 (Text classification) 指的是给定一篇文章,自动判断该文章所属的预先定义好的标签类别 (比如体育、娱乐或者新闻类别等),是自然语言处理 (Natural language processing,NLP) 领域的主要研究方向之一 [1]。
文本分类有着广阔的应用场景,比如垃圾邮件检测 (Spam email detection) 和评论情感分析 (Sentiment analysis) ,本质上都可以看做是具有两种标签类别的文本分类任务:
垃圾邮件检测——判断邮件是否属于垃圾邮件和非垃圾邮件这两类;
评论情感分析——判断评论是否属于正面邮件和负面评论这两类。
每天,热巢的工程师都会分析上百万中国社交网络上的热门内容,热巢平台上的大量功能,背后都有机器学习处理文本分类的功劳。
文本分类的技术发展历史
对文本分类的研究可以追溯到二十世纪五十年代,当时主要依据特定的人工规则进行文本分类。
到二十世纪九十年代,统计机器学习 (Statistical machine learning) 成为主流,一些统计机器学习方法,比如支持向量机 (Support vector machine, SVM) [2] 和朴素贝叶斯 (Naive Bayes) [3] 等分类方法在文本分类中取得了非常高的分类准确率。然而,统计机器学习方法首先需要进行特征工程 (Feature engineering) 工作,该工作需要深入理解业务需求,并且非常耗时耗力。
随着大数据量 (Big data) 和图形处理单元 (Graphics processing unit, GPU) 强计算力的支持,深度学习 (Deep learning) 近年来发展迅速,在计算机视觉 (Computer vision, CV)、语音识别 (Speech recognition) 和自然语言处理领域都有着广泛研究与应用 [4]。与统计机器学习方法相比,深度学习方法可以自动提取特征,使得人们将注意力更多地集中在数据和模型上。
实战文本分类:CNN模型 VS fastText模型
关于卷积神经网络(Convolutional neural network, CNN)
卷积神经网络 (Convolutional neural network, CNN) [5] 是经典的深度学习模型之一,在大规模图像识别竞赛 (Large scale visual recognition challenge, ILSVRC) 中取得巨大成功。CNN模型的局部连接 (Local connectivity) 和权值共享 (Parameter sharing) 两大特性有效地提取了数据特征并降低了模型参数以加快模型训练。
图1:Kim Yoon 提出的用于文本分类的CNN模型结构KimYoon [6] 首次提出将CNN模型应用在文本分类中(见图1)。在该模型中,第一步是词嵌入层 (Word embedding layer),将每个词表示为固定长度的稠密的词向量 (关于词嵌入的理论部分,我们还会继续发文介绍)。第二步是卷积层 (Convolutionallayer),采用不同大小的卷积核从上到下依次对词向量进行卷积操作。第三步是池化层 (Pooling layer),采取的是最大池化 (Max-pooling) 操作。第四步是全连接层 (Fully connected layer, 包括了Dropout层),对输出标签类别进行预测。
关于fastText
2016年8月份,Facebook开源了fastText工具,用于快速进行文本表示与文本分类任务 [7]。fastText的模型结构非常简单 (图2),单个词或者ngram组合词的词向量取平均后代表该文本的向量,使用softmax函数预测文本所属各标签类别的概率,损失函数 (Loss function) 是真实标签类别与预测标签类别之间的负对数似然 (Negative log-likelihood)。与“深层”的CNN模型相比,fastText的模型结构是“浅层”的。
图 2. fastText模型结构。x1, x2, …, xN 分别表示文本的N个ngram 特征开始实验
接下来将分别使用CNN模型和fastText模型在公开数据集上进行文本分类,以分类准确度和模型训练耗时两个角度评估两个模型的表现。
相对于图像和语音来说,文字已经是高度抽象的概念了,因此对文本分析并不需要太深的网络结构。在这里使用深度学习框架keras [8] 搭建了CNN模型,其结构为:词嵌入层-Dropout层-卷积层-Dropout层-池化层-全连接层-Dropout层-全连接层。在fastText 的官方GitHub上 [9] 下载并编译了fastText模型。
实验所需公开测试数据来自搜狗实验室新闻数据完整版 [10],包括了搜狐新闻2012年6月到7月期间国内、国际、体育、社会和娱乐等18个标签类别的新闻数据。在依次经过数据提取、中文分词、去停用词、过滤小于10个词的文本和文本去重一系列文本预处理操作后,选取其中汽车、财经、IT、健康、体育和娱乐6个标签类别,每个标签类别下随机打乱后选取15,000个样本作为训练数据集 (Training data),3,000个样本作为测试数据集 (Testing data),即实验使用的训练数据集大小为90,000,测试数据集大小为18,000。
本实验在CentOS 平台运行,由于fastText模型训练不需要GPU加速,因此在训练CNN模型时也没有使用GPU。实验使用的相关软件以及版本分别是中文分词工具jieba (0.38) [11], 词向量训练工具gensim (2.1) [12] 和CNN模型实现深度学习框架keras (2.0)。编程语言是 Python 2.7。
实验结果
经过一系列超参数 (Hyper-parameter) 调整后,在分类准确度方面,CNN模型迭代 (Epoch) 训练数据7次后,在测试数据集上的分类准确度为95.7 % (图3)。fastText模型在相同测试数据集上的分类准确度为 95.8 % (图4)。也就是说,在该测试数据集上,两个模型的分类准确度是基本一致的。
图 3. CNN模型实验结果 图 4. fastText模型实验结果在运行时间方面,fastText模型总共只需要27秒钟就可以完成模型的训练与预测 (图4),而CNN模型完成相同的操作耗时2212秒 (图3),也就是说fastText模型远远快于CNN模型。实验使用的标签类别和相应数据量并不是太大,在工业界业务需求中往往有成百上千个标签类别,fastText在更大规模的数据集上的优势更加明显 [7]。
值得注意的是,fastText除了可以进行有监督学习的文本分类外,还可以进行无监督的词向量学习。有了词向量后,可以直观地查看语义相关词。
比如,图5展示了与输入词“梁朝伟”最相关的词是:听风者。《听风者》是梁朝伟和周迅等在2012年主演的一部影片,由于训练数据是2012年采集的,因此词向量准确地捕捉到了两个词之间的相关关系。与输入词“奔驰”语义最相关的词是:宝马,可以想象2012年两个车系的竞品关系。
实验讨论
如前文所述,与图像和语音不同,人类的语言已经是高度抽象的概念了。对于文本分类任务来说,在良好的特征工程基础上,线性分类器也可以取得很好的效果 [7]。文本分类还是比较偏线性的任务,因此“浅层”的fastText模型就可以达到与“深层”的CNN模型相似的分类准确度。依此类推,为了解决业务需求,具体在选择算法模型时要充分理解任务属性,依据数据量大小和算法模型本身的优缺点选择合适的解决方案。
除了将CNN模型应用在文本分类任务上之外,还可以将其他深度学习模型应用在文本分类上,比如循环神经网络 (Recurrent neural network, RNN) [13],基于注意力 (Attention) 机制的递归神经网络 [14],循环卷积神经网络 (Recurrent convolutional neural network, RCNN) [15] 等。由于在此实验中CNN模型已经取得了不错的结果,因此在这里没有尝试其他深度学习模型。
目前深度学习已经分别在计算机视觉和语音识别领域取得了state-of-the-art的结果,近年来在自然语言处理领域有着广阔的研究。有趣的是,有人指出深度学习并不能很容易地应用在自然语言处理上 [16]。该文章指出神经网络适用于处理连续稠密的数据 (比如图像和语音),而自然语言在单词/符号水平 (Word/symbol level) 上的并不是连续的,在概念/意义水平 (Concept/meaning level) 上才是连续的。神经网络在单词水平上进行分析会受限于训练数据集,模型训练完毕后泛化误差 (Generalization error) 较大。
因此,不同的算法模型都有不同的优势和劣势,技术团队势必需要充分理解具体的业务需求后,才能提供最佳的技术解决方案并提升解决问题的效率。
参考文献
[2] Joachims T. Text categorization with support vector machines: Learning with many relevant features. Proceeding of the 10th European Conference on Machine Learning (ECML-98), 137-142, 1998
[3] Raschka S. Naive Bayes and Text Classification: Introduction and Theory, Ithaca, USA: Cornell University Library, 2014
[4] LeCun Y., Bengio Y., and Hinton G. Deep Learning. Nature, 521:436-444, 2015
[5] LeCun Y., Bottou L., Bengio Y., and Haffner P. Gradient-based learning applied to document recognition. Proceedings of the IEEE, 86(11):2278-2324, 1998
[6] Kim Y. Convolutional neural networks for sentence classification. Proceedings of the 2014 Conference on Empirical Methods in Natural Language Processing (EMNLP), 1746-1751, 2014
[7] Joulin A., Grave E., Bojanowski P., and Mikolov T. Bag of tricks for efficient text classification.arXiv preprint arXiv:1607.01759, 2016
[10] 搜狗实验室(Sogou Labs)
[11] fxsjy/jieba
[12] gensim: topic modelling for humans
[13] Liu PF., Qiu XP., and Huang XJ. Recurrent neural network for text classification with multi-task learning. Proceedings of International Joint Conference on Artificial Intelligence, 2016
[14] Yang ZC., Yang DY., Dyer C., He XD., Smola A., and Hovy E. Hierarchical attention networks for document classification. Proceedings of the 2016 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies, 2016
[15] Lai SW., Xu LH., Liu K., and Zhao J. Recurrent convolutional neural networks for text classification. Twenty-Ninth AAAI Conference on Artificial Intelligence, 2015
关于热巢
上海热巢网络科技有限公司(超级策划师)由两位来自中德的LSE毕业生穆青及Fabian von Heimburg联合创办,致力于将大数据和媒体广告结合,目前正全力打造基于社交媒体大数据下的一体化广告B2B平台——超级广告策划师。该平台将连接上游品牌和下游广告,促进广告交易和创意分发更加智能和更具效率。热巢现已获得安持资本领投的千万级Pre-A轮融资。
为表彰在广告与传媒领域取得的创新,穆青和Fabian von Heimburg当选为2017年福布斯30位30岁以下亚洲青年领袖(Forbes 30 Under 30 Asia)。
网友评论