博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【NLP学习笔记】文本分类概述
阅读量:2135 次
发布时间:2019-04-30

本文共 1980 字,大约阅读时间需要 6 分钟。

概述

1 文本分类问题

给定文档p(可能含有标题t),将文档分类为n个类别中的一个或多个。

2 文本分类应用

常见的有垃圾邮件识别、情感分析、新闻文本分类。

3 文本分类方向

主要有二分类,多分类,多标签分类。

4 文本分类方法

传统机器学习方法(贝叶斯,svm等),深度学习方法(fastText,TextCNN等)。

5 文本分类流程

文本分类的处理流程大致分为文本预处理、文本特征提取、分类模型构建等。

和英文文本处理分类相比,中文文本的预处理是关键技术。

文本分类的核心都是如何从文本中抽取出能够体现文本特点的关键特征,抓取特征到类别之间的映射。

6 文本分类关键问题

6.1 文本预处理

6.1.1 中文分词

中文文本分类设计一个很关键的技术:中文分词。中文任务分词必不可少,一般使用jieba分词,工业界的翘楚。

特征粒度为词粒度远远好于字粒度,其大部分分类算法不考虑词序信息,基于字粒度的损失了过多的n-gram信息。

中文分词技术主要有:基于字符串匹配的分词方法、基于理解的分词方法和基于统计的分词方法。详情请见:

6.1.2 去停用词

建立停用词字典,目前停用词字典有2000个左右,停用词主要包括一些副词、形容词及其一些连接词。通过维护一个停用词表,实际上是一个特征提取的过程,本质 上是特征选择的一部分。

6.1.3 词性标注

在分词后判断词性(动词、名词、形容词、副词…),在使用jieba分词的时候设置参数就能获取。

6.2 文本特征工程

文本分类的核心都是如何从文本中抽取出能够体现文本特点的关键特征,抓取特征到类别之间的映射。 所以特征工程很重要,可以由四部分组成:

在这里插入图片描述

6.2.1 基于词袋模型的特征表示

以词为单位(Unigram)构建的词袋可能就达到几万维,如果考虑二元词组(Bigram)、三元词组(Trigram)的话词袋大小可能会有几十万之多,因此基于词袋模型的特征表示通常是极其稀疏的

(1)词袋特征的方法有三种:

  • Naive版本: 不考虑词出现的频率,只要出现过就在相应的位置标1,否则为0;
  • 考虑词频(即term frequency): 认为一段文本中出现越多的词越重要,因此权重也越大;
  • 考虑词的重要性: 以TF-IDF表征一个词的重要程度。TF-IDF反映了一种折中的思想:即在一篇文档中,TF认为一个词出现的次数越大可能越重要,但也可能并不是(比如停用词:“的”“是”之类的);IDF认为一个词出现在的文档数越少越重要,但也可能不是(比如一些无意义的生僻词)。

(2)优缺点:

  • 优点: 词袋模型比较简单直观,它通常能学习出一些关键词和类别之间的映射关系
  • 缺点: 丢失了文本中词出现的先后顺序信息;仅将词语符号化,没有考虑词之间的语义联系(比如,“麦克风”和“话筒”是不同的词,但是语义是相同的);

6.2.2 基于embedding的特征表示

通过词向量计算文本的特征。(主要针对短文本)

  • 取平均: 取短文本的各个词向量之和(或者取平均)作为文本的向量表示;
  • 网络特征: 用一个pre-train好的NN model 得到 文本作为输入的最后一层向量表示;

6.2.3 基于NN Model抽取的特征

NN的好处在于能end2end实现模型的训练和测试,利用模型的非线性和众多参数来学习特征,而不需要手工提取特征。CNN善于捕捉文本中关键的局部信息,而RNN则善于捕捉文本的上下文信息(考虑语序信息),并且有一定的记忆能力。

6.2.4 基于任务本身抽取的特征

主要是针对具体任务而设计的,通过我们对数据的观察和感知,也许能够发现一些可能有用的特征。有时候,这些手工特征对最后的分类效果提升很大。举个例子,比如对于正负面评论分类任务,对于负面评论,包含负面词的数量就是一维很强的特征。

6.2.5 特征融合

  • 对于特征维数较高、数据模式复杂的情况,建议用非线性模型(如比较流行的GDBT, XGBoost);
  • 对于特征维数较低、数据模式简单的情况,建议用简单的线性模型即可(如LR)。

6.2.6 主题特征

  • LDA(文档的话题): Linear Discriminant Analysis线性判别分析和 Latent Dirichlet Allocation,可以假设文档集有T个话题,一篇文档可能属于一个或多个话题,通过LDA模型可以计算出文档属于某个话题的概率,这样可以计算出一个DxT的矩阵。LDA特征在文档打标签等任务上表现很好。
  • LSI(文档的潜在语义): Latent Semantic Indexing,通过分解文档-词频矩阵来计算文档的潜在语义,和LDA有一点相似,都是文档的潜在特征。

参考资料

[1] .

[2]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]

转载地址:http://guugf.baihongyu.com/

你可能感兴趣的文章
列表、元组、集合、字典
查看>>
【Python】easygui小甲鱼
查看>>
【Python】关于Python多线程的一篇文章转载
查看>>
【Pyton】【小甲鱼】文件
查看>>
【Pyton】【小甲鱼】永久存储:腌制一缸美味的泡菜
查看>>
【Pyton】【小甲鱼】异常处理:你不可能总是对的
查看>>
APP性能测试工具
查看>>
【Pyton】【小甲鱼】类和对象
查看>>
压力测试工具JMeter入门教程
查看>>
作为一名软件测试工程师,需要具备哪些能力
查看>>
【Pyton】【小甲鱼】类和对象:一些相关的BIF(内置函数)
查看>>
【Pyton】【小甲鱼】魔法方法
查看>>
单元测试需要具备的技能和4大阶段的学习
查看>>
【Loadrunner】【浙江移动项目手写代码】代码备份
查看>>
Python几种并发实现方案的性能比较
查看>>
[Jmeter]jmeter之脚本录制与回放,优化(windows下的jmeter)
查看>>
Jmeter之正则
查看>>
【JMeter】1.9上考试jmeter测试调试
查看>>
【虫师】【selenium】参数化
查看>>
【Python练习】文件引用用户名密码登录系统
查看>>