目录
2. Boolean Multinomial Naïve Bayes
拾壹:文档表示与相似度计算
一、词的表示
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)级情感分析
- 用户的情感和评价是多方面的
- 首先找到频繁出现的短语,再结合特定规则进行情感分析。