自然语言处理概论
参考书
- Speech and Language Processing, Jurafsky, D. and Martin, 2nd Edition, J.H., Prentice Hall, 2008
- Neural Network Methods for Natural Language Processing. Y. oav, Goldberg. M&C publisher, 2017
相关学术期刊和会议
- Computational Linguistics (ACL)
- Transactions of the Association for Computational Linguistics (ACL)
- 中文信息学报 (中文信息学会)
- 计算机学报、软件学报
- Annual Meeting of the Association for Computational Linguistics (ACL年会)
- Conference on Empirical methods in natural language processing(EMNLP)
- International Conference on Computational Linguistics (COLING)
- 全国计算语言学联合学术会议(CCL) (中文信息学会)
- 自然语言处理与中文计算会议(NLPCC ) (计算机学会)
自然语言处理概要
- 人类语言能力
- 理解语言:“听”与“读”
- 生成语言:“说”与“写”
- 利用语言实现交际意图
- 可否让计算机具有人类的语言能力?
- 计算机理解自然语言
- 计算机生成自然语言
- 计算机和人类用自然语言交流 并实现相应的交际意图
自然语言处理
- 通过建立形式化计算模型来分析、理解和生成自然语 言的学科
- 终极目标: 让计算机拥有自然语言交际能力
两大问题
- 自然语言理解(Natural Language Understanding, NLU)
- 自然语言生成(Natural Language Generation, NLG)
交叉学科
- 计算机科学 (自然语言处理的研究工具)
- 语言学 (自然语言是处理对象)
- 数学 (自然语言处理的建模工具)
语言处理的机器模型
- 分而治之?
- 分层进行、层层递进
- 词法分析、句法分析、语义分析、语用分析
- 逐步把“理解”推向深入
词法分析
- 汉语分词(Chinese word segmentation)
- 汉语中词和词之间没有空格;识别出句子中的词。
- 字符序列 ⇒ 词的序列
词法分析
- 词类标注(Part-of-speech tagging, POS tagging)
- 命名实体识别(Named Entity Recognition, NER)
句法分析
句法分析(syntactic parsing)
- 分析句子,得到句子的句法结构
- 通常是树结构
词组成短语、短语组成句子
语义分析
- 词义标注(Word Sense Tagging)
- 语义角色标记(Semantic Role Labeling, SRL)
- 识别谓词论元及其充当的角色
- 部分句义分析、浅层句义分析
自然语言处理的基本方法
NLP的基本方法
- 基于规则的方法
- 也叫符号主义、理性主义方法
- 专家以规则的形式注入知识
- 基于统计的方法
- 也叫机器学习方法、经验主义方法
- 机器从语言样本中自动学习知识
基于规则的方法
基于统计的方法
- 词袋模型
- 语言就像掷骰子
- 多项分布
- 马尔科夫过程
- 句子是随机过程的产物
- 隐马尔科夫过程
理解:
- All models are wrong. (George Box, 1978)
- 模型只是现实世界的简化
- 需要大量的语言样本
- 样本的代表性
- 标注代价高昂
- 数据稀疏问题
- 长尾效应
自然语言处理的挑战性
无处不在的歧义(Ambiguity)
- 歧义:对同一个语言形式有不止一种解读
- 结构歧义
海量的知识需求
- 语言知识(linguistic knowledge)
- 词法、句法、语法、语义、语用……
- 领域知识(domain knowledge)
- 物理、化学、生物、计算机….
- 世界知识(world knowledge)
- 妈妈是女的、爸爸是男的
- 父母的年龄比子女的年龄大
- 知识表示、知识获取、知识库构建及维护存在 巨大挑战
挑战
- 不存在完备的规则
- 理性主义建模方法的困境
- 数据稀疏问题
- 经验主义建模方法的困境
自然语言处理的应用领域
- 机器翻译
- 自动问答
- 自动摘要
- 信息提取
- 自动写作
- 情感分析
- 文本分类
- 垃圾邮件过滤
- 汉字输入技术
- 术语提取
自然语言处理发展简史
机器学习和自然语言处理
任务及思路:判别垃圾邮件
- 特征提取
- 模型设计
- 损失函数
- 梯度下降
机器学习总结
独立同分布假设(i.i.d. assumption)
- 根据已标注邮件学习模型
- 模型能否用于过滤未来的邮件?
- 未来的邮件应和已标注的邮件具有相同的统计规律
模型推广能力(model generalization)
- 如何衡量模型处理未来数据的性能?
- 把标注数据分成两个部分
- 训练集(training set):训练模型
- 测试集(test set):衡量模型的效果
- 测试集上错误率表征模型的推广能力(generalization ability)
- 过拟合(overfitting):低训练集错误率、高测试集错误率
- 理想状态
- 低训练集错误率
- 低测试集错误率 (或者 较小的训练集与测试集错误率差异)
- 不能单纯基于训练集损失最小求解模型
- 训练时,监控模型在测试集上的错误率?
- 选择测试集上错误率较小的模型?
- 测试集代表未来数据
- 基于测试集选择模型参数,扭曲模型推广能力评价
开发集(development set)和早停止(early stop)
模型容量(capacity)
过拟合、欠拟合和容量
- 模型容量过小,欠拟合现象
- 高训练集错误率、高测试集错误率
- 模型容量过大,过拟合现象
- 更容易学到训练集的特质
- 低训练集错误率、高测试集错误率
奥卡姆剃刀(Occam’s razor)原则
- 吝啬原则(law of parsimony)
- 如无必要,勿增实体
- 如果你有两个原理,它们都能解释观测到的事实, 那么你应该使用简单的那个(让事情保持简单)
- 如果有两个模型,都可以同样好地解释观察数据 (训练集),我们应该优先选择简单的模型。
正则化(regularization)
模型越复杂,越容易出现过拟合现象
- 正则化——控制模型复杂度
- 求解参数,尽量让损失最小
- 求解参数,尽量让模型简单
损失函数(Loss)
- 铰链损失(hinge loss)
- 交叉熵损失(cross entropy loss)
梯度下降(gradient descent)
随机梯度下降(stochastic gradient descent)
关于任务
- 分类任务(classification)
- 序列标注任务(sequence labeling)
- 结构预测任务(structured prediction)
- 序列转写任务(sequence transduction
分类任务(Classification)
序列标注任务(Sequence Labeling)
结构预测任务(Structure Prediction)
序列转写任务(sequence transduction)
没有免费的午餐(No free lunch theorem)
n元模型
语言建模(Language Modeling)
𝑛元模型
𝑛的选择
- 𝑛 较大时
- 提供了更多的语境信息,语境更具区别性
- 参数个数多、计算代价大、训练语料需要多、 参数估计不可靠。
- 𝑛 较小时
- 语境信息少,不具区别性
- 但是,参数个数少、计算代价小、训练语料 无需太多、参数估计可靠。
马尔可夫模型
如何建立𝑛元模型
相对频率法
最大似然估计
计算句子的概率
数据稀疏(Data Sparseness)
Zipf 定律
- 语言中只有很少的常用词
- 语言中大部分词都是低频词
- 词的分布是长尾分布,𝑛元组分布亦是如此
- 大多数词( 𝑛元组)在语料中的出现是稀疏的
- 语料库可以提供少量常用词( 𝑛元组)的可靠样本
- 语料库规模扩大,主要是高频词词例的增加
- 扩大语料规模不能从根本上解决稀疏问题
由于数据稀疏,MLE估计值不是理想的参数估计值
解决办法: 平滑(smoothing)
- 把在训练样本中出现过的事件的概率适当减小
- 把减小得到的概率质量分配给训练语料中没有出现过的事件
- 这个过程有时也称作减值(discounting)法
加法平滑
- 训练语料中未出现的𝑛元组的概率不再为0,而 是一个大于0的较小的概率值。
- 但由于训练语料中未出现𝑛元组数量太多,平滑 后,所有未出现的𝑛元组占据了整个概率分布中 的一个很大的比例。因此,在NLP中,加1平滑 给训练语料中没有出现过的𝑛元组分配了太多的 概率空间。
加𝛿平滑
组合平滑方法
绝对减值法
Kneser–Ney平滑
熵(Entropy)
联合熵和条件熵
相对熵
交叉熵
语言模型的评价—交叉熵
困惑度(perplexity)
隐马尔科夫模型
- 隐马尔科夫模型(Hidden Markov Model, HMM)
- 马尔科夫模型的一种扩充
- 在自然语言处理领域应用广泛:词类自动标注
马尔科夫模型
隐马尔科夫模型
隐马尔可夫过程是一个双重随机过程,其中一重随机过程 不能直接观察到,通过状态转移概率矩阵描述。另一重随 机过程输出可以观察到的观察符号,由输出概率矩阵定义。
隐马尔可夫模型和自然语言
隐马尔科夫模型是生成模型
抛掷硬币
隐马尔科夫模型的三个问题
问题1: 估算观察序列概率
向前算法(Forward Algorithm)
向后算法(Backward Algorithm)
问题2:求解最佳状态转换序列
隐马尔可夫模型的第二个问题: 计算能最好解释观察序列的状态转换序列。
韦特比算法(Viterbi Algorithm)
问题3:参数学习
有指导的参数学习(supervised learning)
无指导的参数学习(unsupervised learning)
直观的想法
隐马尔科夫模型的实现
词类自动标注
词的分类依据
英语中词的分类
英语词类:
- preposition:介词
- determiner:限定词
- pronoun:代词
- conjunction:连词
- nouns
- verbs
- adjectives
- adverbs
- numeral:数词
- interjection:叹词
closed class and open class
- Closed classes are those that have relative fixed membership, in which new words are rarely coined.
function word and content word
词类的子类
汉语中词的分类
汉语分类标准:分布标准
汉语中词的分类依据
- 缺乏形态,形态特征不能用作分类依据。
- 汉语中划分词类也不用意义作为分类依据。 概念相近的词,语法性质未必相同,例:战争(名词)、战斗(动词)
- 词的分布特征,或者说词的语法功能
词的语法功能:词在句法结构里所能占据的语法位置
- 词在句法结构中充当句法成分的能力
- 词与某类词或某些词组合成短语的能力
虽然不能根据意义对词进行分类,但按照分布特征同属一 类的词,意义上也常有共性。
- 名词通常表示事物的名称、动词通常表示动作和行为、形容词表示 事物的性质和状态
实词和虚词
- 从功能上看,实词可以充当主语、谓语和宾语。虚 词则不可以。
- 从意义上看,实词有实在的意义,表示事物、动作、 行为、变化、性质、状态、处所、时间等。虚词基 本只起语法作用,本身多无实在意义。
- 从数量上看,实词多为开放类,虚词多为封闭类。
体词和谓词
- 实词通常可进一步分成体词和谓词。体词可以做主 语和宾语。谓词主要做谓语。
体词
- 名词(1)、处所词(2)、方位词(3)、时间词(4)、 区别词(5)、数词(6)、量词(7)、代词(8)
谓词
- 动词(9)、形容词(10)
虚词
- 副词(11)、介词(12)、连词(13)、助词(14)、语气词(15)
拟声词(16)、感叹词(17)
为什么说一个词是形容词?
兼类问题
如果同一个词具有不同词类的语法功能,则认为这个 词兼属不同的词类,简称兼类。
英语词类标记集
汉语词类标记集
词类自动标注
- 词类自动标注的任务
- 判定自然语言句子中的每个词的词类并给每 个词赋以词类标记。
对于兼类词,词类标注程序应根据上下文确定 兼类词在句子中最合适的词类标记。
词类自动标注是深层语言分析的基础
- 句法分析
词类标注程序判定依据
- 要标注的词的不同词类的分布
- dumb tagger 统计每个兼类词的词类概率分布, 并给每个词赋概率最大的词类。
- 上下文中其它词的词类信息
- 英语中,词类串DT JJ NN比DT JJ VBZ更加可能。
- 要标注的词的不同词类的分布
基本方法
- 基于规则的词类标注
- 基于统计的词类标注
基于规则的词类标注方法
基于隐马尔科夫模型的词类标注
未登录词
- 未登录词
- 视作兼类词,可能是任何一个词类
- 依照出现一次的词(hapax legomenon)的规律处理
- 更可能是名词 不大可能是限定词等
- 将出现一次的词的分布平均作为未登录词的分布
- 对于英文等语言可以利用形态特性(词缀)、拼写特 性判定(首字母大小写)
- 未登录词的词性标注是难点
其他方法
词类标注问题是经典问题,曾得到了持续关注,不断 有新的方法和模型提出,除我们介绍的方法外,下列 方法也取得了较好的标注效果:
- 基于决策树(Schmid 1994)
- 基于转换(Brill 1995)
- 基于最大熵原则(Ratnaparkhi 1996)
最大熵和条件随机场模型
最大熵模型导引
can的词类
从最大熵模型到条件随机场
最大熵模型
例子
最大熵原则(Principle of Maximum Entropy)
熵描述了随机变量的不确定性,熵越大表明随机变量 的不确定性越大,该随机变量也就越接近均匀分布。
在只掌握关于未知分布的部分知识时,应该选取符合 这些知识但熵最大的概率分布。这就是最大熵原则。
按最大熵原则所做的选择,是人们可作出的唯一的不 偏不倚的选择,任何其它选择都意味着增加了额外的 约束和假设,这些约束和假设根据人们掌握的信息无 法作出。
基于最大熵原则构建的统计模型称为最大熵模型,利 用最大熵原则进行统计建模的方法称为最大熵方法。
按照最大熵原则,对于前面的例子进行建模,即为求 解下面的问题
最大熵方法中的特征表示
最大熵方法中约束表达
求解最大熵分布
条件最大熵分布
最大熵方法的模型训练
最大熵方法的优点
- 只需针对具体任务,集中精力选择特征
- 特征选择灵活,特征之间无需独立
- 特征的类型与数量都可随时调整
- 无需考虑平滑问题
特征选择
- 给定样本数据,可设计出成千上万的特征,并非所有 特征的样本期望都是可靠的,很多特征的样本期望带 有偶然性,与特征的真实期望并不一致,引入这样的 特征无益于统计建模工作。
- 特征选择 (1) 截止频率 要求特征在样本中出现的频率大于截止频率 (2) 特征选择算法 从所有特征集合F中选择对建模有益的特征S
词类标注中最大熵方法的应用
条件随机场模型
图模型(Graphical Model)
有向图模型举例
- N-gram Model和HMM模型
无向图模型
有向图模型与无向图模型的对比
- 共同之处 将联合分布分解为多个因子
- 不同之处
- 有向图模型: 因子是概率分布、无需全局归一
- 无向图模型: 因子是势函数,需要全局归一
- 优缺点
- 无向图模型中势函数设计不受概率分布约束,设计灵 活,但全局归一代价高
- 有向图模型无需全局归一、训练相对高效
条件随机场模型(Conditional Random Fields)
)
- 理论上较为完善的序列标记模型 无标记偏执问题
- 兼具判别模型和无向图模型的优点 特征设计灵活、无需要求特征独立
- 条件随机场模型训练代价大、复杂度高
- 除链式图结构,亦可设计其他图结构 如:网页的链接结构
- 在自然语言处理领域应用广泛
判别模型和生成模型
- 生成模型 —联合分布
- 判别模型 —条件分布
- 如何对待观察序列
- 生成模型中,观察序列作为模型的一部分
- 判别模型中,观察序列只作为条件,可以针对观察序列 灵活提取特征
- 训练复杂度不同
- 判别模型训练复杂度通常高
- 是否支持无指导训练
- 生成模型支持无指导训练,判别模型无指导训练代价高
汉语自动切分
简介
什么是汉语自动切分?
- 汉语书写时词和词之间没有空格
- 通过计算机程序把组成汉语文本的字串自动转换 为词串的过程被称为自动切分
英语中的切分问题?
- 英语也不能仅凭空格和标点符号解决切分问题
- 英语切分通常称作 Tokenization
- 英语切分远比汉语容易
为什么要对汉语进行切分?
- 切词是深层汉语分析的基础
- 词是汉语信息处理的基本单位
- 句法分析、语义分析
基本方法
- 基于词表的方法
- 需要配备词表
- 通过词表匹配确定字串是否成词
- 规则驱动、数据驱动
- 字序列标记方法
- 无需配备词表
- 根据语境判断字在词中的位置
- 数据驱动
最大匹配法
- 正向最大匹配法(MM) 从左向右匹配词表
- 逆向最大匹配法(RMM) 从右向左匹配词表
- 最大匹配法的特点
- 算法简单
- 长词优先
字序列标记方法
汉语切分的关键问题
切分歧义类型
交集型歧义的链长
真歧义与伪歧义
歧义的发现
- 歧义消解的前提是发现歧义
- 切分算法应有发现输入文本中是否出现歧义切 分字段的能力
- MM和RMM均没有检测歧义的能力
- 只能给出一种切分结果
双向最大匹配(MM+RMM)
双向最大匹配法不能发现所有的歧义,有盲点
- 不能发现组合型歧义 (长词优先)
- 链长是偶数时,不能发现交集型歧义
发现组合型歧义
- MM+逆向最小匹配法
发现所有切分歧义
- 全切分算法
歧义切分的表示—词图
歧义消解
基于记忆的伪歧义消解
- 伪歧义所占比例非常大
- 伪歧义消解与上下文无关,对高频伪歧义字段,可把 它们的正确(唯一)切分形式预先记录在一张表中,其 歧义消解通过直接查表即可实现。
基于规则的歧义消解
基于统计的歧义消解
- 在词图上搜寻统计意义上的最佳路径
定义路径分值
- 基于𝑛元模型,计算路径概率
字序列标记法
未登录词识别
- 中国人名:李素丽 老张 李四 王二麻子
- 中国地名:定福庄 白沟 三义庙 韩村河 马甸
- 翻译人名:乔治·布什 叶利钦 包法利夫人 酒井法子
- 翻译地名:阿尔卑斯山 新奥尔良 约克郡
- 机构名:方正公司 联想集团 国际卫生组织 外贸部
- 商标字号:非常可乐 乐凯 波导 杉杉 同仁堂
- 专业术语:万维网 主机板 模态逻辑 贝叶斯算法
- 缩略语:三个代表 五讲四美 打假 扫黄打非 计生办
- 新词语:温拿、卢瑟、给力、吊丝、骚年
- 未登录词识别困难
- 未登录词没有明确边界
- 许多未登录词的构成单元可独立成词
- 传统上,逐类构造专门未登录词识别算法
- 在字序列标注法中,未登录词无需单独处理
- 识别依据
- 内部构成规律(用字规律)
- 外部环境(上下文)
未登录词识别进展
较成熟
中国人名、译名
中国地名
较困难
- 商标字号
- 机构名
很困难
- 专业术语
- 缩略语
- 新词语
中文人名识别
- 在汉语的未登录词中,中国人名是规律性 最强,也是最容易识别的一类
- 识别模型举例
- 计算一个可能的人名字串的概率,若其概 率大于某个阈值,则判别为人名。
自动切分评价指标
什么是词?
- 词是由语素构成的、能够独立运用的最小的语 言单位。
- 缺乏操作标准。
- 汉语中语素、词和词组的界线模糊。
- 关于什么是词,不同的人有不同的把握
汉语分词规范
深度学习
- 导引
- 前馈神经网络
- 卷积神经网络
- 循环神经网络
词向量
词向量概要
词的表示
- 词的嵌入表示——词向量(word vector/embedding)
- 把词表示成低维空间中的向量。
- 句法语义特性相近的词在空间中位置相近
- 更为细致的语义结构信息——类比特性
- 词义相似性 常常 反映为分布相似性
- 分布假设(Distributional Hypothesis)
- 词义相似性 常常 反映为分布相似性
- 分布假设(Distributional Hypothesis)
预测式模型
神经网络建模
Collobert & Weston模型
CBOW模型(continuous bag-of-words )
SkipGram
负采样训练
负例构造方式
矩阵分解式模型
共现矩阵M
PMI和PPMI
矩阵分解
GloVe
词向量的评价
- 预测具有同样类比关系的词,计算准确率
注意力和Transformer
注意力机制
人类在完成不同任务时对不同信息元素关注程度不同,注意 力机制可视作是对此的一种模拟:
- 自注意力机制(self attention)
- 单独用于编码器端(encoder)或解码器端(decoder)
- 用于融合语境信息生成语境敏感的语言表示(词向量)
- 一般而言,建模单一序列元素之间依赖关系
- 一般注意力机制(attention)
- 同时用于编码器端和解码器端
- 解码器端状态向量作为query向量,编码器端向量作为key 向量和value向量
- 用于动态确定编码器端信息对解码决策的不同影响
- 建模编码序列与解码序列间的依赖关系
残差连接
网络深度和拟合精度
- 增加深度并不总能改进拟合精度
- 缓解梯度消失问题
- 有助于建立深层网络
- 残差连接有很多成功应用:ResNet, Transformer
Layer Normalization
Transformer
成分句法分析
句法分析导引
句法知识的形式化
上下文无关文法(CFG) 最常用的句法知识形式化工具
计算语言学研究人员提出了许多形式语法系统(grammar formalism) ,上下文无关文法是核心组成部分
- 功能合一语法(FUG)
- 词汇功能语法(LFG)
- 中心词驱动的短语结构语法(HPSG)
基于上下文无关文法的句法分析 建立在上下文无关文法基础上的句法分析算法
CFG的形式定义
句法分析
- 句法分析的任务
自然语言的句法分析
人工语言的句法分析
句法分析算法
自顶向下
自底向上
分析算法的确定性
- 自顶向下的分析方法,左部相同的重写规则
- 自底而上的分析方法,右部相同的重写规则
- 算法的确定性和非确定性 回溯 (并行)
- 回溯导致重复计算、效率低下
- 对于人工语言,由于语法受限,通常可以做到彻底消除 非确定性,从而形成确定性分析算法
- 对于自然语言而言,彻底消除非确定性是困难的或有风 险的
CKY算法
解释参考:
PCFG和统计句法分析
参考:
基于统计的句法分析
- 句法分析,理论上可由两个阶段完成
- 生成句子的所有句法树
- 句法排歧,找出正确的句法树