nlp知识点总结(下)

目录

拾壹:文档表示与相似度计算

一、词的表示

1. 独热表示

2. 词频-逆文档频率(TF-IDF)

3. 分布式表示与潜在语义索引LSI

4. 词嵌入表示

二、文档表示 

1. 词袋表示

2. 主题模型

三、文本相似度计算

拾贰、信息抽取(IE)——命名实体识别(NER)

一、基于规则的方法

二、基于词典的方法

三、机器学习方法

1. 最大熵

 2. 条件随机场CRFs

拾叁、信息抽取(IE)——其他

一、实体链接

二、关系抽取 

 1. 预定义关系抽取

2. 开放域关系抽取

3. 总结

 三、事件抽取

拾肆、深度学习简介

一、深度学习的兴起

二、常用的深度学习模型

1. 激活函数

2. 深度神经网络DNN

3. 卷积神经网络CNN

4. 循环神经网络RNN

5. 注意力机制

拾伍、对话系统

一、聊天型对话系统

1. 基于规则的方法——Eliza

2. 基于规则的方法——Parry

二、任务型对话系统

1. GUS架构

2. 对话状态架构

三、对话系统的评价

1. Chatbots

2. Task-based dialogue

拾陆:情感分析

一、定义

二、基于朴素贝叶斯的情感分析

1. 基本步骤

2. Boolean Multinomial Naïve Bayes

3. 数据集平衡性对模型的影响

4. 如何处理多个情感等级

三、基于CNN的情感分析

四、情感分析中的新任务

1. 方面(Aspect)级情感分析


拾壹:文档表示与相似度计算

一、词的表示

1. 独热表示

        稀疏,维度大,假设词之间是独立的,无法表示语义关系。

2. 词频-逆文档频率(TF-IDF)

3. 分布式表示与潜在语义索引LSI

        分布式表示利用词的上下文,用固定维度的低维稠密向量来储存“大部分”重要信息。       

        潜在语义索引基于词和文档的共现矩阵。通过奇异值分解SVD来识别非结构化文本集合中包含的术语和概念之间关系的模式。

        缺点:慢,引入新词代价大。

4. 词嵌入表示

        直接学习词的低维稠密的向量表示

  • Word2vec:直接计算词的表示,而不是通过计数的方法;采用自监督(利用上下文,无需人工标注)。两类方法——CBOW(预测当前词)和Skip-gram(预测上下文)。

Word2vec直接计算复杂度高,需要遍历整个词典,可通过负采样技术把上下文预测从多分类问题变成二分类问题。

  • SGNS:skip-gram + 负采样(每个正样本构造k个负样本,多分类变二分类,逻辑斯蒂,权重作为词向量)。 给定目标词与待预测的上下文词,返回其确实是上下文的概率。

SGNS的目标——返回 c 是 t 的真正的上下文词的概率。

如何求概率?——考虑用向量点积,计算词之间的相似度,再用sigmoid转化为概率。

  • SGNS中如何计算概率?:词向量的内积,再用sigmoid函数调整到0~1.使用梯度下降进行训练,参数包括目标词向量矩阵W与上下文词向量矩阵C。
  • SGNS中分类器训练的优化目标:

  •  参数构成:维度为2V*d的矩阵,其中V为词表大小,d为词向量维度

  •  SGNS总结

  • 词向量的评价

        采用Spearman相关系数

  • Glove:Word2vec只考虑了局部信息,而Glove加入了共现概率,增加了全局信息。
  • Fasttext:n-gram,可以解决未登录词。
  • 词向量表示不能解决一词多义和动态语义,也不能区分反义词(因为上下文很相似)。

二、文档表示 

1. 词袋表示

  • 用文档中每个词的独热表示的和表示文档

2. 主题模型

  • 主题是词的分布,文档有多个主题,每个主题中词的概率不同
  • 潜在狄利克雷分布(LDA)

三、文本相似度计算

  • 欧式距离基于点的位置,非欧距离基于点的性质
  • 常用欧氏距离:L1范式(曼哈顿距离),L2范式。

  • 杰卡德距离(集合相似度):集合之交的元素数除以集合之并的元素数。
  • 余弦距离:结果是角度
  • 编辑距离:字符串变化的最少操作次数(插入和删除),等于x + y - 2LCS。LCS为最长公共子序列。
  • 汉明距离

拾贰、信息抽取(IE)——命名实体识别(NER)

        为实体词指定一个标记,如Name,Organization等。

一、基于规则的方法

  • 规则需要利用词性和词典;彼此可能冲突,对优先度有要求,且难以移植。

二、基于词典的方法

  • 受限于词典的完备性、构建与更新、查找效率等,常与其他NER方法结合。

三、机器学习方法

1. 最大熵

  • 分类模型,参数为每个特征的权重 λ 。

  • 用MCLE可以推导出 λ 满足经验期望与模型期望相等。

  •  逻辑回归在数学上等价于最大熵,但nlp中涉及的维数通常很大,故这里可能会做一个区分。
  • 特征通常是0-1函数,自行定义,包括上下文本身和标记两部分。需掌握计算

 2. 条件随机场CRFs

  • 最大熵模型难以考虑标机之间的联系。
  • CRFs公式与最大熵一致,但 c 的含义不同,这里的 c 是一条标记路径,最大熵中是标记。
  • 梯度上升更新参数 w,求概率最大。

  • 要求掌握计算。

拾叁、信息抽取(IE)——其他

一、实体链接

  • 将“实体提及”链接到知识库中对应的实体。

二、关系抽取 

  •  自动识别由一对实体和联系这对实体的关系构成的相关三元组。

 1. 预定义关系抽取

  • 任务:给定实体关系类别给定语料,抽取目标关系对。
  • 评测语料:专家标注语料,语料质量高,抽取的目标类别已经定义好。
  • 采用机器学习的方法,将关系实例转换成特征表示,在标注语料库上训练关系分类模型。

2. 开放域关系抽取

  • 区别:实体类别和关系类别不固定、数量大

  • 基于句法:识别表达语义的短语进行关系抽取,同时使用句法和统计数据进行过滤。优点是无需预先定义关系类别,但语义没有归一化,同一关系有不同表示。

  • 基于知识监督:在Wikipedia文本中抽取关系(属性)信息,但无法获取关系类别,也无法获取训练语料。解决方案——在Infobox抽取关系信息,并在Wikipedia条目文本中进行回标,产生训练语料。

  • 远距离监督:开放域信息抽取的一个主要问题是缺乏标注语料,远距离监督可使用知识库中的关系启发式的标注训练语料。但需要进行噪音训练

  •  关系推理:

3. 总结

 三、事件抽取

事件抽取具体可分为四个子任务:触发词识别、事件类型分类、论元识别、论元角色分类。

  • 通常将前两个子任务合并为事件检测任务,后两个子任务合并为论元抽取任务。
  • 事件检测:确认事件的触发词和及其对应的事件类型
  • 论元抽取:确认事件中存在的论元及其扮演的角色 。

拾肆、深度学习简介

一、深度学习的兴起

  • 通过RBM来进行逐层训练,达到无监督特征提取的目的,同时大大提升训练速度,从而达到构建更深层神经网络的目的。
  • RBM——受限玻尔兹曼机,其中“受限”指同一层节点间不相连。

二、常用的深度学习模型

1. 激活函数

  • 激活函数满足非线性、可导性与单调性。

  • 挤压型激活函数:S型,如Sigmoid函数与Tanh函数,导数简单,对中央区增益较大。但指数计算代价大,反向传播时梯度消失 。Tanh是零均值的。
  • 半线性激活函数:如ReLU函数、Leaky ReLU函数。 ReLU收敛速度快,能够避免梯度消失,但无界,且可能导致神经元死亡。Leaky ReLU在小于0的部分加入了很小的斜率,能够解决这个问题。

2. 深度神经网络DNN

  • 通常层数>=3.
  • 矩阵表示。上一层的输出作为下一层输入。 

  • 可以解决线性不可分问题(如异或问题)。

3. 卷积神经网络CNN

  • 典型结构卷积层【从不同视角看待原始输入,得到不同表示】,激活函数层【对每个卷积的结果作非线性变换】,池化层【把图像中一个区域用一个点表示】,全连接分类层
  • 卷积核:卷积网络之所以能工作,完全是卷积核的功劳,卷积核也是CNN中的主要参数。不同的卷积核能实现不同的功能,如“浮雕”“锐化”等等。
  • 卷积运算:注意不是矩阵乘法!!!而是对应位置相乘,再求和。步长stride代表每次移动的格数。

  • 填充:在原始矩阵外围加一圈0.

 

  • 池化:又称下采样,分为最大值池化和平均值池化。主要作用是降维和扩大视野(忽略细节)。

  •  优点:参数没那么多——因为卷积核可以共享;可以对局部特征进行抽取。
  •  缺点:视野比较窄。解决办法——多层神经网络,或卷积时跳着看。

4. 循环神经网络RNN

  • DNN没有利用输入之间的联系(同一层没有边),而RNN中参数来自输入和前一个隐状态,且隐状态之间的参数W是一样的(共享)。

  • 长短时记忆循环神经网络LSTM:设置记忆单元和遗忘门,控制哪些信息可以进入下一状态。用更复杂的结构代替了隐藏单元,可避免梯度消失,更好解决长距离记忆。

  • 门限循环单元GRU:去掉了显式的记忆单元,设计了重置门(控制之前状态对当前输入的贡献)和更新门(相当于记忆单元)。其实际上是LSTM的一种简化版本或者特殊形式。 

5. 注意力机制

  • 动物或者人对所看到的场景做出反应时,都会集中于所看到场景的局部区域。这种对所摄入的场景的局部具有强烈的注意,而对其周围的场景弱化的机制,就称之为注意力机制。

 

拾伍、对话系统

一、聊天型对话系统

        目前聊天型对话系统的主要作用还是娱乐,也有用于医疗的(如心理治疗)。

1. 基于规则的方法——Eliza

  • 基本思想如下:根据用户输入中的关键词,触发合适的规则进行转换,得到回复句子。

  • 具体的回复生成算法如下。
  • 缺省回复是为了避免冷场,当未检测到触发词时,就随机选择缺省回复中的一条,如Please go on.
  • 另一种处理方法是从记忆栈中调取,检测到特定词时触发规则并存入记忆栈,在冷场时调取。
  • 为了使回复更加流畅,通常还会做一些细微的调整,如人称上的转变(I变you),一次对话中尽量不使用同样的规则(避免重复对话)等。 

 

  •  在下面的测试中,绿色为Eliza的提问,黑色为测试人员的回复。

2. 基于规则的方法——Parry

  • Parry是第一个通过了图灵测试的系统,但这并不意味着其达到了人类智能水平,只能说在特定领域能够达到人类水平。 事实上,心理学家无法区分Parry与一个偏执型精神分裂症患者。
  • 相比于Eliza,Parry最大的特点在于加入了情感变量(恐惧、愤怒和不信任)与人设,使得Parry的回复会随着对话的进行发生情感上的明显变化。
  • Parry的表现如下。

  •  这是Eliza与Parry的对话情况。黑色的是Eliza,绿色的是Parry。

二、任务型对话系统

任务型对话系统的目标是帮助用户解决问题,例如进行预约、购买产品等。

两种基本架构:GUS架构(基于框架)和对话状态架构。前者应用较广,后者主要用于研究。

1. GUS架构

  • 一个GUS架构中通常含有多个框架。框架(frame)由一系列具有类型的槽(slot)组成,每个槽都与一个问题相关联。

  • 对话系统会对用户提出Questions,根据用户的回答对相应的槽进行填充(有时会一次填充多个槽),当所有的槽都填完则开始查询数据库。

如何根据用户的回复对槽进行填充?——正则表达式,产生式规则,基于模板的回应生成方式等。

如何一次填充多个槽呢?——通过规则处理槽之间的关系。

eg:

填完飞机预约框架的“目的地”槽后,自动将宾馆预约框架的“地点”槽进行填充;

填完短途旅行的“出发日期”槽后,自动将“到达日期”槽进行填充。

  • GUS的基本任务——领域分类、确定意图,填充槽。

  • 总结:GUS架构对于较小的领域有很好的覆盖能力,但是编写规则的成本太高,且不可移植。 

2. 对话状态架构

  • 相比于GUS架构,对话状态架构更为复杂,生成能力也更强。
  • 对话状态架构的组成部分如下。

NLU(Natural Language Understanding)通过机器学习方法对槽进行填充;

tracker记录最近的行为和槽值;

policy决定下一步的对话内容;

NLG(Natural Language Generation)用于生成更自然的回复。

2.1 对话行为

 

2.2 槽填充

  • 转化为分类问题,采用深度学习 + IBO标记,类似命名实体识别。

 

2.3 对话状态追踪

  • 修正行为检测

修正行为主要针对以下两种场景:

1. 对话系统有时无法正确理解识别用户的意图;

2. 用户可能会进行确认——如重复、强调、否定对话系统的输出等。

eg:

由于发音的夸张,演讲的识别错误率很高

2.4 对话策略

  • 通常采用有限历史,只根据上一轮的行为、用户输入和当前状态进行argmax。

  • 对话策略中有两种比较重要的机制:确认和拒识。用于确保对话系统正确理解用户的意思。
  • 确认:分为显式确认和隐式确认。

显式确认比较直接,用户回答yes/no,但比较笨,而且会增加对话长度。

eg:

U——“我想去哈尔滨。”

S——“你想去哈尔滨对吗?”

U——“对。”【显式确认】

隐式确认可能会复述用户的话,但不会让用户回答yes/no,而是进一步提出其他问题。

U——“我想去哈尔滨?”

S——“你想什么时候去哈尔滨?”【隐式确认】

U——“周二早上去。”

S——“周二早上去哈尔滨,你的名字是?”【隐式确认】

  • 拒识:当对话系统无法很好理解用户的意思时,会采取拒识策略,让用户重新输入。

不好的策略:“抱歉我不理解你的意思” or 把问题重复一遍。

好的策略:“抱歉,请重复一遍你想在哪天去哈尔滨。”【引导用户给出想要的信息】

  • 不同策略的原则——置信度。
  • 置信度从高到低的策略依次为:不确认,隐式确认,显示确认,拒识

2.5 NLG

  • NLG部分有两个阶段:content planning(说什么) 和 sentence realization(怎么说)。

content planning在之前对话策略的部分已经解决,只剩下sentence realization。

  • 我们希望根据对话策略的输出(蓝色部分)进一步得到自然语言表述。这里的难点在于训练数据难以获取,我们不可能找遍所有情况下的restaurant.

  • 解决方案——去词汇化
  • 用标志符restaurant name代替具体名字,减少所需的训练样本。 

三、对话系统的评价

1. Chatbots

  • 人工评价:Participant evaluation(让人去对话,然后打分) 和 Observer evaluation(第三方看他们对话,然后打分)。

Participant evaluation:让人和对话系统进行6轮对话,然后从8个维度进行打分——避免重复、有趣、有意义、倾听、询问性、与人相似性、吸引力。

Observer evaluation:第三方看对话记录,从吸引力、有趣性、类人性、智慧等方面打分。

  • 自动评价:对于chatbot来说不太适用,与人类的判别差距较大。

  • 对抗式评价:训练一个分类器,用于判断是否为人类的回应,能“骗过”分类器的就是好的对话系统。

2. Task-based dialogue

  • 槽填充的准确率
  • 意图识别的效果

拾陆:情感分析

一、定义

  • 情感分析结果包含4个要素:情感持有者,情感目标,极性, 辅助信息。

极性通常为 positive 与 negative ,但有时根据需要也会引入其他的类别。

二、基于朴素贝叶斯的情感分析

1. 基本步骤

  • 基于朴素贝叶斯的情感分析有三个基本步骤:tokenization(标记化),特征提取,分类。
  • tokenization:处理HTML格式、大小写、颜文字Emoji、日期等。
  • 特征提取:使用所有的词(效果比只使用形容词好),需要对否定进行特殊处理。

  • 贝叶斯分类:包含类别先验和后验概率两部分,这里还做了加一平滑处理。 

2. Boolean Multinomial Naïve Bayes

  • 直观感受:“是否出现”比“出现几次”更为重要。
  • 基本步骤:首先去除待测文本中的重复单词,然后采用贝叶斯分类。

3. 数据集平衡性对模型的影响

  • 当正例和负例数量悬殊时,用 Precision 指标进行评价就没有太大意义了,需要考虑用F值。
  • 此外,差距过大会导致模型的效果变差。
  • 可能的改进:随机下采样;加大对误分类的惩罚。

4. 如何处理多个情感等级

  • 转化为二分类(可以训练多个分类器,每个分类器判断是否为某一特定的情感)
  • 线性或序数回归(不太理解)

三、基于CNN的情感分析

  • 情感分析本质上是个分类问题

四、情感分析中的新任务

1. 方面(Aspect)级情感分析

  • 用户的情感和评价是多方面的

  •  首先找到频繁出现的短语,再结合特定规则进行情感分析。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值