给定文档p(可能含有标题t),将文档分类为n个类别中的一个或多个。
常见的有垃圾邮件识别、情感分析、新闻文本分类。
主要有二分类,多分类,多标签分类。
传统机器学习方法(贝叶斯,svm等),深度学习方法(fastText,TextCNN等)。
文本分类的处理流程大致分为文本预处理、文本特征提取、分类模型构建等。
和英文文本处理分类相比,中文文本的预处理是关键技术。
文本分类的核心都是如何从文本中抽取出能够体现文本特点的关键特征,抓取特征到类别之间的映射。
中文文本分类设计一个很关键的技术:中文分词。中文任务分词必不可少,一般使用jieba分词,工业界的翘楚。
特征粒度为词粒度远远好于字粒度,其大部分分类算法不考虑词序信息,基于字粒度的损失了过多的n-gram信息。
中文分词技术主要有:基于字符串匹配的分词方法、基于理解的分词方法和基于统计的分词方法。详情请见:
建立停用词字典,目前停用词字典有2000个左右,停用词主要包括一些副词、形容词及其一些连接词。通过维护一个停用词表,实际上是一个特征提取的过程,本质 上是特征选择的一部分。
在分词后判断词性(动词、名词、形容词、副词…),在使用jieba分词的时候设置参数就能获取。
文本分类的核心都是如何从文本中抽取出能够体现文本特点的关键特征,抓取特征到类别之间的映射。 所以特征工程很重要,可以由四部分组成:
以词为单位(Unigram)构建的词袋可能就达到几万维,如果考虑二元词组(Bigram)、三元词组(Trigram)的话词袋大小可能会有几十万之多,因此基于词袋模型的特征表示通常是极其稀疏的。
(1)词袋特征的方法有三种:
Naive版本: 不考虑词出现的频率,只要出现过就在相应的位置标1,否则为0;考虑词频(即term frequency): 认为一段文本中出现越多的词越重要,因此权重也越大;考虑词的重要性: 以TF-IDF表征一个词的重要程度。TF-IDF反映了一种折中的思想:即在一篇文档中,TF认为一个词出现的次数越大可能越重要,但也可能并不是(比如停用词:“的”“是”之类的);IDF认为一个词出现在的文档数越少越重要,但也可能不是(比如一些无意义的生僻词)。(2)优缺点:
优点: 词袋模型比较简单直观,它通常能学习出一些关键词和类别之间的映射关系缺点: 丢失了文本中词出现的先后顺序信息;仅将词语符号化,没有考虑词之间的语义联系(比如,“麦克风”和“话筒”是不同的词,但是语义是相同的);通过词向量计算文本的特征。(主要针对短文本)
取平均: 取短文本的各个词向量之和(或者取平均)作为文本的向量表示;网络特征: 用一个pre-train好的NN model 得到 文本作为输入的最后一层向量表示;NN的好处在于能end2end实现模型的训练和测试,利用模型的非线性和众多参数来学习特征,而不需要手工提取特征。CNN善于捕捉文本中关键的局部信息,而RNN则善于捕捉文本的上下文信息(考虑语序信息),并且有一定的记忆能力。
主要是针对具体任务而设计的,通过我们对数据的观察和感知,也许能够发现一些可能有用的特征。有时候,这些手工特征对最后的分类效果提升很大。举个例子,比如对于正负面评论分类任务,对于负面评论,包含负面词的数量就是一维很强的特征。
[1] 文本分类概述(nlp). [2] NLP之文本分类 [] [] [] [] [] [] [] [] [] [] [] [] []