陆:句法分析

语言学的不同分支对应了不同的nlp基础技术,词法学对应于自动分词、词性标注等,而句法学对应的是句法分析。

句法(Syntax): 研究语言的句子结构,针对语言学两个基本关系中的组合关系。

一、句法分析概述

  1. 概念

  • 句法分析:判断单词串是否属于某个语言,如果是,则给出其(树)结构。

  • 句法分析包含两个子问题,一是语言体系的形式化描述,二是语言结构的分析算法。

一般而言,语言结构分析算法的任务着重考虑两方面问题:
1. 消除输入句子中词法和结构等方面的歧义
2. 分析输入句子的内部结构,如成分构成、上下文关系等

  • 结构分析算法的设计依赖于语言描述形式,描述一种语言通常可采用穷举法、文法和自动机。在乔姆斯基层级体系中包含四类文法,考虑到描述能力和复杂程度,最常用的是上下文无关文法CFG。

二、句法分析算法

  1. 移进-规约方法

  • 移进-归约是自底向上语法分析的一种形式,使用一个栈来保存文法符号,并用一个输入缓冲区来存放其余符号。采用堆栈作为数据结构。

两种冲突
• 移进-归约冲突:既可以移进,又可以归约
• 归约-归约冲突:可以使用不同的规则归约移进归约冲突

  • 冲突的解决办法——回溯。

回溯策略:对于互相冲突的各项操作,给出一个选择顺序
• 移进-归约冲突: 优先进行归约,如果失败再尝试移进
• 归约-归约冲突: 规则事先排序,优先执行排在前面的规则
除了在堆栈中除了保存非终结符外,还需要 保存断点信息

  • 每次分析失败时都强制性回溯,将导致大量的冗余操作,效率非常低。

2. 线图分析法Chart parsing

  • 线图是一组节点(node)和边(edge)的集合,线图分析法是基于CFG规则的分析方法。

节点:对应着输入字符串中的字符间隔
边:<起点, 终点, 标记>
句法分析过程:从输入串开始一步步形成chart,直至存在一条边可以覆盖全部节点,并标记为S

  • Chart算法设计三个数据结构,线图chart、待处理表agenda和活动弧active arc.

  • 相较于移进-规约算法,Chart算法有较大的改进,但依然存在不足。

优点:算法简单、容易实现
缺点:算法复杂度高达n^3;难以区分歧义结构;严重依赖句法规则的质量

三、概率上下文无关PCFG

  1. PCFG

CFG存在许多缺陷:
1. 算法运行的复杂度较高,难以处理较大规模问题
2. 手工编写的规则一般带有一定的主观性
3. 写规则本身是一件大工作量的复杂劳动,而且规则对特定的领域有密切的相关性,难以移植

  • 20世纪80年代中期研究者们开始探索统计句法分析方法,而基于概率上下文无关文法(PCFG) 可以说是目前最成功的统计句法分析方法。

  • PCFG实际上相当于为规则增添了概率的简单CFG,同一非终结符的产生式概率之和为1。

在基于PCFG的句法分析模型中,假设满足以下三个条件:
• 位置不变性(place invariance):子树的概率不依赖于该子树所管辖的单词在句子中的位置
• 上下文无关性(context-free):子树的概率不依赖于子树控制范围以外的单词
• 祖先无关性(ancestor-free):子树的概率不依赖于推导出子树的祖先节点

2. CYK算法

  • CYK算法通过动态规划,相对高效的计算出最有可能的句法结构树,伪代码如下图所示。

  • 其中i代表正在处理的行,j为正在处理的列,table[i, j, A]代表第i行j列出现A的概率。算法过程是按列进行的,从第0列开始,直至最后一列规约出S。

  • 初始化的过程就是标注对角线上的概率。

  • 算法中有一个值得注意的地方——最内层循环中为什么只判断了[i,k]和[k,j]位置处的符号。从直觉上,不应该再引入一层循环,遍历该行该列的每一种组合吗?为什么算法中没有这么做呢?

  • 事实上,从句法树的结构就可以得出答案了。由于每个单词(叶节点)仅属于一颗子树,在这种情况下,语法树不会出现“交叉”或“缺漏”的现象。

以下图所示的CYK算法结果矩阵为例,在归约出[2,8]的VP时用到了[2,5]的VP和[5,8]的PP。
假如使用[2,5]的VP和[6,8]的NP进行归约会发生什么情况呢?(假定存在这条语法规则VP -> VP NP)

  • [2,5]VP的语法树(即箭头)中,包含saw,the,dog这三个叶节点,而[[6,8]NP的语法树中包含the,telescope这两个叶节点,中间的单词with没有被使用到!这与我们期望的句法树结构是相悖的!类似的,还可能出现一个叶节点同时属于两颗子树的情况。因此,为了使句法树结构符合要求,必须要求起止下标闭合!

3. 集束搜索Beam Search

Beam search(集束搜索)是一种启发式图搜索算法,在每一步扩展的时候,减掉一些质量比较差的节点,从而减少空间消耗,提高时间效率。但是该算法是不完备的,可能导致潜在的最佳方案被丢弃。

  • Beam search使用广度优先策略建立搜索树,在树的每一层,按照启发代价对节点进行排序,然后仅留下预先确定的个数(Beam Width 集束宽度)的节点,仅这些节点在下一层继续扩展,其他节点就被剪掉了。

4. 小结

  • 需要指出,PCFG仍然只是一个非常粗糙的概率模型,不一定适合自然语言——自然语言是上下文相关的!

PCFG优点:利用概率减小搜索空间;剪枝,加快分析效率; 可以定量地比较两个语法的性能。
PCFG缺点:无法描述的两种现象——结构相关性和词汇相关性。

柒:语义计算初步——词义消歧

一、语义计算

1. 概述

  • 单纯用句法树并不足以描述自然语言,可能结构相同但关系不同。

句法关系:由语法形式表现出来的语法单位的组合关系,如主谓、动宾等。
语义关系:对词所反映的事物之间现实关系的概括,如施事和动作、受事和动作等。

  • 语义计算是一个复杂的问题,本讲专注于词义,重点讨论词义消歧(WSD)策略。

  • WSD问题非常经典,从模型研究角度缺乏足够挑战,更多的考量取决于实际应用条件(资源限制、数据规模等)。

2. 基本概念

  • 义项:词典中的表示,语义学中或称“义位”,是语义系统中能独立存在的基本语义单位。

  • 上下义关系:两个义位存在类属关系。

  • 语义场:Semantic Field,根据语义要素建立。

3. 多义词

  • 多义词是自然语言中普遍存在的现象,在NLP的许多应用领域,都需要识别出多义词在具体语境中的意思。

  • 多义词的消歧主要有三个问题:判断一个词是不是多义词;不同义项的清晰的区分标准;对出现在具体语境中的每个多义词,为它确定一个合适的义项(计算的核心)。

二、基于知识库的方法

  1. 基于词典释义

词典中对多义词的各个义项的描写是对多义词的不同使用情况的总结,是最容易想到一个思路。
利用词典中的释义文本进行WSD——Lesk,1986,准确率50%-70%之间。

  • 基本思想:利用词典中对多义词的各个义项的描写,求多义词的释义跟其上下文环境词的释义之间的交集,判断词义的亲和程度,来确定词义。

  • 该方法计算过程简单;但由于词典释义的概括性,这种方法对于实际语料中多义词的开方向性上下文,覆盖效果有限。

2. 基于义类词典

Yarowsky,1992,试验12个多义词,准确率92%

  • 基本思想:一个多义词在义类词典中可能分属不同的义类,在具体语境中,确定了一个多义词的义类实际上就刻画了它的一个义项。

如 "crane"有两个意思,“吊车”与“鹤”。前者属于“工具/机械”义类,后者属于“动物”义类。
若能够确定"crane"出现在具体语境中时属于哪个义类,实际上也就知道了"crane”的义项。

  • 计算中要解决的两个问题:①确定每一个义类的特征词,以及每个特征词对于该义类的权重;②对于一个具体语境中的多义词,根据其周围词隶属于某个义类的可能性大小,选择其中可能性最大的那个义类作为该多义词对应的义项标记。

  • 该方法可以理解为是对一个多义词所处语境的“主题领域”的猜测,对义项区别依赖大语境的多义词效果较好(如名词),对训练语料库不需要事先标注。

三、基于统计的方法

  1. 基于贝叶斯判别

Gale et al.,1992,试验了6个多义词,准确率90%

  • 基本思想:计算多义词W出现在给定上下文语境C (包括多个词)中,标注为各个义项的概率大小,并选择使概率最大的义项作为该多义词的义项标注。

  • 需要用到的概率包括两部分,一是W分别作为各个义项的先验概率,二是在不同义项下W与上下文词的共现概率。因此需要标注词义的语料库。

2. 基于互信息

Brown, et al, 1991

  • 基本思想:要判断多义词在具体语境下的意义,关键是找到能够指示该多义词词义的示意特征(搭配的上下文词)。

  • 如何得到示意特征和特征值呢——Flip-Flop算法。不断调整分类情况,使得互信息最大。

  • 确定了这两个量之后,对于所给的多义词,只需扫描上下文,判断示意特征的值属于哪一类即可。

四、基于多分类器集成

单分类器的选择:如SVM、朴素贝叶斯(NB)、决策树(CT)等。

  1. 基于概率的方法

  • 公式1将各个分类器的给出的概率之积作为该义项的概率。

  • 若考虑单值近似,可用最大值、最小值、均值等代替乘积。

2. 基于投票的方法

  • 最大投票:将每个分类器的概率转化为二值函数。

  • 序列投票:每个分类器的投票结果内部排序,位次的倒数作为投票分值。

3. 基于性能的方法

  • 加权投票:在最大投票的基础上,为不同分类器附加权值。

  • 概率加权:计算每个义项的得分,得分由各个分类器分类为该义项的概率与分类器权值之积组成。

4. 小结

  • 权重设置凭经验很难获得最优(有可能因任务而异),可以考虑引入机器学习来解决。

  • 集成的单分类器应仔细选择。

  • 模型集成在大多数情况下能够提升自然语言处理的性能。

五、伪词

  1. 概念

  • 伪词:通过合并两个或多个自然词汇,人工创造出来的歧义词。能够避免人工标注的代价,自动创建大规模的训练、测试集。

例如:选择两个自然词汇banana和door,创建伪词banana-door,在语料库中用伪词banana-door替换所有出现的banana和door。那么banana-door就是一个同时具备banana和door所有义项的人造多义词。

2. 实验

  • 存在的问题——伪词能否被当成真实多义词?

实验思路:无法直接比较针对多义词的消歧任务和针对伪词的消歧任务,但可通过同一算法的运行效果进行间接比较。

  • 实验设置:采用朴素贝叶斯分类算法,多义词和伪词满足以下条件。

  • 从结果来看,随机创造的伪词并不能直接代替自然的多义词。

3. 语义感知伪词

  • 既然随机创造的伪词效果不好,那么能否限制部分条件,使得到的伪词满足要求呢?依照这个思路,就出现了语义感知伪词。

  • 不同的规则可以产生不同的语义感知伪词,如:基于邻近度的伪词,基于相似性的伪词,基于主题签名(Topic Signatures)的伪词。

  • 基于邻近度的伪词:从同义词集、上下位词等词集中选择出现频率与原多义词最相近的。

问题:
①依赖义项标注语料,覆盖度不足,限制了对任意多义词的建模能力。
②:搜索空间较小,创造伪词缺少灵活性,与大规模语料需要每个伪义项出现足够多频率相悖。

  • 基于相似性的伪词:从同义词集中保留满足最低出现频率的词,并选择语义相似度最高的单义词。

  • 基于主题签名的伪词:从同义词、上下位词等词集中保留满足最低出现频率的词,并在同一主题签名中选择语义相似度最高的单义词。

4. 小结

  • 实验结果显示,基于相似度的伪词实现了多义词生成的全覆盖,较高的最低出线频率表明了伪词生成更灵活,同时保持了良好的词义建模能力。

  • 结论:基于相似度的伪词可以可靠地替代真实的词,用于WSD系统的分析和比较实验中

nlp知识点总结(中)相关推荐

  1. 自然语言处理(NLP)之gensim中的TF-IDF的计算方法

    自然语言处理(NLP)之gensim中的TF-IDF的计算方法 step 1.  去掉所有文本中都会出现的词 texts = [['这是', '一个', '文本'], ['这是', '第二个', '文 ...

  2. 一些在NLP的面试中提问频率非常高的问题

    作者:Pratik Bhavsar      编译:ronghuaiyang 导读 在NLP的面试中提问频率非常高的问题. 练习NLP是一回事,破解面试是另一回事.对NLP人员的面试与一般的数据科学非 ...

  3. Java核心知识点 --- 线程中如何创建锁和使用锁 Lock , 设计一个缓存系统

    理论知识很枯燥,但这些都是基本功,学完可能会忘,但等用的时候,会发觉之前的学习是非常有意义的,学习线程就是这样子的. 1.如何创建锁? Lock lock = new ReentrantLock(); ...

  4. 【NLP】word2vec中的数学模型

    作者 | 小立军 1. 简介 word2vec 是 Google 公司于 2013 年开源推出的一个用于获取 word vector 的工具包,它简单.高效,因此引起了广泛关注.word2vec 是自 ...

  5. list python 访问 键值对_基础|Python常用知识点汇总(中)

    字符串字符串是 Python 中最常用的数据类型.我们可以使用引号('或")来创建字符串.1.创建字符串 str1 = 'Hello World!' str2 = "Hello W ...

  6. python中nlp的库_用于nlp的python中的网站数据清理

    python中nlp的库 The most important step of any data-driven project is obtaining quality data. Without t ...

  7. 横扫13项中文NLP记录,中文字型深度学习模型Glyce问世!

    来源:PaperWeekly 本文约3000字,建议阅读5分钟. 本文介绍了由香侬科技提出的中文字型的深度学习模型Glyph,其中13项打破纪录. [ 导读 ]香侬科技近期提出 Glyce,首次在深度 ...

  8. pandas关键字提取_使用NLP从文章中自动提取关键字

    背景 在研究和新闻文章中,关键词构成了一个重要的组成部分,因为它们提供了文章内容的简洁表示.关键词在从信息检索系统,书目数据库和搜索引擎优化中定位文章方面也起着至关重要的作用.关键词还有助于将文章分类 ...

  9. 分享 75 个精选的 JavaSript 基础知识点(中)

    由于篇幅过长,我将此系列分成上中下三篇,上一篇文章<分享 75 个精选的 JavaSript 基础知识点(上)>,这是中篇. 什么是IIFE,它的用途是什么? Function.proto ...

最新文章

  1. 【linux】串口编程(三)——错误处理
  2. Java 8 失宠!开发人员向 Java 11 转移...
  3. 使用条件卷积进行实例和全景分割
  4. LeetCode_每日一题今日份_167.两数之和II-输入有序数组
  5. 如何查看自己Oracle的版本
  6. 如何选择免费网站监测工具?国外mon.itor.us还是国内监控宝!
  7. 手把手带你入门Python爬虫(五、CSDN论坛之模型设计)
  8. C/C++信息隐写术(四)之大程序藏入BMP文件
  9. 艾伟也谈项目管理,一种适用于真实世界BPM的协作方式
  10. 正向最大匹配中文分词算法
  11. 实时统计分析技术浅谈
  12. 性能测试--jmeter结合charles,以及charles的基本使用【11】
  13. 13防更新描述文件_描述文件终于来了,iOS 13 也能屏蔽更新!
  14. MySQL建表语句解析表名
  15. 10倍性能提升!英伟达新卡皇降临,图灵架构GTX 20系列发布
  16. Django中使用163邮箱发送邮件
  17. 全基因组关联分析学习资料(GWAS tutorial)20210313更新版
  18. 【线代】行/列分块矩阵中向量正交有什么用?如何表述?向量正交和线性无关有什么关系?
  19. 从ES5到ESNext-这是自2015年以来添加到JavaScript的所有功能
  20. 台式计算机c盘怎么清理空间,电脑C盘空间空间清理方法

热门文章

  1. MP4文件太大怎么变小?简单的方法是什么?
  2. 4种锻炼方法保护你的视力
  3. oracle goldengate director,Oracle GoldenGate Director配置手册
  4. java获取专辑封面_android获取音乐文件的内置专辑图片实现思路及代码
  5. 全国各地级市国有土地出让价款数据 (2004-2017年)
  6. 设计师们各种实用网站
  7. 《袁老师访谈录》第八期|温维佳教授/香港科大(广州)功能枢纽署理院长【问诊未来·院长系列:科研教授的硬核创业之道】...
  8. Selenium爬取打卡记录并记录到表格
  9. 四舍五入取整特殊数据处理
  10. 【基于物联网的智能草莓种植系统的设计与实现系列教程】7-树莓派触3.5寸控屏连接翻转与触屏校准 (课程设计、毕设项目、树莓派、yolov5)