NLP知识简要梳理

等我草草刷完一遍NLP领域的相关知识,才发现工程实践的综合性太强了,几乎涉及到了NLP的所有!核心知识!而且还要结合KG!暴风哭泣,我好害怕做到一半做不出来。。。啊,我好菜啊。。。我怎么什么都不懂。。。

自然语言:语音、文字

NLP:研究语言能力和语言应用的模型,建立算法框架来实现这样的语言模型,并完善和评测。最终用于设计各种实用系统。

是语言学、计算机科学、统计学的交叉学科。属于AI领域的子领域。

处理粒度:文档库 -> 文章 - > 段落 -> 句子 -> 词

发展历程

以语言学为基础:建立基本语言规则,使用数理逻辑进行推理,建立模型或理解语言——语法语义,形式语言理论

以统计学为基础(目前):在足够大的数据的基础上,分析规则,产生智能。业务知识相对不重要——对材料的数量有要求

未来的趋势是深度学习等AI最新技术

NLP的研究内容

  • 信息检索:搜索引擎,要求分词歧义处理、文档质量判断、去重
  • 机器翻译
  • 文档分类:基于距离的文本聚类
  • 问答系统:基于答案库
  • 信息过滤
  • 自动文摘
  • 信息抽取:将无结构的数据整理成结构化的数据以供检索——命名实体抽取
  • 文本挖掘
  • 舆情分析:情感分析——基于监督的文本分类
    • 词库匹配
    • 基于正负样本构建分类器
  • 机器写作:形式语言处理
    • 如自动股评:先分为行情和预测两部分,每一部分都可以有多种文法来自动生成句子
  • 文稿机器校对
  • OCR或语音识别

困难

场景:语言的多样性、多变性、歧义性

学习:数学模型——概率图模型、隐含马尔科夫过程、最大熵模型、条件随机场

语料:定义、作用、获得途径

基于语言学的理论

描述语言的三种途径:穷举法、文法(产生式系统描述)、自动机法

形式语言
  • 集合论
    • 字符串——语言是一定规律的字符串的有限或无限的集合
      • 连接
      • 集合乘积
      • 闭包
  • 图论(离散数学)
  • 形式语法是一个四元组(非终结符,终结符,产生式(推理规则),初始符) ==> 句子
    • 推导
    • 规约——中间有多次推导

文法的构造:一般来说,根据语言构造文法没有太直接的方法可用,它需要构造者本人所具有的经验。同一种语言可有多种文法。

形式语言的应用:

  • 一些结构化语言:如SQL语法图
  • 机器写作
自动机理论

四型文法:——类似于数据库的设计范式

  1. 正则文法——3型文法,顺序线性产生
    • 左右线性正则文法是等价的
  2. 上下文无关文法——2型文法
  3. 上下文有关文法——1型文法
  4. 无约束文法——0型文法

越规范越易于处理

有限自动机(DFA):

  • M 五元组 (输入符号,状态集合,映射,初始状态,终止状态)
  • 对于任意一个正则文法,总可以确定一个对应的DFA

下推自动机(PDA):

  • 可看成一个带有附加下推存储器(一个堆栈)的有限自动机
  • 七元组
  • 对于上下文无关文法,可以构造一个下推自动机。由于正则文法是上下文无关文法的子集,因此也可以出离正则文法

线性界限自动机——对应上下文有关文法

图灵机——对应无约束文法

自动机的应用:

  • 单词自动查错纠正
    • 编辑距离
  • 词性消歧
    • 状态转换机
形式语言的缺陷
  • 对于汉语这样的大型自然语言系统,难以构造精确的文法
  • 语法正确的句子可能是无意义的
  • 解决:基于大量预料,采用统计学手段建立模型

统计自然语言处理

只有在数据不够充足的情况下,我们才需要更加借助业务知识。

n元语言模型

通过概率,计算某个句子的概率。——条件概率,为了简化计算并减少空间占用,只计算与前一个字有关的概率

一般步骤
  1. 收集大量语料:基础工作,工作量最大
  2. 对语料进行统计分析,得出知识(概率)——例如n元文法
  3. 针对场景建立算法 ,即使是计算简单的概率也有很多复杂的算法可以运用,有些可以直接标注
  4. 解释或应用结果

性能评价常用指标:交叉熵、困惑度

数据平滑:加法平滑、古德-图灵估计法、Jelinek-Mercer平滑方法

语言模型的缺陷
  • 在训练语言模型时所采用的的语料往往来自多种不同的领域,这些综合型语料难以反映不同领域之间在语言使用规律上的差异,而语言模型恰恰对于训练文本的类型、主题和风格都非常敏感——非常依赖语料库,数据来源是多领域而应用比较专业时效果往往比较差
  • n元语言模型的独立性假设前提是当前词出现的概率仅与前面的n-1个词相关,这种假设比较脆弱

应用:——选择最高概率的做出结果输出

  • 语音识别歧义消除
  • 汉语分词问题
概率图模型

基于图的概率表示,计算联合分布的概率

有向图——贝叶斯网; 无向图——马尔科夫网

不同视角: 图 -> 图导出的独立关系 -> 图导出的因子分解

An Introduction to Conditional Random Fields

分类器

产生式模型:朴素贝叶斯——先估算联合概率密度,再用贝叶斯公式,在少量样本情况下,可以取得更好的精确率

判别式模型:logistics回归——直接估算,在样本增加的情况下,逐渐逼近前者的精确率

两者关系

朴素贝叶斯 ->(序列化) -> 隐马尔可夫 ->(去掉一些限制条件) -> 条件随机场

logistics回归 ->(序列化) -> 条件随机场

马尔科夫及HMM

马尔科夫链的应用:

  • 压缩算法
  • 排队论
  • 语言识别
  • 基因预测
  • 搜索引擎鉴别网页质量的RP值

隐马尔可夫的应用:

  • 语音识别
  • 分词

缺陷:

  • 只能根据顺序(马尔科夫性)来计算,有些特征没有办法刻画——解决最大熵
  • 生成式模型,需要给出状态和符号之间的联合概率分布,把观察符号割裂为相互独立的验资结构,无法提现依赖关系,标注偏置——解决:条件随机场
最大熵模型

在只掌握了未知分布的部分信息的情况下,符合已知知识的可能有多个,但是熵值最大的概率分布最真实地反映了事件的分布情况

数学表达:特征

参数估计:GIS算法

最大熵马尔科夫模型:因为加入了特征,克服了马尔科夫只能适应线性的缺陷

条件随机场(最难理解)

给定随机变量X的条件下,随机变量Y的马尔科夫随机场。

参数化形式

特征模板

前向-后向算法

具体理论部分以后细看吧…这会真滴看不懂

CRF应用:把NLP问题转为标注问题——命名实体识别,标注,句法分析,词法分析

  1. 收集大量已经标注好的语料
  2. 建立特征模板,由软件系统自动扫描语料并按模板生成特征函数。对重复出现的特征进行强化
  3. 训练,参数估计,确立模型
  4. 给模型输入观测序列,模型预测其标注序列

汉语分词

自动分词,命名实体识别,词性标注

存在的问题

分词规范问题:切分粒度

歧义切分问题:交集型、组合型、多义组合型——问题不大

未登陆词问题:人名、地名、组织名、术语、术语、新词——占比98%,主要关注问题

分词发展

基于词典 -> 最少词数分词 -> 用统计模型解决分词歧义 -> 无词典统计方法分词

词典:——精度不高,但简单性能好

  • 正向最大匹配法、逆向最大匹配法、双向匹配法
  • 逐词遍历法
  • 基于词表的分类法
  • 实现:树、散列表、布隆过滤器

统计方法:

  • N-最短路径方法
  • 基于词的n元语法模型——语言模型
  • 由字构词——把分词问题看成标注问题,即CRF——不适用于海量数据
  • 基于词感知机算法
  • 生成式和判别式相结合

词典其实可以看成一种没有上下文关系,只有词的特殊语料库。

性能指标
  • 精确率
  • 召回率
  • $F$值——前两个指标的调和平均

中文分词十年回顾

命名实体识别(发展较差)
  • 基于多特征的命名实体识别模型
  • 基于CRF
未登录词处理方法(重要)

基于规则的方法、机器学习方法

词性标注

汉语语法分析“三姐妹”:分词(较成熟)、实体命名识别(发展较差)、词性标注(较成熟)。

在工程实现里,词性标注和分词同时完成

  • 基于HMM的方法——相比于CRF对语料的要求更宽松,基于较少的标注就可以得到不错的结果,速度也更快

文本分类

选取适当的特征及权重,将文本量化映射为样本空间中的样本。

通过在样本空间构建适当的分类器或聚类解决文本分类问题,通过计算向量余弦计算文本相似度。

文本特征选择方法
  • 基于文本频率的特征提取方法——太高太低都不行
  • 信息增益法——熵的差值
  • $X^2$统计量——关联程度
  • 互信息法——共现程度
LDA模型(较难)

抽词建立文档

分类器性能评测

应用:

  • 网页自动分类
  • 判断垃圾邮件
  • 情感分析

句法分析

  • 基于PCFG——上下文无关
  • 结构分析
    • 浅层句法分析——完全句法分析的简化版,包括语块识别与分析和语块依附关系两部分
    • baseNP —— 转成标注问题
  • 依存关系——以动词为中心
    • 判别式
    • 序列标注

语义分析

语义消歧

篇章分析

指代消解——技术难度极高

自动抽取文摘—— 给句子打分,抽取每段中的高分句子。句子之间必须做篇章衔接性的处理,即句子消融。过程:对原文进行分词 -> 特征分析统计 -> 计算词的权重 -> 根据主题词计算句子的权重 -> 根据摘要句生成摘要

  • 基于LDA的单文档摘要

  • 多文档摘要:基于单文档抽取的句子,如何解决排列问题,如何上下文融合

问答系统

问题分析 + 信息检索 + 答案抽取

  • 基于问题-答案对的问答系统——根据日常经验形成的有问题-答案数据库
  • 基于自由文本的问答系统——只有知识库,没有标准答案对。对答案进行分析后,知识库抽取信息对原问题中的句子进行替换,这可能会产生多个句子,所以还需要将这些句子拿去与原文匹配,找出存在的证据。每找出一次证据,给句子加分,最后选出得分最高的句子。
    • 极其复杂,几乎用到了NLP中所有技术
    • 问题分析:问句分类,主题识别,语法分析,指代消解,命名实体识别,名词短语,动词短语抽取
    • 信息检索:文本检索,隐语义析取,相似度计算
    • 答案提取:文档摘要

工具

中文分词工具

语料库:

  • LIAVC:香港城市大学建立
  • LDC中文树库
  • WordNet
  • FrameNet
  • EDR
  • 北京大学综合型知识语言库
  • 知网
  • 概念层次网络

词性标注:

  • tagger

语言模型:

  • SRILM

HMM:

  • HTK: 主要用于大规模语音识别系统

最大熵:

  • openNLP:有java的API
  • MALLET
  • NLTK:python

CRF:

  • CRF++

分词:

  • ICTCLAS/NLPIR
  • Jieba——python
  • 庖丁解牛——java

命名实体识别:

  • Stanford NER: 英文,CRF

问答机器人:

关于语料:要么提供明确的业务逻辑,比如在信息的哪一个部分能够提取到所需的信息;或者提供一个词典,词典中的都是想摘取的信息;要不基于大量标注好的学习材料,建立一个学习模型

顶尖会议及人物

中文信息学会

ccks

赵海

有兴趣可以参加会议相关比赛…