自然语言处理入门理论知识
一、什么是自然语言处理自然语言处理(NaturalLanguageProcessing,NLP)
是人工智能领域的主要内容,研究用电子计算机模拟人的语言交际过程,使计算机能理解和运用人类社会的自然语言,实现人机之间的自然语言通信,以代替人的部分脑力劳动,包括查询资料、解答问题、摘录文献、汇编资料以及一切有关自然语言信息的加工处理。
1.1自然语言处理的过程目录一、什么是自然语言处理1.1自然语言处理的过程1.2自然语言处理遇到的困难1.2.1歧义1.2.2未知语言现象1.3 自然语言处理系统vs.程序设计语言的编译系统1.4 NLP的基本方法及其发展1.4.1理性主义方法(基于规则的方法、符号派)1.4.2 经验主义方法(基于统计的方法、随机派)二、语料库2.1基本概念2.2语料库类型2.3 语料库加工的三种主要方式三、语言模型3.1n元语法模型3.2数据平滑技术3.2.1Laplace法则、Lidstone法则3.2.2Good-Turing估计3.2.3线性折扣四、隐马尔可夫模型4.1马尔科夫模型马尔科夫模型的形式化定义:4.2隐马尔可夫模型HMM的形式化定义HMM涉及的三个基本问题:五、字频统计5.1字频统计的意义5.2 单字字频统计5.3 双字字频统计六、英文词法分析6.1英文断词6.1.1句点引起的歧义6.1.2撇号引起的歧义6.1.3连字符引起的歧义6.1.4断句6.2英文形态还原 七、汉语自动分词7.1汉语自动分词中的基本问题7.1.1分词标准7.1.2切分歧义7.1.3 未登录词7.2基本分词方法八、词性标注8.1 基于规则的词性标注方法8.2 基于统计的词性标注方法8.3 统计与规则相结合的方法九、语法分析9.1 句子结构的两种观点9.1.1 短语结构(Phrasestructure/Constituency)9.1.2 依存结构(Dependencystructure)9.2文法的描述9.2.1 无约束短语结构文法9.2.2上下文有关文法9.2.3上下文无关文法9.2.4 正则文法9.2.5 四种文法类型的比较9.3 自底向上的句法分析9.3.1移进-归约算法9.3.2欧雷(Earley)分析法9.3.3线图分析法9.3.4CYK分析法9.3.4扩展CYK分析法自然语言处理的基础:词法分析,语法分析,语义分析
第一步:分析源语言(文本理解)
通过词法分析,语法分析,语义分析来对源语言进行分析理解
获得句子的语义
第二步:生成目标语言(文本生成)
任何一个NLP系统都离不开文本理解和文本生成。
通过应用到不同方面,形成了不同的领域。
1.2自然语言处理遇到的困难1.2.1歧义词法层面:
例1:Imadeherduck.
her:宾格or所有格?
例2:“打”的词性是什么?
动词:打电话
介词:打今天起
量词:一打铅笔
句法层面:
Puttheblockintheboxonthetable.把盒子里的积木放到桌子上
Puttheblockintheboxonthetable.把积木放到桌子上的盒子里
语义方面:
她这个人真有意思。 有趣
我根本没有那个意思。 想法
语用层面(程度):
女孩给男朋友打电话:如果你到了,我还没到,你就等着吧;
如果我到了,你还没到,你就等着吧。
语音层面:
I:eye 相同发音。
1.2.2未知语言现象(1)意想不到的情况:如未知词汇、未知结构等
(2)语言也是不断发展变化的
新的词汇
新的词义
新的词汇用法
1.3 自然语言处理系统vs.程序设计语言的编译系统程序设计语言
自然语言
通常采用CFG描述(上下文无关文法)
远远超出CFG的表达能力
语言中不存在歧义
语言中存在复杂的歧义
人服从机器
机器服从人
无限集→有限集
映射过程
有限集→无限集
推演过程
1.4 NLP的基本方法及其发展1.4.1理性主义方法(基于规则的方法、符号派)建立符号处理系统:知识表示体系(规则)+推理程序
希望通过手工编码大量的先验知识和推理机制,得以复制人类大脑中的语言能力
理论基础:乔姆斯基(Chomsky)的语言理论
1.4.2 经验主义方法(基于统计的方法、随机派)建立数学模型
利用统计学、模式识别和机器学习等方法训练模型参数
语料库:收集一些文本作为统计模型建立的基础
理论基础:香农(Shannon)的信息论
二、语料库2.1基本概念语料库(Corpus):
存放语言材料的数据库(文本集合)。库中的文本通常经过整理,具有既定的格式与标记,特指计算机存储的数字化语料库
Corpora:语料库集合
关于语料库的三点基本认识:
(1)语料库中存放的是在语言的实际使用中真实出现过的语言材料
(2)语料库是以电子计算机为载体、承载语言知识的基础资源
(3)真实语料需要经过加工(分析和处理),才能成为有用的资源
2.2语料库类型(1)专用语料库&通用语料库
专用语料库:
是为了某种专门的目的,只采集某一特定的领域,特定的地区,特定的时间,特定的语体类型的语料构成的语料库。
通用语料库:
抽样时从各个角度考虑了平衡问题的语料库。
按照事先确定好的某种标准,把每个子类的文本按照一定比例收集到一起的语料库。
(2)单语语料库&多语语料库
单语语料库:只含有单一语言文本的语料库
多语语料库:不只有一种语言的语料库
平行语料库
比较语料库
(3)共时语料库&历时语料库
共时语料库:为了对语言进行共时研究而建立的语料库。
历时语料库:对语言文字的使用进行动态追踪、对语言的发展变化进行监测的语料库。
特点:语料的动态性:语料是不断动态补充的
具有量化属性“流通度”
(4)生语料库&熟语料库
生语料库:没有经过任何加工处理的原始语料数据
熟语料库:经过了加工处理、标注了特定信息的语料库
2.3 语料库加工的三种主要方式人工:非常昂贵,需要大量的人力资源
自动:不完全准确
半自动(人机结合):兼顾两者的优点
先由计算机对待加工的语料进行自动加工,然后由人工校对
由计算机自动选择语料库中需要人干预的自动加工不能解决的部分,从而减少人的工作
三、语言模型3.1n元语法模型马尔可夫假设:
直觉上讲,下一个词的出现仅依赖于它前面的一个或几个词。受离它较近的词的影响较大。
二元语法模型(Bigrammodel):
假设下一个词的出现只依赖它前面的一个词。
由此我们可以推广
三元语法模型(Trigrammodel):
假设下一个词的出现依赖它前面的两个词。
n元语法模型(n-grammodel):
假设下一个词的出现依赖它前面的n-1个词。
n的选择:
更大的n:对下一个词出现的约束信息更多,具有更大的辨别力
更小的n:在训练语料库中出现的次数更多,具有更可靠的统计信息,具有更高的可靠性
理论上,n越大越好
实践中,由于n的增加,计算量大量增加,bigram和trigram用的较多
二元语法模型下的最大似然估计计算:
假设训练语料由下面3个句子构成
MotherreadsSC
Fatherreadsatextbook
Shereadsabookbyfriends
问题1:用最大似然估计的方法计算概率p(Fatherreadsabook)
解题思路:把每个词出现的概率相乘。
p(Father|)=1/3
p(reads|Father)=1
p(a|reads)=2/3
p(book|a)=1/2
p(|book)=1/2
在nlp中BOS表示开始符号,EOS表示结束符号。
p(Fatherreadsabook)
=p(Father|)*p(reads|Father)*p(a|reads)*p(book|a)*p(|book)
=1/3*1*2/3*1/2*1/2
问题2:用最大似然估计的方法计算概率p(He readsabook)
在已有的语料库中没有出现过Hereads,所以
p(reads|He)=0
出现了0概率问题。
零概率产生的原因:
映了语言的规律性,即本来就不该出现
数据稀疏(DataSparseness):
由于语言模型的训练文本T的规模及其分布存在着一定的局限性和片面性,许多合理的语言搭配现象没有出现在T中。
仅靠增大语料库的规模,不能从根本上解决数据稀疏问题
解决办法:
数据平滑技术
为了产生更准确的概率来调整最大似然估计的技术
基本思想:“劫富济贫”
3.2数据平滑技术3.2.1Laplace法则、Lidstone法则最简单的平滑技术—Laplace法则
首先我们要获得词汇表的容量。
在上题中:算上BOSEOS,一共有13个词,所以容量V=13
在最大似然计算中,分子+1,分母+v
问题一:
=p(Father|)*p(reads|Father)*p(a|reads)*p(book|a)*p(|book)
=1/3 *1 *2/3 *1/2 *1/2
=2/16 *2/14 *3/16 *2/15 *2/15
问题2:
=p(He|)*p(reads|He)*p(a|reads)*p(book|a)*p(|book)
=1/16 *1/14 *3/16 *2/15 *2/15
3.2.2Good-Turing估计基本思想:对于任何一个发生r次的事件(n元语法),都假设它发生r*次
举例说明:
r nrr*060 60/50*115050/40*224040/30*3.........3.2.3线性折扣四、隐马尔可夫模型4.1马尔科夫模型随机过程:又称“随机函数”,是随时间而随机变化的过程
马尔科夫模型描述了一类重要的随机过程
一阶马尔可夫过程:
如果系统在时间t的状态只与其在时间t-1的状态相关,则该随机过程称为一阶马尔可夫过程马尔可夫模型:独立于时间t的随机过程
马尔科夫模型的形式化定义:4.2隐马尔可夫模型HMM的形式化定义HMM涉及的三个基本问题:(1)给定模型μ=(A,B,π),如何有效地计算某个观察序列O=o1o2……oT出现的概率?
前向(ForwardAlgorithm)算法
(2)给定模型μ=(A,B,π)和观察序列O=o1o2……oT,如何有效地确定一个状态序列Q=q1q2……qT,以便最好地解释观察序列?
维特比(Viterbi)算法
(3)给定一个观察序列O=o1o2……oT,如何找到一个能够最好地解释这个观察序列的模型,即如何调节模型参数μ=(A,B,π),使得P(O|μ)最大化?
Baum-Welch算法
五、字频统计5.1字频统计的意义传统语言学:运用统计数据对语言现象作定量描写
计算语言学:也运用统计数据
支持语言的自动分析
字频和词频
语言现象(事件)的概率无法直接观察到,需要根据频率来估计
5.2 单字字频统计单字字频统计:
给定一批语料,统计出其中有多少个不同的汉字,每个汉字各出现多少次
求汉字的频率
如果语料规模充分大并且分布均匀,就可以根据字频来估计每个汉字的出现概率
字表的结构:
方法一:字表中必须有单字和字频两个域
数组的元素是一个结构 Structzf { CStringz; intf; }
方法二:通过汉字的ASCII码跟数组元素下标建立对应关系 intHZFreq[HZ_NUM]
把第一个汉字的字频放在HZFreq[0]中,把第二个汉字的字频放在HZFreq[1]中,……,把最后一个汉字的字频放在HZFreq[HZ_NUM-1]中
不必在数组中存放汉字本身,元素下标就代表着特定的汉字,节约了空间
根据ASCII码可以确定汉字在数组中的位置,无须进行查找,节约了时间
5.3 双字字频统计任务:统计给定语料中有多少个不同的字对,每个字对各出现多少次
例如:“发展中国家的” “发展”、“展中”、“中国”、“国家”、“家的”
字对不一定是双字词“展中”、“中国”、“家的”
作用:单字出现的条件概率例如:P(国|中)=P(中,国)/P(中)。计算中必然要用到单字出现的概率,因此做双字字频统计往往同时做单字字频统计,除非单字字频已经统计过
双字的相关性
六、英文词法分析6.1英文断词6.1.1句点引起的歧义句点的作用:(1)句子结束(2)小数点 (3)缩写 (4)缩略
歧义现象:缩写中的句点位于单词的后面,同句号产生冲突
解决方法:通常采用基于规则的方法
(1)不借助词表
单个字母后接一个句点 如M.H.Thatcher
连续的“字母-句点”序列如U.S.
一个大写字母后接若干辅音小写字母及句点如Mr.
(2)借助词表(通用词表、缩略词表)
将待判定的字符串记为S,字符串及后面的句点记为S’
S在通用词表中存在,则S’不是缩写
S’在缩写词表中存在,则S’是缩写
S’后是小写字母、数字、逗号、分号、叹号或问号,则S’是缩写
S’后的单词首字母大写,则S’不是缩写
当S及S’在词表中均不存在时,或以上几条规则有冲突时,利用篇章信息
S在篇章中其他地方出现过,而S’未出现,则S’不是缩写
S’在篇章中其他地方出现过,而S未出现,则S’是缩写
6.1.2撇号引起的歧义撇号的作用:主要用于构成英文的动词缩写式和名词所有格。
歧义现象:两种方式不好区分。
解决方法:分成两个单元。
6.1.3连字符引起的歧义连字符的功能:
构成合成词
固定成词,如:e-mail,co-operate
根据特定用法或语言环境生成的词,如four-year,1983-1987,All-In-One
在排版时调整格式,此时需去掉连字符
歧义现象 :第一类功能的连字符恰好处于行尾
解决方案:主要通过词表解决
6.1.4断句歧义现象:多个句末点号 例如:!!
解决方法:找到句末标点时,不能认为这一句已结束,应该再往后搜索,直到不是句末点号为止。
歧义现象:句末点号之后还有右侧标号
例子:“这是你的课本吗?”“不是,是小张的。”他微笑着回答。
解决方法:发现(若干个连续的)句末点号之后,如果遇到右侧标号,还应该搜索完所有连续的右侧标号。
6.2英文形态还原英语形态还原(:去除屈折型语言的词尾形态变化,将其还原为词的原形,即词元(lemma)。
基于规则的形态还原方法:
动词:-ed-ing-s
名词:-s-’s
形容词:-er-est-ly
七、汉语自动分词什么是汉语自动分词:
用空格或其它标记把词跟词分开
词是语言中能自由运用的基本单位
中文信息处理中必不可少的第一道工序
汉语分词的实现途径:
人工分词:工作量大、难以处理大规模语料
计算机自动分词:速度快、一致性好、一般来说正确率比人工分词低
7.1汉语自动分词中的基本问题7.1.1分词标准7.1.2切分歧义(1)交集型歧义切分
定义 :一个汉字串包含A、B、C三个子串,AB和BC都是词,到底应该切成AB/C还是切成A/BC
例子:“乒乓球拍卖完了”
乒乓球/拍卖/完/了
乒乓球拍/卖/完/了
(2)组合型歧义切分
定义 :包含至少两个汉字的汉字串,它本身是词,切开来也分别是词
例子 :个人
屋子/里/只/有/一/个/人
这/是/我/个人/的/意见
“真歧义”和“伪歧义”:
真歧义:存在两种或两种以上的可实现的切分形式
伪歧义:一般只有一种正确的切分形式
7.1.3 未登录词汉语未登录词的种类:
专有名词实体名词衍生词新词(普通词汇或专业术语)
歧义场景:
专有名词的首词和尾词可能与上下文中的其它词汇存在交集型歧义切分
例子:南京市长江大桥。
7.2基本分词方法(1)最大匹配法
匹配: 分词过程中用文本中的候选词去跟词表中的词匹配
匹配成功,则认为候选词是词,予以切分。否则就认为不是词
最大匹配: 尽可能地用最长的词来匹配句子中的汉字串,例如“社会”和“社会主义”
切出来的词尽可能长,词数尽可能少
(2)最少分词法(最短路径法)
基本思想 :分词结果中含词数最少
等价于在有向图中搜索最短路径问题
(3)最大概率法(最短加权路径法)
基本思想:根据信源-信道模型,认为词串经过信道传送,由于噪声干扰而丢失了词界标记,到输出端便成了一个汉字串
自动分词就是已知一个汉字串,求跟它对应的、有最大概率的词串
概率最大的词串,便是最佳的词串
(4)与词性标注相结合的分词方法
基本思想 :将自动分词和基于Markov链的词性自动标注技术结合起来,利用从人工标注语料库中提取出的词性二元统计规律来消解切分歧义
将分词和词类标注结合起来,利用丰富的词类信息对分词决策提供帮助,并且在标注过程中又反过来对分词结果进行检验、调整,从而极大地提高切分的准确率
(5)基于互现信息的分词方法
基本思想: 从形式上看,词是稳定的字的组合。因此,相邻的字同时出现的次数越多,就越有可能构成一个词
(6)基于字分类的分词方法
基本思想: 将分词过程看作是字的分类问题
每个字有4种词位词首(B)词中(M)词尾(E)单独成词(S)
(7)基于实例的汉语分词方法
基本思想 :在训练语料中已经存在的事先切分好的汉字串为以后输入的待切分句子提供可靠的实例
八、词性标注词性标注:根据一个词在某个特定句子中的上下文,为这个词标注正确的词性
8.1 基于规则的词性标注方法基本思想: 按照兼类词搭配关系和上下文语境建立词性消歧规则
步骤: Step1:使用一部词典给每个单词指派一个潜在词性表
Step2:使用歧义消解规则表来筛选原来的潜在词性表,使每个单词得到一个单独的词性标记
8.2 基于统计的词性标注方法(1)基于马尔科夫模型的词性标注
(2)基于HMM的词性标注
已知一个词串(观察值序列),求跟它对应的、有最大概率的词性标记串(隐状态序列)
(3)分词与词性标注一体化模型
已知一个字串,求跟它对应的、有最大概率的词及词性串
8.3 统计与规则相结合的方法基于转换的错误驱动学习
它是机器学习中基于转换的学习方法的一个实例
从基于规则的方法和基于统计的方法中得到了启示
与基于规则的方法相似:TBL是基于规则的
与基于统计的方法相似:TBL是一种机器学习技术,其中的规则是从数据自动推导出来的。TBL是一种有指导的学习技术,在标注之前需要有一个训练语料库。
九、语法分析句法 :句子的构成方法。通常以规则的形式表示。
句法分析(SyntacticParsing):根据句法规则,分析给定句子的结构。
例子:Theboyputthetortoiseontherug
9.1 句子结构的两种观点9.1.1 短语结构(Phrasestructure/Constituency)
低级:冠词+名词=名词短语
中级:介词+名词短语=介词短语动词+名词短语=动词短语,动词短语+介词短语=动词短语
高级:名词短语+动词短语=句子
9.1.2 依存结构(Dependencystructure)依存结构: “依存”是指词语词之间支配与被支配的关系
处于支配地位的成分称为支配者(head);
处于被支配地位的成分称为从属者(modifier,dependency)
箭头从支配者指向从属者
动词是句子的中心并支配别的成分,它本身不受任何其他成分支配。
动词支配一切
介词-->名词-->冠词
9.2文法的描述
一条“产生式”就是一条句法规则。
不同类型的文法对规则的形式有不同的限制。
句法分析前首先要确定使用什么类型的文法
9.2.1 无约束短语结构文法α→β
0型文法,对产生式没有任何限制
0型语言:由0型语法生成的语言
生成能力太强,无法设计一个程序来判别输入的符号串是不是0型语言中的一个句子
9.2.2上下文有关文法α→β (|α|≤|β|)
1型文法,规则左部的符号个数少于或等于规则右部的符号个数
1型语言:由1型文法生成的语言
Example:xYz→xyz
9.2.3上下文无关文法A→β (A是非终结符,β是终结符和/或非终结符组合)
2型文法,产生式的左部是一个非终结符
2型语言:由2型文法生成的语言
Example:Y→y
9.2.4 正则文法右线性文法
A→βB
A和B是非终结符,β是终结符组合
左线性文法
A→Bβ
A和B是非终结符,β是终结符组合
右线性文法和左线性文法都是正则文法,并且二者是等价的
9.2.5 四种文法类型的比较
0型文法生成能力太强
上下文有关文法(1型)的分析算法过于复杂
上下文无关文法(2型)的规则体系便于构造,是研究得最多的一种文法
正则文法(3型)通常用于词法分析
9.3 自底向上的句法分析基本思想 :最左归约(归约是推导的逆过程)
9.3.1移进-归约算法9.3.2欧雷(Earley)分析法9.3.3线图分析法9.3.4CYK分析法9.3.5扩展CYK分析法
计算机自然语言处理的原理,什么是自然语言处理(NLP)
自然语言是利用电脑等工具对人类所持有的语言信息(包括口语信息和文字信息)进行各种加工,并建立各种类型的人—机—人系统。电子计算机处理和加工人类的书面和口头语言信息的技术。同时它也是人工智能的一个主要内容,是人类用电子计算机模拟人类智能的一个重要尝试,也是人工智能领域的一大突破点。
如图所示:
1.自然语言(NLP)处理系统包括:
1、机器翻译系统
2、自然语言理解系统
3、信息自动检索系统
4、信息自动抽取系统
5、文本信息挖掘系统
6、术语数据库系统
7、计算机辅助教学系统
8、语音自动识别系统
9、语音自动合成系统
10、文字自动识别系统
举个例子:智能问答机器人就包括了自然语言理解系统、信息自动搜索系统、信息自动抽取系统、文本信息挖掘系统、语音识别系统和语音合成系统。需要和大家强调的是,智能问答机器人不单单是简单地搜索关键词寻找对应语句而是有规律的自然语言处理和信息检索还是有所区别的。
自然语言处理(NLP)语义分析
文章目录第一部分:文本分类一、文本预处理(解决特征空间高维性、语义相关性和特征分布稀疏)二、文本特征提取三、分类模型第二部分:情感分析一、概述二、基于情感词典的情感分类方法三、基于机器学习的情感分类方法第三部分:意图识别一、概述二、意图识别的基本方法三、意图识别的难点转载来源:https://blog.csdn.net/weixin_41657760/article/details/93163519第一部分:文本分类训练文本分类器过程见下图:文本分类问题:给定文档p(可能含有标题t),将文档分类为n个类别中的一个或多个文本分类应用:常见的有垃圾邮件识别,情感分析文本分类方向:主要有二分类,多分类,多标签分类文本分类方法:传统机器学习方法(贝叶斯,svm等),深度学习方法(fastText,TextCNN等)文本分类的处理大致分为文本预处理、文本特征提取、分类模型构建等。和英文文本处理分类相比,中文文本的预处理是关键技术。
一、文本预处理(解决特征空间高维性、语义相关性和特征分布稀疏)1、中文分词技术为什么分词处理?因为研究表明特征粒度为词粒度远远好于字粒度,其大部分分类算法不考虑词序信息,基于字粒度的损失了过多的n-gram信息。
中文分词主要分为两类方法:基于词典的中文分词和基于统计的中文分词。
基于词典的中文分词核心是首先建立统一的词典表,当需要对一个句子进行分词时,首先将句子拆分成多个部分,将每一个部分与字典一一对应,如果该词语在词典中,分词成功,否则继续拆分匹配直到成功。所以字典,切分规则和匹配顺序是核心。基于统计的中文分词方法统计学认为分词是一个概率最大化问题,即拆分句子,基于语料库,统计相邻的字组成的词语出现的概率,相邻的词出现的次数多,就出现的概率大,按照概率值进行分词,所以一个完整的语料库很重要。基于理解的分词方法基于理解的分词方法是通过让计算机模拟人对句子的理解,达到识别词的效果。其基本思想就是在分词的同时进行句法、语义分析,利用句法信息和语义信息来处理歧义现象。它通常包括三个部分:分词子系统、句法语义子系统、总控部分。在总控部分的协调下,分词子系统可以获得有关词、句子等的句法和语义信息来对分词歧义进行判断,即它模拟了人对句子的理解过程。这种分词方法需要使用大量的语言知识和信息。由于汉语语言知识的笼统、复杂性,难以将各种语言信息组织成机器可直接读取的形式,因此目前基于理解的分词系统还处在试验阶段。2、去除停用词建立停用词字典,停用词主要包括一些副词、形容词及其一些连接词。通过维护一个停用词表,实际上是一个特征提取的过程,本质上是特征选择的一部分。
二、文本特征提取1、词袋模型
思想:建立一个词典库,该词典库包含训练语料库的所有词语,每个词语对应一个唯一识别的编号,利用one-hot文本表示。文档的词向量维度与单词向量的维度相同,每个位置的值是对应位置词语在文档中出现的次数,即词袋模型(BOW))
问题:
(1)容易引起维度灾难问题,语料库太大,字典的大小为每个词的维度,高维度导致计算困难,每个文档包含的词语数少于词典的总词语数,导致文档稀疏。(2)仅仅考虑词语出现的次数,没有考虑句子词语之间的顺序信息,即语义信息未考虑2、TF-IDF文本特征提取
利用TF和IDF两个参数来表示词语在文本中的重要程度。
TF是词频:指的是一个词语在一个文档中出现的频率,一般情况下,每一个文档中出现的词语的次数越多词语的重要性更大,例如BOW模型一样用出现次数来表示特征值,即出现文档中的词语次数越多,其权重就越大,问题就是在长文档中的词语次数普遍比短文档中的次数多,导致特征值偏向差异情况。
TF体现的是词语在文档内部的重要性。
IDF是体现词语在文档间的重要性
即如果某个词语出现在极少数的文档中,说明该词语对于文档的区别性强,对应的特征值高,IDF值高,IDFi=log(|D|/Ni),D指的是文档总数,Ni指的是出现词语i的文档个数,很明显Ni越小,IDF的值越大。最终TF-IDF的特征值的表达式为:TF-IDF(i,j)=TFij*IDFi
3、基于词向量的特征提取模型
想基于大量的文本语料库,通过类似神经网络模型训练,将每个词语映射成一个定维度的向量,维度在几十到化百维之间,每个向量就代表着这个词语,词语的语义和语法相似性和通过向量之间的相似度来判断。
常用的word2vec主要是CBOW和skip-gram两种模型,由于这两个模型实际上就是一个三层的深度神经网络,其实NNLM的升级,去掉了隐藏层,由输入层、投影层、输出层三层构成,简化了模型和提升了模型的训练速度,其在时间效率上、语法语义表达上效果明显都变好。word2vec通过训练大量的语料最终用定维度的向量来表示每个词语,词语之间语义和语法相似度都可以通过向量的相似度来表示。
三、分类模型1、传统机器学习方法:传统机器学习算法中能用来分类的模型都可以用,常见的有:NB模型,随机森林模型(RF),SVM分类模型,KNN分类模型模型。
2、深度学习文本分类模型
fastText模型原理:句子中所有的词向量进行平均(某种意义上可以理解为只有一个avgpooling特殊CNN),然后直接连接一个softmax层进行分类。
TextCNN:利用CNN来提取句子中类似n-gram的关键信息
模型结构[4]:改进:fastText中的网络结果是完全没有考虑词序信息的,而TextCNN提取句子中类似n-gram的关键信息。
TextRNN
模型:Bi-directionalRNN(实际使用的是双向LSTM)从某种意义上可以理解为可以捕获变长且双向的的“n-gram”信息。改进:CNN有个最大问题是固定filter_size的视野,一方面无法建模更长的序列信息,另一方面filter_size的超参调节也很繁琐。
TextRNN+Attention
模型结构:改进:注意力(Attention)机制是自然语言处理领域一个常用的建模长时间记忆机制,能够很直观的给出每个词对结果的贡献,基本成了Seq2Seq模型的标配了。实际上文本分类从某种意义上也可以理解为一种特殊的Seq2Seq,所以考虑把Attention机制引入近来。
TextRCNN(TextRNN+CNN)
模型结构:过程:利用前向和后向RNN得到每个词的前向和后向上下文的表示:词的表示变成词向量和前向后向上下文向量连接起来的形式:再接跟TextCNN相同卷积层,pooling层即可,唯一不同的是卷积层filter_size=1就可以了,不再需要更大filter_size获得更大视野。
第二部分:情感分析一、概述情感分析是自然语言处理中常见的场景,比如淘宝商品评价,饿了么外卖评价等,对于指导产品更新迭代具有关键性作用。通过情感分析,可以挖掘产品在各个维度的优劣,从而明确如何改进产品。比如对外卖评价,可以分析菜品口味、送达时间、送餐态度、菜品丰富度等多个维度的用户情感指数,从而从各个维度上改进外卖服务。
情感分析可以采用基于情感词典的传统方法,也可以采用基于机器学习的方法。
二、基于情感词典的情感分类方法1、基于词典的情感分类步骤
基于情感词典的方法,先对文本进行分词和停用词处理等预处理,再利用先构建好的情感词典,对文本进行字符串匹配,从而挖掘正面和负面信息。如图:2、情感词典情感词典包含正面词语词典、负面词语词典、否定词语词典、程度副词词典等四部分。一般词典包含两部分,词语和权重。情感词典在整个情感分析中至关重要,所幸现在有很多开源的情感词典,如BosonNLP情感词典,它是基于微博、新闻、论坛等数据来源构建的情感词典,以及知网情感词典等。当然也可以通过语料来自己训练情感词典。
3、情感词典文本匹配算法基于词典的文本匹配算法相对简单。逐个遍历分词后的语句中的词语,如果词语命中词典,则进行相应权重的处理。正面词权重为加法,负面词权重为减法,否定词权重取相反数,程度副词权重则和它修饰的词语权重相乘。如图:利用最终输出的权重值,就可以区分是正面、负面还是中性情感了。4、缺点基于词典的情感分类,简单易行,而且通用性也能够得到保障。但仍然有很多不足:
精度不高,语言是一个高度复杂的东西,采用简单的线性叠加显然会造成很大的精度损失。词语权重同样不是一成不变的,而且也难以做到准确。新词发现,对于新的情感词,比如给力,牛逼等等,词典不一定能够覆盖。词典构建难,基于词典的情感分类,核心在于情感词典。而情感词典的构建需要有较强的背景知识,需要对语言有较深刻的理解,在分析外语方面会有很大限制。三、基于机器学习的情感分类方法即为分类问题,文本分类中的各方法均可采用。
第三部分:意图识别一、概述意图识别是通过分类的办法将句子或者我们常说的query分到相应的意图种类。
举一个简单的例子,我想听周杰伦的歌,这个query的意图便是属于音乐意图,我想听郭德纲的相声便是属于电台意图。做好了意图识别以后对于很多nlp的应用都有很重要的提升,比如在搜索引擎领域使用意图识别来获取与用户输入的query最相关的信息。举个例子,用户在查询"生化危机"时,我们知道"生化危机"既有游戏还有电影,歌曲等等,如果我们通过意图识别发现该用户是想玩"生化危机"的游戏时,那我们直接将游戏的查询结果返回给用户,就会节省用户的搜索点击次数,缩短搜索时间,大幅提高用户的体验。
再举一个目前最火热的聊天机器人来说明一下意图识别的重要性。目前各式各样的聊天机器人,智能客服,智能音箱所能处理的问题种类都是有限制的。比如某聊天机器人目前只有30个技能,那么用户向聊天机器人发出一个指令,聊天机器人首先得根据意图识别将用户的query分到某一个或者某几个技能上去,然后再进行后续的处理。做好了意图识别以后,那种类似于电影场景里面人机交互就有了实现的可能,用户向机器发来的每一个query,机器都能准确的理解用户的意图,然后准确的给予回复。人与机器连续,多轮自然的对话就可以借此实现了。
二、意图识别的基本方法1、基于词典以及模版的规则方法:不同的意图会有的不同的领域词典,比如书名,歌曲名,商品名等等。当一个用户的意图来了以后我们根据意图和词典的匹配程度或者重合程度来进行判断,最简单一个规则是哪个domain的词典重合程度高,就将该query判别给这个领域。
2、基于查询点击日志:如果是搜索引擎等类型业务场景,那么我们可以通过点击日志得到用户的意图。
3、基于分类模型来对用户的意图进行判别:因为意图识别本身也是一个分类问题,其实方法和分类模型的方法大同小异。
三、意图识别的难点意图识别工作最大的难点其实是在于标注数据的获取。目前标注数据的获取主要来自两方面,一方面是专门的数据标注团队对数据进行标注,一方面是通过半监督的方式自动生成标注数据。