文本分类综述

目录

一.简介

二.分类

三.应用场景

四.文本分类流程

4.1 文本预处理

4.1.1分词

4.1.2 去停用词

4.2 文本特征提取(特征选择)

4.2.1 词袋模型

4.2.2 TF-IDF 模型

4.2.3 word2vec(18年之前用的多)

4.2.4 bert

4.3 文本表示

4.4 分类器(分类算法模型)

4.4.1 传统机器学习方法(浅层学习模型)

4.4.2 深度学习方法


一.简介

文本分类就是把一段文本分类成我们事先定义好的类别。

二.分类

1.根据事先定义好的类别的数量,文本分类分两种:二分类和多分类。
2.从文本的标注类别上来讲,文本分类又可以分为单标签和多标签。

三.应用场景

主流的应用场景比如有情感分析、新闻分类、话题标记等等。

比如说像情感分析这个应用场景,可以判断某个人在网上的评论是正向的或者是负面的。

四.文本分类流程

4.1 文本预处理

中文文本预处理主要包括分词跟去停用词二个部分

4.1.1分词

目前常用的中文分词算法可分为三大类:基于词典的分词方法、基于统计的分词方法和基于理解的分词方法。

4.1.1.1 基于词典的分词方法

1.最大匹配算法

前向最大匹配算法

所有的分词算法都是基于词典的,假设我们要分词的句子为"我爱北京天安门",自定义词典如下:word_dic = ['我','爱','北京天安门','北京','天安门']

这里假定最大单词长度为5,前向最大匹配算法从句首开始,即尝试从"我爱北京天\安门"中第5个字的位置划一刀,看"我爱北京天"是否在词典内;

然后减小搜索长度,去掉最后面的“天”,看“我爱北京”是否在词典内;

最后搜索到“我”这个词在词典内,然后从"|爱北京天安\"中抽取爱北京天安开始搜索。

后向最大匹配算法

原理和前向最大匹配算法相同,只不过是反着来

双向最大匹配算法

双向最大匹配算法的原理就是将正向最大匹配算法和后向最大匹配算法进行比较,然后根据大颗粒度词越多越好,非词典词和单字词越少越好的原则,选取其中一种分词结果输出。

4.1.1.2 基于统计的分词方法

1. N-Gram模型

N-Gram模型属于语言模型(Language Model)的一种,语言模型用于估计不同词语出现的相关概率。

如果有一个句子是由n个词组成的序列,我们希望算得概率P(W)=P(w1​,w2​,⋯,wn​)

由条件概率公式P(A|B)=P(B)/P(A,B)得

P(w1​,w2​,,wn​)=P(w1​)P(w2​w1​)p(wn​w1​,,wn−1​)

这个概率并不好算, 由马尔科夫假设知,也就是假设当前词出现的概率仅仅跟前面几个有限词有关

当n=1时(Unigram,假设每个单词都是独立的):

当n=2时(Bigram,只依赖前面一个词):

然后就可以在给定的训练语料中,将上述的条件概率值都统计计算出来

对于biggram而言

对于n-gram而言

Biggram的公式推导,其他同理

至此,就可以通过n-gram判断一个句子分成哪些词是最合理的。

4.1.2 去停用词

在自然语言中,很多字词是没有实际意义的,剔除它们可能提高机器学习效果。

英文中例如:“the”、“of”、“for”、“with”、“to”等,在中文中例如:“啊”、“了”、“并且”、“因此”等。

4.2 文本特征提取(特征选择)

为了进行特征提取,常用的模型有词袋模型、TF-IDF模型、卡方特征选择、基于词向量的特征提取模型。

4.2.1 词袋模型

词袋模型忽略掉了文本的语法和语序,用一组无序的单词序列来表达一段文字或者一个文档 。可以这样理解,把整个文档集的所有出现的词都丢进袋子里面,然后 无序去重 地排出来(去掉重复的)

例如:

句子1:我/有/一个/苹果

句子2:我/明天/去/一个/地方

句子3:你/到/一个/地方

句子4:我/有/我/最爱的/你

把句子中的所有词:我,有,一个,苹果,明天,去,地方,你,到,最爱的 建立一个无序列表。这 4 句话中总共出现了这 10 个词。根据每个句子中词语出现的次数来表示每个句子。

句子 1 特征: ( 1 , 1 , 1 , 1 , 0 , 0 , 0 , 0 , 0 , 0 )

句子 2 特征: ( 1 , 0 , 1 , 0 , 1 , 1 , 1 , 0 , 0 , 0 )

句子 3 特征: ( 0 , 0 , 1 , 0 , 0 , 0 , 1 , 1 , 1 , 0 )

句子 4 特征: ( 2 , 1 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 1 )

4.2.2 TF-IDF 模型

这种模型主要是用词汇的统计特征来作为特征集,TF-IDF 由两部分组成:TF(词频),IDF(逆文档频率)两部分组成,利用 TF 和 IDF 两个参数来表示词语在文本中的重要程度。

1.TF

TF 词频,指的是一个词语在一个文档中出现的频率,TF 体现的是词语在文档内部的重要性。

其中分子表示词i在文档 j中出现的频次。分母则是文档 j中所有词频次的总和,也就是文档 j中所有词的个数。

2.IDF

其中|D|代表文档的总数,分母部分则是代表文档集中含有 i 词的文档数。

原始公式是分母没有+1 的,这里+1 是采用了拉普拉斯平滑,避免了有部分新的词没有在语料库中出现而导致分母为零的情况。

3. TF-IDF

TF IDF 一个关注文档内部的重要性,一个关注文档外部的重要性,最后结合两者,把 TF IDF 两个值相乘就可以得到 TF-IDF 的值。即:

4.2.3 word2vec(18年之前用的多)

1.什么是word2vec

word2vec是一种将word转为向量的方法,其包含两种算法,分别是skip-gramCBOW,它们的最大区别是skip-gram是通过中心词去预测中心词周围的词,而CBOW是通过周围的词去预测中心词

2. skip-gram的一般情形

模型只接受数值型输入,所以需要先把一个词语转为one-hot encoder形式的向量再作为模型的输入。所谓的one-hot encoder本质上是用一个只含一个 1、其他都是 0 的向量来唯一表示词语。

当模型训练完后,最后得到的其实是神经网络的权重,比如现在输入一个词语 x one-hot encoder: [1,0,0,,0],则在输入层到隐层的权重里,只有对应 1 这个位置的权重被激活,这些权重的个数,跟隐含层节点数是一致的,从而这些权重组成一个向量 vx 来表示x,而因为每个词语的 one-hot encoder 里面 1 的位置是不同的,所以,这个向量 vx 就可以用来唯一表示 x

模型训练过程:

1.首先将词语的one-hot编码输入到输入层

2.然后构造二个参数矩阵,分别为中心词矩阵和周围词矩阵

3.用词语的one-hot编码去乘以中心词矩阵得到一个1 x N向量,这个1 x N向量就可以认为唯一的表示中心词。

4.用中心词向量矩阵乘以周围词向量矩阵得到1×V向量中的每一个元素

5.对得到的向量进行softmax归一化,就可以得到中心词与词典中其他词的相关概率,相关概率最大的前几个被认为是中心词的上下文词。

6.使用反向传播算法,使得上下文词语的概率最大。

3.CBOW的一般情形

跟 Skip-gram 相似,只不过Skip-gram 是预测一个中心词的上下文,而 CBOW 是用上下文预测这个中心词

4.2.4 bert

4.3 文本表示

文本是一种非结构化的数据信息,是不可以直接被计算的。文本表示的作用就是将这些非结构化的信息转化为计算机可以理解的结构化的信息 。

主要有词袋模型、向量空间模型等等。向量空间模型是目前文本处理应用领域使用最多且效果较好的文本表示法,简单说就是在词向量中给每个词一定的权重(这个权重可以是简单的词频,也可以是 TF-IDF 等等,非常灵活)

文本表示这一步往往同上一步(文本特征提取)联系非常紧密,实际应用中往往一并完成了,所以你会看到有些方法同时并属于两者

4.4 分类器(分类算法模型)

文本分类方法模型主要分为两个大类,一类是传统的机器学习方法(具体可以再分为四类),另一类是最近很火的深度学习模型。

4.4.1 传统机器学习方法(浅层学习模型)

1.基于规则的模型

决策树

2.基于概率的模型

主要用朴素贝叶斯分类器,半朴素贝叶斯分类器基本不用

3.基于几何学的模型

支持向量机

4.基于统计的模型

K近邻算法(KNN)

4.4.2 深度学习方法

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

真滴book理喻

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值