自然语言处理:原理简明教程08-文本分类和情感分析
欢迎转载,作者:Ling,注明出处:自然语言处理:原理简明教程08-文本分类
参考书:《统计自然语言处理(第2版)》,《形式语言与自动机理论》,《统计自然语言基础》,《自然语言处理综论》 ,《概率图模型:原理与技术》,《概率论与数理统计》,《统计学方法》,《中文自动分词与标注》
文本分类:在预定义的分类体系下,根据文本的特征(内容或属性),将给定文本与一个或者多个类别相关联的过程
情感分析:借助计算机帮助用户快速获取、整理和分析相关评价信息,对带有感情色彩的主观性文本进行分析、处理、归纳和推理
文本分类实例:
- 判定垃圾邮件
- 网页自动分类
自动化门户系统(百度新闻,谷歌新闻等)
搜索引擎根据用户标签类型推送丌同类别的搜索结果
情感分析实例:
- 评论自动分析
- 水军识别
文本分类步骤:
- 选取适当的特征及权重,将文本量化映射为向量空间(样本空间)中的向量(样本)
- 通过在样本空间构建适当的分类器或聚类解决文本分类问题,通过计算向量夹角余弦计算文本相似度
- 例如:垃圾邮件处理,1)选词,2)通过信息增益选词,4)计算权值 5)训练分类函数
文本分类数学定义:文本分类的任务可以理解为获得这样一个函数Φ:D×C→{T,F},其中,D={d1,d2,...,d|D|}表示需要进行分类的文档,C={c1,c2,...,c|C|}表示预定义的分类体系下的类别集合。T值表示对于<dj,ci>来说,文档dj属于类ci,而F值表示对于对于<dj,ci>来说,文档dj不属于类ci
VSM(向量空间模型):
- 文档:通常是文章中具有一定规模的片段,如句子、句群、段落、段落组直至整篇文章
- 项/特征项:特征项是VSM中最小的不可分割的语言单位,可以是字、词、词组或短语等。一个文档的内容被看成是它含有的特征项所组成的集合,表示为:Document=D(t1,t2,...,tn),其中tk是特征项,1≤k≤n
- 项的权重:对于含有n个特征项的文档D(t1,t2,...,tn),每一特征项tk都都依据一定的规则被赋予一个权重wk,表示它们在文档中的重要程度。这样一个文档D可用它含有的特征项及其特征项所对应的权重所表示:Document=D(t1,w1;t2,w2;...,tn,wn)
- 相似度:
文本特征的选择:
- 基于文本频率的特征提取法
- 信息增益法
- χ2统计量
- 互信息法
基于文本频率的特征提取法:从训练语料中统计某个特征的文档的频率(个数),然后根据设定的阈值,当该特征项的DF值小于某个阈值时,从特征向量空间去掉该特征项;当该特征项的DF值大于某个阈值时,也从特征向量空间去掉该特征项。
- 优点:简单易行
- 缺点:理论根据不足
信息增益法(IG)(宗书420页):计算Gain(ti)=Entropy(S)-Expected Entropy(Sti),值越大,该特征越重要。
- 优点:有理论支撑
- 缺点:特征数目较少时,会存在数据稀疏问题
χ2统计量(CHI):
互信息法(MI):类似χ2统计量
权值计算:
说明:
分类器:
- 朴素贝叶斯分类器
- SVM(优于贝叶斯、Rocchio、LLSF,不kNN效果相当)
- kNN(效果不SVM同属最佳)
- LLSF(稍逊于kNN不SVM)
- 决策树分类器
- 模糊分类器
- Rocchio分类器
- 基于投票的分类斱法
- 神经网络分类器(深度学习网络具有巨大发展潜力)
案例:
垃圾邮件:
- 特征选择:关键词,电话号码,QQ号,链接,电子邮箱等
- 权重计算:布尔权重
- 分类器:贝叶斯,SVM,KNN等
文本重排:
- 用途:判别论文抄袭,转载网页,灌水
- 特征选取:词(字)
- 权重计算:绝对词(字)频
- 判别:夹角余弦,马氏距离
- 其它斱法:最长公共子串计算
分类性能评测:
VSM方法的缺陷:
- 没有能力处理一词多义和一义多词问题,例如同义词也分别被表示成独立的一维,计算向量的余弦相似度时会低估用户期望的相似度;而某个词项有多个词义时,始终对应同一维度,因此计算的结果会高估用户期望的相似度。
- 汉语用户倾向于频繁使用近义词显示“辞藻丰富”“有文化”,不喜重复使用相同词汇。也喜欢使用相关语显示“幽默感”,这是常见语言现象。
新方法:
- LSA
- pLSA
- LDA
LSA(latent semantic analysis)潜在语义分析:
也被称为LSI(latent semantic index),是Scott Deerwester, Susan T. Dumais等人在1990年提出来的一种新的索引和检索斱法。该斱法和传统向量空间模型(vector space model)一样使用向量来表示词(terms)和文档(documents),幵通过向量间的关系(如夹角)来判断词及文档间的关系;而不同的是,LSA将词和文档映射到潜在语义空间,从而去除了原始向量空间中的一些“噪音”,提高了信息检索的精确度。
SVD:奇异值分解与主成分分析:http://www.bdpt.net/cn/tag/svd/
- 思想:通过线性代数,可以将任何矩阵,分解成三个矩阵的乘积
- 参考:奇异值分解
利用SVD求解LSA:
- 分析文档集合,建立Term-Document矩阵。
- 对Term-Document矩阵进行奇异值分解。
- 对SVD分解后的矩阵进行降维,也就是奇异值分解一节所提到的低阶近似。
- 使用降维后的矩阵构建潜在语义空间,或重建Term-Document矩阵。
- 图示说明:
作用:
- 找related word
- 相似文档
- 相似用户,推荐相似内容
SVD缺点:
计算复杂度高,当矩阵达到1000维以上时计算已经非常缓慢,但文本分析一般都会形成非常大型的“文档-词”矩阵,从而难以实现,甚至存储都很困难
pLSA:
- 两篇文章:《Unsupervised Learning by Probabilistic Latent Semantic Analysis》《99999999_PLSA及EM算法-yangliuy》
- 几点说明:
1)后面这个公式由来,可以想象一个行向量,乘以一个列向量,d上发生w的概率,其实就是d上发生z后z再发生w,把所有z情况加起来
2)这个其实不完全等,最后可以化成为,w和z上发生d的概率,等于 z上发生d的概率,这是一个近似等,另外这个也成了那个EM中的aj,aj用待估计的参数表示出来了
3)在L上加上E,其实利用了EM中的jesson不等式。
4)整个EM过程为:随机给P(wj/zk)和P(zk/di),然后计算aj(6式),再假设P(wj/zk)和P(zk/di)未知,利用(11和12式求解,极大似然得到的公式),如此反复,最后收敛,得到了整个分解后的两个矩阵,由P(wj/zk)构成一个,P(zk/dj)构成一个
pLSA的弱点:
- 建模比较粗糙,统计理论基础不足,基于概率推导
- 没有考虑在NLP中语料稀疏的情况
- EM算法迭代计算繁琐,计算量大
- 解决:更精密优雅,但又不容易理解的模型LDA(Latent DirichletAllocation),LDA可以说是统计理论大观园,需要有较好的概率统计基础才可以理解
LDA(以后补充,了解暂时):
- 参考资料:《Parameter estimation for text analysis》《99999999_PLSA及EM算法-yangliuy》《99999999_LDA数学八卦》
预备知识(数学八卦上有):
Beta分布:特点是和二项分布共轭,即Beta分布+二项分布还是Beta分布
Diricle分布:是Beta分布推广,即D分布+多项分布还是D分布
Gibbs抽样:将高维的抽样概率转化为低维的抽样概率
1)《LDA数学八卦》第25页
2)[0,1]内均匀随机数产生
3)正态分布随机数产生:Box-Muller变换
4)高维分布随机数产生比较困难,解决:Gibbs抽样(高维变低维)
5)Gibbs抽样基于MCMC(马尔科夫链蒙特卡罗斱法)
6)抽样三阶段:initialization,burn-in,sampling(随机给概率,不停根据Gibbs抽样给样本点,得到样本点,选取样本点)
7)为了得到近似独立的采样,也可以在采样阶段设置每隔L次迭代采样一次(目的是尽可能保证独立,连续的可能不独立)
Gibbs抽样算法:
- 图示:
说明:
- 图一是所有样本点轨迹
- 图二说明了,如何从2维变成1维,首先,所有联合概率都知道,然后随机给x0,y0,然后格局条件概率公式可以得到x1,根据x1又得到y1,如此求出所有
- 图三说明了如何从n维降维到n-1维度,然后n-1维度又可以根据n-2计算
LDA模型:
- 论文给的图:
说明:
1)
算法理解
- 首先根据D分布,随机给出一系列γ概率值
- 根据D分布,随机给出一系列θ概率值
- 根据P分布,随机给出一系列N值
- 根据多项式公式+θ可以得到主题Zm,n
- 结合γ和Zm,n可以推测出Wm,n
两个基本问题:
训练思路:先按照D分布,给出θ和γ,然后进行Gibbs抽样,获得topic概率,然后根据θ和γ得到word概率,有了word概率,可以根据极大似然,求得θ和γ值,然后反复。
- 首先给出联合分布公式(但由于topic是隐变量,所以实际上并不能进行计算)
- 从联合分布推导出条件概率公式(用于Gibbs抽样)
- 通过Gibbs抽样过程推算出每个词所属topic
- Topic算出来后,分布中已经没有隐变量,通过推导公式倒推出分布参数
算法:
联合分布:
Gibbs抽样计算条件概率:
情感分析:
- 情感分析:根据文本所表达的含义和情感信息将文本分为褒扬或贬义的两种或多种类型。
- 情感分析是特殊的文本分类问题,既有一般文本分类的共性问题,也有其特殊性。例如情感信息表达的隐蔽性(如笑而不语),多义性和极性不明显等(好坏评论都在一个里面)。领域相关性强(如他是一个很好的演员(在政治领域))。数据不平衡较为明显(好评论多,坏评论少),很多无用信息,打分虽然高,实际评论差。
情感分析方法:
- 有监督学习:使用机器学习方法用于训练大量标注样本
- 半监督学习:通过在少量标注样本上训练,并在大量未标注样本上进行学习的方式构建分类模型
- 无监督学习:仅使用非标注样本进行情感分类。大多利用情感分类标注的种子词集来实现
效果:主题分类可以达90%,而情感分析只有60%
情感分析论文:
《Thumbs up Sentiment Classification using Machine Learning Techniques》
论文贡献:
- 关于情感分析被引用次数最多的论文,强调了情感分类对于一般文本分类的特殊性
- 首次将有监督学习方应用于情感分类
- 比较了多种分类算法及各种特征/权值设计斱法的效果
使用数据:
- 取自电影评论网站的文章,评语
- 因为该网站在评论的同时带有星级打分,所以是天然的学习数据
- 电影评论的情感分类被过往工作认为是最困难的(彔得66%的准确率)
特征选取:
说明:
- ties表示无法确定类别
- 图一是人工,图二是基于统计+人工
分类器:
- 朴素贝叶斯(NB)分类器
- 最大熵分类器
- 支持向量机
结果:
说明:
- unigram比unigram+bigram更好,即只考虑单个词是否存在,比考虑2个连续词更好
- (5)中Pos是带上词性信息
- (6)是只看形容词
论文《A Sentimental Education Sentiment Analysis Using Subjectivity Summarization Based on Minimum Cuts》
说明:
1)将评论分为句子si
2)通过一定方法挑出最重要的句子,去掉不相关句子
3)然后根据这些剩下的句子用SVM或者NB等方法进行分类
挑出重要的句子方法:
说明:
1)Y,M,N为三个句子
2)每条边值意义:ind1(Y)[.8]表示Y句子,属于S类的概率维0.8,assoc(Y,N)[.1]表示Y和N一起的概率为0.1,其他类似
3)假设已经知道图中每条边的值,可以由图得到右边的表,例如:{Y,M}表示,只有YM同时属于C1,所以它属于C1的Individual penalties:{Y}属于C2 0.2,{M}属于C2,0.5,{N}也属于C1 0.1, 它属于C1的Association penalties:{Y,M}不在一个分类中为1-1.0,{Y,N}在一起0.1,{M,N}在一起0.2,cost为两者相加
这样就能得到整个表按cost从小到大排序,尽可能让小的满足,大的不满足
4)如何得到这些权值,通过样本训练出来,A.选短句子语料,训练得到individual权值,B.选择多句子一起的语料,如果两个句子紧挨着,关联权值大,否则小
抽取主题过程:
说明:
根据表让penalties最小的这些句子留下
评估:
效果还行
论文《Joint Sentiment Topic Model for Sentiment Analysis》
说明:就是让隐语义有两层:topic和sentiment,并且提出了一个EM算法JST求解矩阵值
实验结果:
论文《Using_appraisal_groups_for_sentiment_analysis》
将每个单词带上属性:
例如关于Attitude的取值
从后往前扫描句子,对句子属性进行推断:happy的时候是正向,very happy force加强,not very happy,force减弱,变成负向
可以提取的特征:例如第一个是只用attitude+传统一些词频信息等
有了特征,将特征丢给分类器分类:本文用的是weka的SMO,线性SVM分类器
结果:最好的是BOW+G:AO
留言