1 中文自然语言处理简介

机器学习的基本流程

image.png
自然语言处理(Natural Language Processing, NLP)技术被称为“人工智能皇冠上的明珠”。
中文NLP一般流程.jpg

中文分词(Chinese word segmentation)

中文分词常见方法里既有经典的机械切分法(如正向/逆向最大匹配,双向最大匹配等),也有效果更好一些的统计切分方法(如隐马尔可夫HMM,条件随机场CRF),以及近年来兴起的采用深度神经网络的RNN、LSTM等方法。

  1. # encoding=utf-8
  2. import jieba
  3. jieba.enable_paddle() # 启动paddle模式。0.40版之后开始支持,早期版本不支持。
  4. # 使用paddle模式
  5. strs = ["我来到北京清华大学","乒乓球拍卖完了","中国科学技术大学","无线电法国别研究","过几天天天天气不好","一位友好的哥谭市民"]
  6. for str in strs:
  7. seg_list = jieba.cut(str, use_paddle=True)
  8. print("Paddle Model: " + '/'.join(list(seg_list)))
  9. # 全模式
  10. seg_list = jieba.cut("我来到北京清华大学", cut_all=True)
  11. print("Full Mode: " + "/ ".join(seg_list))
  12. # 精确模式 默认
  13. seg_list = jieba.cut("我来到北京清华大学", cut_all=False)
  14. print("Default Mode: " + "/ ".join(seg_list))
  15. # 搜索引擎模式
  16. seg_list = jieba.cut_for_search("小明硕士毕业于中国科学院计算所,后在日本京都大学深造")
  17. print(", ".join(seg_list))

代码执行后:

  1. Paddle Mode: 我/来到/北京清华大学
  2. Paddle Mode: 乒乓球/拍卖/完/了
  3. Paddle Mode: 中国科学技术大学
  4. Paddle Mode: 无线电法/国别/研究
  5. Paddle Mode: 过几天/天天/天气/不好
  6. Paddle Mode: 一位/友好/的/哥谭/市民
  7. Full Mode: 我/ 来到/ 北京/ 清华/ 清华大学/ 华大/ 大学
  8. Default Mode: 我/ 来到/ 北京/ 清华大学
  9. 小明, 硕士, 毕业, 于, 中国, 科学, 学院, 科学院, 中国科学院, 计算, 计算所, ,, 后, 在, 日本, 京都, 大学, 日本京都大学, 深造

词性标注(Part-of-speech Tagging, POS)

常见的词性标注方法可以分为基于规则和基于统计的方法。其中基于统计的方法,如基于最大熵的词性标注、基于统计最大概率输出词性和基于HMM的词性标注。近年来兴起的采用深度神经网络的RNN、LSTM等方法。

  1. import jieba.posseq as pseq
  2. jieba.enable_paddle() # 启动paddle模式。
  3. strs = ["我爱北京天安门","我感觉他喜欢我这种感觉","我喜欢你对我的喜欢"]
  4. for str in strs:
  5. words = pseg.cut(str, use_paddle=True) # paddle模式
  6. print(" ".join(['/'.join([word, flag]) for word, flag in words]))

代码执行后:

  1. 我/r 爱/v 北京/LOC 天安门/LOC
  2. 我/r 感觉/v 他/r 喜欢/v 我/r 这种/r 感觉/n
  3. 我/r 喜欢/v 你/r 对/p 我/r 的/u 喜欢/vn
标签 含义 标签 含义 标签 含义 标签 含义
n 普通名词 f 方位名词 s 处所名词 t 时间
nr 人名 ns 地名 nt 机构名 nw 作品名
nz 其他专名 v 普通动词 vd 动副词 vn 名动词
a 形容词 ad 副形词 an 名形词 d 副词
m 数量词 q 量词 r 代词 p 介词
c 连词 u 助词 xc 其他虚词 w 标点符号
PER 人名 LOC 地名 ORG 机构名 TIME 时间

去停用词(Stop words)

停用词词典是根据具体场景来决定的,比如在情感分析中,语气词、感叹词是应该保留的,因为他们对表达语气程度、感情色彩有一定的贡献和意义。
中文常用停用词表

词表名 词表文件
中文停用词表 cn_stopwords.txt
哈工大停用词表 hit_stopwords.txt
百度停用词表 baidu_stopwords.txt
四川大学机器智能实验室停用词库 scu_stopwords.txt

2 命名实体识别详解

中文命名实体识别特点

NER通常包括两部分:(1)实体边界识别;(2)确定实体类别(人名、地名、机构名或其他)。
英文中的命名实体具有比较明显的形式标志(即实体中的每个词的第一个字母要大写),所以实体边界识别相对容易,任务的重点是确定实体的类别。和英文相比,中文命名实体识别任务更加复杂,而且相对于实体类别标注子任务,实体边界的识别更加困难。
中华人民共和国中央人民政府
中华 人民 共和国 中央 人民 政府
中华人民 共和国 中央 人民政府
中华人民共和国 中央人民政府
Central Government of the People’s Republic of China

实体标注体系(Entity labeling system)

大部分情况下,标签体系越复杂准确度也越高,但相应的训练时间也会增加。因此需要根据实际情况选择合适的标签体系。

Tokens IO BIO BIOES
O O O
O O O
I-SYM B-SYM B-SYM
I-SYM I-SYM I-SYM
I-SYM I-SYM E-SYM
, O O O
I-NEG B-NEG S-NEG
I-DEV B-DEV B-DEV
I-DEV I-DEV E-DEV
O O O

序列标注(Sequence Labeling)

image.png
序列标注输入为特征序列,输出为类别序列。

分类的评价标准(Measure of classification)

Accuracy:准确率 = 预测正确 / 总样本
Precision:精确率 = 正确预测为正 / 预测为正
Recall:召回率 = 正确预测为正 / 真实为正
F1 score:1:1调和准确和召回
如何辨别机器学习模型的好坏?秒懂Confusion Matrix
第三节 机器学习 - 图3

NER的评价标准

  1. 基于token标签进行直接评测
  2. 考虑实体边界 + 实体类型的评测
    1. 完全匹配
    2. 部分匹配(重叠)

Message Understanding Conference(MUC)

  • Correct (COR): 匹配成功;
  • Incorrect (INC): 匹配失败;
  • Partial (PAR): 预测的实体边界与测试集重叠,但不完全相同;
  • Missing (MIS): 测试集实体边界没有被预测识别出来;
  • Spurius (SPU): 预测出的实体边界在测试集中不存在

  1. 测试集标签个数统计(golden):第三节 机器学习 - 图4
  2. 预测结果标签个数统计(predict): 第三节 机器学习 - 图5
  3. 精确匹配(exact): 第三节 机器学习 - 图6 第三节 机器学习 - 图7
  4. 部分匹配(partial): 第三节 机器学习 - 图8 第三节 机器学习 - 图9

    多分类的评价标准

    Macro F1:将n分类的评价拆成n个二分类的评价,计算每个二分类的F1 score,n个F1 score的平均值即为Macro F1。
    Micro F1:将n分类的评价拆成n个二分类的评价,将n个二分类评价的TP、FP、RN对应相加,计算评价准确率和召回率,由这2个准确率和召回率计算的F1 score即为Micro F1。
    注意:Macro F1受样本数量少的类别影响大。

    基于规则的信息抽取回顾

    基于规则的信息抽取:精确率高,但召回率比较低。
    基于规则的方式比较适合半结构化或比较规范的文本中的进行抽取任务,结合业务需求能够达到一定的效果。
    优点:简单,快速;
    缺点:召回低,泛化能力差。

    3 HMM与维特比解码

    隐马尔可夫模型实例

    image.png

    隐马尔可夫模型(Hidden Markov Model)

    马尔可夫过程为状态空间中经过从一个状态到另一个状态的转换的随机过程。
    该过程要求具备“无记忆”的性质:下一状态的概率分布只能由当前状态决定,在时间序列中它前面的时间均与之无关。这种特定类型的“无记忆性”称作马尔可夫性质。
    隐马尔可夫模型,是统计模型,它用来描述一个含有隐含未知参数的马尔可夫过程。其难点是从可观察的参数中确定该过程的隐含参数。

    HMM的两个假设

  • 齐次马尔可夫假设:第t个隐状态(骰子)只跟前一时刻的t-1隐状态(骰子)有关,与除此之外的其他隐状态(如t-2,t+3)无关。
  • 观测独立假设:在任意时刻观测 o(点数)只依赖于当前时刻的隐状态 i(骰子),与其他时刻的隐状态无关。

    隐马尔可夫模型数学定义

  • 前面的“BIO”的实体标签,是一个不可观测的隐状态,而HMM模型描述的就是由这些隐状态序列(实体标记)生成可观测状态(可读文本)的过程。

设我们的可观测状态序列是由所有汉字组成的集合,我们用第三节 机器学习 - 图11来表示:
第三节 机器学习 - 图12
上式中,第三节 机器学习 - 图13表示字典中单个字,假设我们已知的字数为第三节 机器学习 - 图14
设所有可能的隐藏状态集合为第三节 机器学习 - 图15,一共有第三节 机器学习 - 图16种隐藏状态,例如我们现在的命名实体识别数据里面只有7种标签:
第三节 机器学习 - 图17
设我们有观测到的一串自然语言序列文本第三节 机器学习 - 图18,一共有第三节 机器学习 - 图19个字,又有这段观测到的文本多对应的实体标记,也就是隐状态第三节 机器学习 - 图20
第三节 机器学习 - 图21(隐状态)第三节 机器学习 - 图22(观测)
注意上式中,我们常称t为时刻,如上式中一共有第三节 机器学习 - 图23个时刻(第三节 机器学习 - 图24个汉字)。
image.png

HMM的初始隐状态概率

初始隐状态概率通常用第三节 机器学习 - 图26来表示:
第三节 机器学习 - 图27,其中第三节 机器学习 - 图28
序列中第一个观测对象第三节 机器学习 - 图29的隐状态是第三节 机器学习 - 图30的概率,也就是初始隐状态概率。
image.png

HMM的转移概率

第三节 机器学习 - 图32指的是隐状态i从t-1时刻转向t时刻的概率。用A表示转移概率矩阵(transition matrix),第三节 机器学习 - 图33,其中第三节 机器学习 - 图34
image.png

HMM的发射概率

发射概率第三节 机器学习 - 图36描述第三节 机器学习 - 图37依赖于当前时刻的隐状态第三节 机器学习 - 图38程度。
用B表示发射概率矩阵(emission matrix):第三节 机器学习 - 图39,其中第三节 机器学习 - 图40第三节 机器学习 - 图41
image.png

用HMM解决序列标注问题

image.png

HMM的3个基本问题

模型:第三节 机器学习 - 图44
观测序列:第三节 机器学习 - 图45
状态序列:第三节 机器学习 - 图46

  1. 概率计算问题:已知模型和观测序列,计算在该模型下观测序列出现的概率。即求第三节 机器学习 - 图47
  2. 学习问题:已知观测序列,估计模型的参数。

学习问题根据训练数据是否包含对应的状态序列,分为:
2.1. 监督学习:极大似然估计。即求第三节 机器学习 - 图48
2.2. 非监督学习:EM算法。即求第三节 机器学习 - 图49

  1. 预测问题:decoding问题,已知模型参数和观测序列,求最有可能对应的状态序列。即求第三节 机器学习 - 图50

    利用极大似然估计进行监督学习

  2. 初始状态概率的估计

第三节 机器学习 - 图51 第三节 机器学习 - 图52

  1. 转移概率的估计

第三节 机器学习 - 图53 第三节 机器学习 - 图54

  1. 发射概率的估计

第三节 机器学习 - 图55 第三节 机器学习 - 图56

维特比解码

维特比算法解码使用了动态规划算法来解决HMM的预测问题,找到概率最大路径,也就是最优路径。
在每一时刻,计算当前时刻落在每种隐状态的最大概率,并记录这个最大概率是从前一时刻哪一隐状态转移过来的,最后再从结尾回溯最大概率,也就是最有可能的最优路径。
设有N个状态序列长度为T,则时间复杂度为:

  1. 穷举法:第三节 机器学习 - 图57
  2. 维特比:第三节 机器学习 - 图58

    4 条件随机场

    概率图模型

    概率图模型是指一种用图结构来描述多元随机变量之间条件独立关系的概率模型。
    图中的每个节点都对应一个随机变量,可以是观察变量、隐变量或是未知参数等;每个连接表示两个随机变量之间具有依赖关系。
    image.png
    图模型.jpg

    有向图 VS 无向图

    有向图:联合概率分布可以利用条件概率来表示。第三节 机器学习 - 图61
    无向图:通过因子分解将无向图所描述的联合概率分布表达为若干个子联合概率的乘积。第三节 机器学习 - 图62

    因子分解

    无向图G中任何两个结点均有边连接的节点子集称为团。若C是无向图G的一个团,并且不能再加进任何一个G的结点使其成为一个更大的团,则称此C为最大团。
    image.png

    Hammersly-Clifford定理

    无向图的联合概率可以分解为一系列定义在最大团上的非负函数的乘积形式。
    image.png

    条件随机场(Conditional random field, CRF)

    定义:如果随机变量Y构成一个由无向图第三节 机器学习 - 图65表示的马尔可夫随机场,对任意节点第三节 机器学习 - 图66都成立,即
    第三节 机器学习 - 图67
    则称第三节 机器学习 - 图68是条件随机场。式中第三节 机器学习 - 图69表示w是除v以外的所有节点,第三节 机器学习 - 图70表示w是与v相连接的所有节点。
    image.png
    CRF是条件概率分布模型第三节 机器学习 - 图72,表示的是给定一组输入随机变量X的条件下另一组输出随机变量Y的马尔可夫随机场,也就是说CRF的特点是假设输出随机变量构成马尔可夫随机场。

image.pngimage.png
这里说的CRF指的是用于序列标注问题的线性链条件随机场,是由输入序列来预测输出序列的判别式模型。
image.pngimage.png

生成 VS 判别

生成:对联合概率第三节 机器学习 - 图77建模;判别:对条件概率第三节 机器学习 - 图78建模
第三节 机器学习 - 图79
image.png

线性链条件随机场

图G的每条边都存在于状态序列Y的相邻两个节点,最大团C是相邻两个节点的集合,X和Y有相同的图结构意味着每个第三节 机器学习 - 图81都与第三节 机器学习 - 图82一一对应。
第三节 机器学习 - 图83
设两组随机变量第三节 机器学习 - 图84第三节 机器学习 - 图85,那么线性链条件随机场的定义为:
第三节 机器学习 - 图86
其中,当第三节 机器学习 - 图87取1或n时只考虑单边。

参数化形式

给定一个线性链条件随机场第三节 机器学习 - 图88,当观测序列为第三节 机器学习 - 图89时,状态序列为第三节 机器学习 - 图90的概率为(实际上应该写为第三节 机器学习 - 图91
第三节 机器学习 - 图92
第三节 机器学习 - 图93
第三节 机器学习 - 图94作为规范化因子,是对y的所有可能取值求和。

特征函数

  • 转移特征第三节 机器学习 - 图95是定义在边上的特征函数(transition),依赖于当前位置i和前一位置i-1,对应的权值为第三节 机器学习 - 图96
  • 状态特征第三节 机器学习 - 图97是定义在节点上的特征函数(state),依赖于当前位置i,对应的权值为第三节 机器学习 - 图98
  • 特征函数的取值为1或0,当满足规定好的特征条件时取值为1,否则为0。

    特征函数例子

  1. 第三节 机器学习 - 图99

第三节 机器学习 - 图100
权重大,就表明倾向于将痛标注为症状的结尾。

  1. 第三节 机器学习 - 图101

第三节 机器学习 - 图102
正权重:倾向于将冒号前的字标注为检验的结尾,例如’舒张压: 80’。

  1. 第三节 机器学习 - 图103

第三节 机器学习 - 图104
权重大,就表明倾向于认为B-SYM后面跟着I-SYM。

  1. 第三节 机器学习 - 图105

第三节 机器学习 - 图106
权重小,就表明倾向于认为B-SYM后面不会跟着E-DIS。

从特征到概率

实际上CRF就是序列版本的逻辑回归(logistic regression)。正如逻辑回归是分类问题的对数线性模型,CRF是序列标注问题的对数线性模型。
第三节 机器学习 - 图107(第一个求和是对遍历特征方程j的求和,而内层的求和是对句子里面的每一个位置i进行遍历进行求和)
最终,我们通过求指数与归一化的方式将这些得分转换为0、1之间的概率值:
第三节 机器学习 - 图108

CRF VS HMM

CRF更加强大

  • CRF可以为任何HMM能够建模的事物建模,甚至更多。
  • CRF可以定义更加广泛的特征集。HMM在本质上必然是局部的,而CRF就可以使用更加全局的特征。
  • CRF可以有任意权重值,HMM的概率值必须满足特定的约束。

第三节 机器学习 - 图109
第三节 机器学习 - 图110

  • 为每个HMM的转换概率第三节 机器学习 - 图111,定义一组CRF转换特征如第三节 机器学习 - 图112 if 第三节 机器学习 - 图113第三节 机器学习 - 图114的。给定每个特征权重值为第三节 机器学习 - 图115
  • 类似的,为每个HMM的发射概率第三节 机器学习 - 图116,定义一组CRF发射特征如第三节 机器学习 - 图117 if 第三节 机器学习 - 图118第三节 机器学习 - 图119。给定每个特征的权重值为第三节 机器学习 - 图120

    CRF总结

    image.png

    CRF++

    C++代码
    image.png

    特征模板

    image.png