## 1·绪论
**自然语言处理基本概念**
自然语言处理目标就是实现人机之间的有效沟通,意味着要使计算机能够理解自然语言的意义,也能以自然语言文本来表达给定的意图,思想等。即*自然语言理解*和*自然语言生成*。
**自然语言处理简史**
大体来看自然语言处理经历了20世纪50年代末到60年代的初创期,20世纪70年代到80年代的理性主义时代,20世纪90年代到21世纪初的经验主义时代以及2006年至今的深度学习时代。
**自然语言处理的主要内容**
自然语言处理研究与语言学密切相关,语言学研究可以划分为*形态*,*语法*,*语义*,*语用*等几个层面。形态学主要研究单词的内部结构和构成方式。语法学主要研究句子,短语以及词等语法单位的语言结构与语法意义的规律。语义学主要研究语言的意义,目标是发现和阐述关于意义的知识。语用学是从使用者的角度来研究语言,研究在一定的上下文环境下的语言如何理解和使用。
自然语言处理主要研究内容在词汇粒度的研究内容包括主要:*词形分析*,*词性标注*,*词义消歧*,分别针对单词的词性,语法,语义开展研究。句法分析则是主要针对句子根据语法进行结构分析。篇章分析核心是对篇章的连贯性和衔接性进行分析,涉及到篇章级别语法结构,同时也包含部分语义的内容。而语义分析研究则涉及到从词汇,短语,句子到篇章等各个粒度。语言模型主要聚焦于句子粒度,但是也包含部分短语和篇章级别的研究。
整体上来看,自然语言处理的主要研究内容围绕语言学基础理论,在形态,语法以及语义等层面开展自然语言理解基础算法和自然语言生成基础算法研究。在此基础上围绕自然语言处理的重要应用场景开展一系列的应用技术研究。
**自然语言处理的主要难点**
困难的根本原因是自然语言在各个层面上都广泛存在的各种各样的的歧义性或多义性。
- 语音歧义
- 词语切分歧义
- 词义歧义
- 结构歧义
- 指代和省略歧义
- 语用歧义
总而言之,自然语言处理的困难来源于非常多的方面,即面临来自于语言本身所不可避免的根本性问题,也缺乏通用的语义表示以及语言意义的理论支撑。同时,现阶段自然语言处理算法所依赖的机器学习方法,还存在需要大规模标注数据,跨领域效果差,泛化能力和鲁棒性弱,模型不可解释等诸多问题。
**自然语言处理的基本范式**
自然语言处理的发展经历了从理性主义到经验主义,再到深度学习三个大的历史阶段。在发展过程中也逐渐形成了一定的范式,主要包括:*基于规则的方法*,*基于机器学习的方法*以及*基于深度学习的方法*。
1,基于规则的方法
常见的规则包括产生式,框架,自动机,谓词逻辑,语义网等形式。这类方法主要优点是直观,可解释,不依赖大规模数据。但是,基于规则的方法也有明显的缺点,主要包括覆盖率差,大规模规则构建代价大,难度高等。人工构建规则可以较为容易处理常见现象,但是对于复杂的语言现象难以描述。由于语言现象的复杂性,使得基于规则的方法整体覆盖率很难提升到非常高的程度。并且,规则库达到一定数量之后维护困难,新增加的规则与已有规则也容易发生冲突。
2,基于机器学习的方法
基于机器学习方法的自然语言处理算法需要针对任务构建大规模训练数据,以人工特征构建为核心,针对所需的信息利用自然语言处理基础算法对原始数据进行预处理,并需要选择合适的机器学习模型,确定学习准则,以及采用相应的优化算法。这些选择非常依赖经验,缺乏有效的理论支持。也使得基于机器学习的方法需要花费大量的时间和工作在特征工程上。
3,基于深度学习的方法
*深度学习方法通过构建有一定深度的模型,将特征学习和预测模型融合,通过优化算法使得模型自动地学习出好的特征表示,并基于此进行结果预测。*
深度学习是机器学习的一个子集,通过多层的特征转换,将原始数据转换为更抽象的表示。这些学习到的表示可以在一定程度上完全代替人工设计的特征,这个过程也叫做*表示学习*。与基于特征工程的方法所通常采用的离散稀疏表示不同,深度学习算法通常使用*分布式表示*,特征表示为*低维稠密向量*。
以上三种范式虽然有很大的不同,但都有一个相同点就是需要针对特定任务进行构建。面向不同的任务,按照不同的范式构建数据,模型等不同方面,所得到的算法或者系统仅能够处理特定的任务。在机器学习和深度学习范式下,甚至对模型预测目标进行微小修正,通常都需要对模型进行重新训练。
4.基于大模型的方法
基于大模型的自然语言处理的流程转换为:*大规模语言模型构建*,*通用任务能力训练*以及*特定任务使用*三个主要步骤。
还需要特殊强调的是自然语言处理中很多任务都转换为了机器学习问题,因此很多机器学习算法可以应用于多个自然语言处理任务。比如,条件随机场模型(CRF)可以用于中文分词,也可以用于词性标注,还可以用于命名实体识别。
## 2.词汇分析
**语言中的词汇**
词通常是由语素构成。语素又称词素,是语言中意义的最小单元。只包含一个语素的词语称为简单词,而包含多个语素的词称为复杂词。根据词在语言中的用途的不同,词还可以被划分为实义词和功能词。
研究单词的内部结构和其构成方式的学科称为形态学。语素主要分为两类:词根和词缀。
词性也称词类,是根据词在句子中扮演的语法角色以及与周围词的关系对词的分类。
**词语规范化**
文本的规范化处理主要包含句子切分,词语切分,词语规范化等步骤。
词语规范化任务是将单词或词形转化为标准形式,针对有多种形式的单词使用一种单一的形式进行表示。
1,词语切分
将句子切分为单词序列。在词语切分的定义中使用了词形。词形指的是在一个特定文档中的某个能够表达语义含义的字符序列。
2,词形还原
词形还原是将词的各种变化形式还原其词根的过程。通过词形还原可以实现词语的规范化,单词的不同变化形式统一为词根。
词形还原可以通过词形分析完成。词形分析是将一个词分解成为语素的过程。
3,词干提取
词干提取是词形分析的简化版本,其目标是将具有词形变化的词语还原为其词干。与词性分析不同,词干提取并不要求还原的词干一定与其语言学词根完全一致,只需要将相关的单词映射为统一的词干。
**中文分词**
*中文分词是指将连续字序列转换为对应的词序列的过程,也可以看做在输入的序列中添加空格或其他边界标记的过程。*
中文分词的主要困难来自以下三个方面:分词规范,歧义切分和未登录词识别
通常汉语中常见的切分歧义可以归纳为三类:交集型切分歧义,组合型切分歧义和真歧义。
- 基于最大匹配的中文分词
- 基于线性链条件随机场的中文分词:根据中文分词任务定义,我们可以将分词过程看作是对于字的分类。具体来说,对于输入句子中的每一个字ci,根据它在分词结果中的位置赋予不同的标签。可以假设一个字在词语中有四个位置:开始(B),中间(I),结尾(E),以及单独成词。通过BIES标签可以将分词问题转换为字的分类问题。此外,一个字的分类结果与其周边的字的分类结果有关联。因此,中文分词任务也是典型的序列标注问题。条件随机场试图对多个变量在给定观测值后的条件概率进行建模。观察序列x对应输入的字序列,标记序列为每个字对应的BIES标签。
- 基于感知器的中文分词
词序列预测:给定模型参数情况下,需要计算所有候选分词结果得分。但是,每一个句子都有数量十分庞大的候选分词结果,如果将所有可能的结果都枚举一遍的话,搜索空间将变得非常巨大,使得我们无法有效地进行训练与推断。针对这一问题,常见的解决方式是使用*集束搜索*算法进行解码。
集束搜索是一种常用的限制搜索空间的启发式算法。在每一步解码过程中,从上一步解码的所有候选集中选取前 K 个得分最高的结果继续解码,而舍弃得分排在第 K 名之后的所有候选结果。集束搜索可以理解为一种“松驰”过的贪心算法,它并不能保证一定会得到得分最高的候选序列。
- 基于双向长短期记忆网络的中文分词:转换为字的序列标注任务:基于 BiLSTM+CRF 的神经网络分词模型框架
**词性标注**
词性标注是指在给定的语境中确定句子中各词的词性。
在实际应用过程中,使用隐马尔可夫模型进行词性标注,通常还需要解决两个问题:长句子和未登录词。通常会限定一个句子中单词的最大数量。如果一个句子超过了所设定的最大长度,则寻找距离最大长度最近的标点,并在标点处将句子截断。对于词典当中没有出现的未登录词,由于观测概率矩阵 B 中不存在,也需要进行特殊处理。第一种做法是在单词表中增加一个“未登录词”项,同时在观测概率矩阵中设置该词以同样的概率观察到所有标记类别。这种做法较为粗糙,词的一个重要分类角度是开类词和闭类词。未登录词通常属于名词、动词、形容词等开放类词语。其中人名、地名、机构名等名词又占据了很大的比例。因此第二种做法是引入词法规则,对人名、地名、数词、副词等进行判断。此外,还可以根据更大规模的未登录词的词性统计,从而设定更合理的观测概率。
**延伸阅读**
本章中介绍了中文分词和词性标注任务,这两个任务都是典型的序列标注任务,除了基于词典的中文分词算法之外,本章中介绍的其他算法都采用有监督分类算法。因此,这些方法通常都面临跨领域处理效果差、依赖大规模训练语料等挑战。此外,还存在基于特征表示的方法依赖人工设计特征函数,而经典深度学习模型无法有效利用知识等问题。针对上述问题,近年来有大量工作从不同方面开展研究。
**习题**
(1) 语言学中词和语素的定义分别是什么?其主要的不同是什么?
在语言学中,词(Word)是形式和意义相结合的单位,也是语言中能够独立运用的最小单位。词通常是由语素(Morpheme)构成。语素又称词素,是语言中意义的最小单元。语素与词不同,语素不能够独立运用而词可以。
(3) 中文分词中歧义切分包含几种主要的类别?针对每种歧义类别试举几例,并说明具有歧义的切分方式。
交集型切分歧义
组合型切分歧义
真歧义
(4) 如何在基于线性链条件随机场的中文分词算法中引入词典特征?
具体做法是在每个位置考虑当前字以及前后几个字的组合是否在词典中存在,如果存在,则将这个特征作为条件特征加入到条件随机场模型中,从而提高分词的准确性。
(5) 如何处理词性标注算法中的未登录词?
- 基于规则的方法:可以使用一些启发式规则来处理未登录词。例如,可以根据未登录词的形态特征(如后缀、前缀、词长等)和上下文信息来推断其可能的词性。这种方法虽然简单,但在某些情况下可能会产生不准确的结果。
- 基于统计的方法:可以利用已知词汇的词性分布信息来推断未登录词的词性。例如,可以通过查找相似词的词性分布或者使用 n-gram 模型来预测未登录词的词性。这种方法需要足够的语料库来训练模型,并且可能对数据稀疏性敏感。
- 基于词嵌入的方法:可以利用预训练的词向量模型(如Word2Vec、GloVe等)来表示词汇,并利用相似度来推断未登录词的词性。这种方法通过利用词汇的语义信息来解决未登录词问题,通常能够取得较好的效果。
- 基于深度学习的方法:可以使用深度学习模型(如循环神经网络、Transformer等)来学习词性标注任务,并通过上下文信息来推断未登录词的词性。这种方法通常能够在大规模数据上取得较好的性能,但需要足够的训练数据和计算资源。
## 3.句法分析
句子并非词语的随意组合,而是按照一定规则结合起来的离散单位组成。句法就是研究这些自然语言中不同成分组成句子的方式以及支配句子结构并决定句子是否成立的规则。句法反映了句子中词,词序以及层级结构之间的关系。
**句法概述**
语法就是指自然语言中句子,短语以及词等语法单位的语法结构与语法意义的规律。根据语法就可以判断不同成分组成句子的方式以及决定句子是否成立。
语法理论在构建时,一个重要的问题是该理论是基于成分关系还是基于依存关系。如果一种语法理论基于成分关系,那么该理论就属于成分语法,也称短语结构语法。成分语法主要包含:范畴语法,词汇功能语法,最简方案等。如果一个语法理论基于依存关系,那么该理论就属于依存语法。依存语法主要包含:文本-意义理论,词格理论,功能生成描述理论。
1,成分语法理论概述
成分又称短语结构,是指一个句子内部的结构成分。成分可以独立存在,或者可以用代词替代,又或者可以在句子中的不同位置移动。在此基础上,根据不同成分之间是否可以进行相互替代而不会影响句子语法正确性,可以进一步的将成分进行分类,某一类短语就属于一个句法范畴。
句法范畴不仅仅包含名词短语(NP),动词短语(VP),介词短语(PP)等*短语范畴*,也包含名词(N),动词(V),形容词(Adj)等*词汇范畴*。除此之外还包含功能范畴(包括冠词,助动词等)。
句法范畴之间不是完全对等的,而是具有层级关系。我们可以定义短语结构规则,是对句法范畴间的关系进行形式化描述。
例如:
( 1 ) S −> NP VP
( 2 ) NP −> Det N
( 3 ) VP −> V NP
成分语法就是由*句法范畴*以及*短语结构规则*定义的语法。
一个句子根据成分语法分析得到的层级结构,可以使用*成分语法树*进行表示。
2,依存语法理论概述
在基于依存关系的语法中,句子中每个成分对应句法结构中的唯一一个节点。两个成分之间的依存关系是二元的非对称关系,具有方向性,一个成分是中心语,另一个成分依附于中心语存在,关系从中心语成分指向依存成分。中心成分称为中心词或支配者,依存成分也称为修饰词或从属者。依存关系根据中心成分和依存成分之间的关系又可以被定义为不同的依存关系类型。
配价理论,两个单词之间是否存在依存关系?单词之间谁处于支配地位?谁处于从属地位?建立这些词与词之间关系的依据是什么?价是词语的一个属性,表示某个词语与其他词语结合的能力。
可以将汉语中的动词V根据其价数,分为以下四类:
(1)零价动词
不强制与某个行动元关联的动词
(2)一价动词
强制与一个行动元关联的动词
(3)二价动词
强制与两个行动元关联的动词
(4)三价动词
强制与三个行动元关联的动词
通常依存句法树引入 root 做为句子或者单棵树的主要支配者,是树的根节点。一般情况下动词是 root 节点的直接从属成分,其余节点应该直接或者间接依存于动词节点。
对依存关系进行了进一步的细化,主要分为论元依存关系和修饰语依存关系两大类
**成分句法分析**
成分句法分析是对给定句子根据成分语法中制定的规则构建其所对应的结构树的过程。
由于句法结构具有歧义,因此句法分析中最重要的工作之一也是如何消除歧义。成分语法中的结构歧义主要有两种:附着歧义(Attachment ambiguity)以及并列连接歧义
**依存句法分析**
依存句法分析任务目标是根据依存语法理论分析输入句子得到其依存句法结构树。
依存句法结构使用*依存图*进行表示。
**习题**
(1) 如何判断一个语法理论属于成分语法还是依存语法?
- 分析单位:成分语法关注的是句子的组成成分,即句子被划分为不同的成分,如主语、谓语、宾语等,并研究它们之间的结构关系。依存语法关注的是词与词之间的依存关系,即句子中的词语通过直接的依存关系连接在一起,形成一个依存树结构。结构描述方式:
- 成分语法通常使用树状结构(成分树或短语结构树)来描述句子的结构,其中每个节点表示一个成分,边表示成分之间的关系。依存语法则使用依存关系图(依存树)来描述句子的结构,其中每个词语是一个节点,边表示词语之间的依存关系。
- 句法关系的表示方式:在成分语法中,句法关系通常由成分之间的嵌套关系来表示,例如,一个动词短语可能包含一个主语短语和一个宾语短语。在依存语法中,句法关系由词与词之间的直接依存关系来表示,例如,一个动词可能依存于它的主语和宾语。
- 理论假设:成分语法通常假设句子的结构是由一系列成分的组合构成的,这些成分之间存在特定的层级和顺序关系。依存语法则假设句子的结构是由词语之间的依存关系构成的,强调词语之间的直接连接和依存关系。
(5) 通常情况下对中文句子进行句法分析时,需要首先进行分词,并在此基础上对词语进行词性标注,然后进行句法分析。这种流水线方法有什么优点和缺点?如何设计一种方法可以同时进行中文分词、词性标注和句法分析?
- 流水线方法的优点
模块化设计: 流水线方法将任务分解成了多个独立的模块,每个模块专注于自己的任务,便于理解和管理。
精确度: 每个模块都可以针对自己的任务进行优化,从而提高了每个任务的精确度。
可扩展性: 如果有新的算法或者模型出现,只需要替换相应的模块,而不需要改变整体的流水线结构,提高了系统的可扩展性。
- 流水线方法的缺点
错误传递: 如果某个模块出现了错误,错误可能会一直传递到后续的模块,导致整体结果的不准确性。
计算效率低: 每个模块都需要单独运行,而且前一个模块的输出需要等到全部完成后才能输入到下一个模块,导致了计算效率低下。
缺乏上下文信息: 每个模块只能看到局部的信息,无法充分利用句子的上下文信息。
## 4.语义分析
研究语言意义的科学被称为语义学。语义研究需要以语义的形式化结构表示为基础。这种形式化结构表示称之为*语义表示*。自然语言处理中语义分析则是指解释各粒度的语言单位,并将其转换为对应语义表示。
**语义学概述**
从语言表达层面划分,语义学的研究大致可以分为三个层面:(1)*词汇语义学*主要包括词义问题,词汇间关系,词汇场,成语的语义等;(2)*句子词汇学*主要以真值条件语义理论,配价理论,生成理论等为基础研究句义关系以及语序等问题;(3)*话语语义学*主要研究句子以上层次结构的意义,包括话语衔接,话语连贯,语用过程解释等。
1,词汇语义学
出现了包括语义场理论,语义成分分析,并置理论,框架语义理论等众多词汇语义理论。
(1)*语义场理论*认为语言中词汇的意义是相互联系的,构成一个完整的系统和网络,具有某些相同语义特征的一组词聚而成场。
(2)*语义成分分析理论*认为词义可以由最小的语义成分组合而成。这种最小的语义成分又被成为语义特征。
(3)*义元理论*的核心思想是自然语言中包含非常少部分的词语,这些词语可以用于解释大部分词汇的意义。这些语义上不能分解的最小的意义组成单元称为义元。
(4)*框架语义学*则认为词义只能在相应的知识框架背景中才能得到理解。
词汇之间的关系类型可以分为三大类:形体关系,意义关系和实体关系。
2,句子语义学
句子语义理论:真值条件语义学,格语法
句子之间也存在各种语义关系,把句子当做一个整体,句子和句子之间的语义关系可以包含同义、反义、蕴含等。
**语义表示**
语义表示是语义的符号化和形式化的过程,主要研究语义表示的通用原则和方法。
1,*谓词逻辑表示法*
自然语言的语义表示中也经常采用数理逻辑的方法。其中常用的是谓词逻辑和命题逻辑
2,*框架表示法*
框架表示法是以框架语义理论为基础发展起来的一种语义表示方法。
3,*语义网表示法*
语义网络是一种用实体及其语义关系来表达知识和语义的网络图。
**分布式表示**
分布式表示旨在将文本表示为低维空间下稠密的向量,并在低维表示空间中利用表示向量之间的计算关系,体现文本间的语义关联。
在分布式表示提出之前,许多自然语言处理算法采用独热表示,其中每个维度表示某个单词是否在该文中出现。独热表示的维度和词表的大小一致,存在表示稀疏性的问题,而且无法表示单词之间的语义相似性。
Word2vec:
去除了非线性隐藏层,使用自监督的方式从大量无监督文本训练词表示模型。构建了两个非常简单的神经网络模型结构:连续词袋模型和跳字模型,用于学习单词分布式表示。
跳字模型得到基本假设是文本中的词可以预测其上下文窗口内的其他词。词袋模型则假设文本中的词可以通过其在文本中的上下文推导出来。
两个模型基于不同的假设,以基于条件概率的方式训练词表示模型,另外,针对梯度反向传播计算量过大的问题,采用负采样和层次softmax两种近似训练方法。
子词表示模型能够较好地解决自然语言处理系统中未登录词的问题。
- 子词表示模型会维护一个子词词表,其中既存在完整的单词,也存在单词部分信息,称为子词。子词表示模型对词表中的每个子词计算一个定长向量表示,供下游模型使用。
- 字节对编码模型是一种常见的子词表示模型。该模型所采用的词表包含最常见的单词以及高频出现的子词。在使用中,常见词通常本身位于 BPE 词表中,而罕见词通常能被分解为若干个包含在 BPE 词表中的子词,从而大幅度降低未登录词的比例。BPE算法包括两个部分:(1)子词词表的确定;(2)全词切分为子词以及子词合并为全词的方法。
篇章分布式表示-词频-逆文档频率篇章表示方法(TF- IDF):
词频- 逆文档频率(TF- IDF)用来评估在特定文档中词的重要程度,其基本假设是文档中词重要程度随其在文档中出现的频率增加,同时也会随其在整个语料库中出现的频率而下降。TF- IDF方法包括词汇频率(TF)和逆文档频率(IDF)两个部分。
**词义消歧**
词义消歧是指确定一个多义词在给定的上下文种的具体含义。
1,基于目标词上下文的词义消歧方法
2,基于词义释义匹配的词义消歧方法
3,基于词义知识增强预训练的词义消歧方法
**语义角色标注**
**习题**
(1) 词汇语义关系在自然语言处理的下游任务中有哪些应用?试结合 WordNet 举例说明。
例如,在文本相似度计算中,词汇语义关系可以帮助捕捉文本之间的语义相似性;在问答系统中,可以利用词汇语义关系来理解问题并找到相关答案;在文本分类任务中,词汇语义关系可以帮助识别文本的情感色彩或主题。以 WordNet 为例,它是一个英语词汇数据库,提供了单词之间的各种语义关系,如同义词、反义词、上位词、下位词等。比如,对于单词 "car",在 WordNet 中可以找到它的上位词 "vehicle",下位词 "sedan"、"truck" 等,以及它的一些同义词和反义词。
(2) 如何在深度学习模型中融合句子的谓词逻辑表示式?
在深度学习模型中融合句子的谓词逻辑表示式可以通过将逻辑表示式作为模型的输入或输出来实现。一种常见的方法是使用逻辑形式作为输入,然后通过神经网络模型将其转换为分布式表示,这样可以保留逻辑信息并且能够进行端到端的训练。另一种方法是在模型输出的分布式表示上构建逻辑表达式,可以通过解码器网络或其他方法生成逻辑形式,然后用于推理或其他任务中。
(3) 语言的分布式表示和语言模型之间有什么区别和联系?
语言的分布式表示和语言模型之间有密切联系,但也有一些区别。语言的分布式表示是指将语言中的单词或句子表示为连续的向量空间中的点,这些表示保留了单词或句子之间的语义关系。而语言模型则是指对语言序列的概率分布进行建模,即给定一个序列,预测下一个单词或者根据上下文生成一个新的序列。语言模型可以使用分布式表示来表示单词或句子,并通过这些表示进行预测。因此,语言的分布式表示是语言模型的基础之一,但语言模型还包括了更多的内容,比如对序列概率的建模等。
(6) 试分析本章介绍的语义角色标注模型在少样本、资源受限场景下的弊端,并举例说明少样本场景下语义角色标注的方法。
在少样本、资源受限场景下,语义角色标注模型可能面临着数据稀缺和模型泛化能力不足的问题。针对这些问题,可以采用迁移学习、数据增强等方法来缓解数据稀缺的影响,同时也可以设计更加轻量级的模型结构来减少资源的消耗。例如,在少样本场景下,可以使用预训练模型来初始化语义角色标注模型,并通过微调的方式来适应特定的任务。另外,还可以利用半监督学习或者弱监督学习的方法来利用未标注的数据来增强模型的性能。
## 5.篇章分析
**篇章理论概述**
篇章也称语篇,是指由一系列连续的语段或句子组成的整体,是语言运用或交际的基本单位。
篇章分析中最重要三个方面:衔接,连贯和组织。
(1)衔接在语篇中体现为词汇衔接和语法衔接
(2)篇章应该同时具有局部连贯性和整体连贯性。局部连贯性是在微观层面,篇章中前后相连的命题在语义上的联系。整体连贯性是在宏观层面,篇章中的所有命题与篇章主题之间的联系。
(3)篇章同时具有线性结构和等级结构。篇章中的句子按照一定的线性规则排列在一起,因此篇章是线性的。同时,句子的组合可以构成更大的语言单位,因此篇章又是具有等级结构的。
## 6.语言模型
n元语言模型,神经网络语言模型以及预训练语言模型
**语言模型概述**
1,语言模型目标是构建词序列w1w2..wm的概率分布P(w1w2..wm),即计算给定的词序列w1w2..wm作为一个句子出现的可能性大小。
2,由于高阶n元语言模型还是会面临十分严重的数据稀疏问题,并且单词的离散表示也忽略了单词之间的相似性。因此,基于分布式表示和神经网络的语言模型逐渐成为了研究的热点。
3,相较于n元语言模型,神经网络方法可以在一定程度上避免数据稀疏问题,有些模型还可以避免对历史长度的限制,从而更好的建模长距离依赖关系。
**n元语言模型**
1,平滑技术:对所有可能出现的字符串都分配一个非零的概率值,从而避免零概率问题。平滑是指为了产生更合理的概率,对最大似然估计进行调整的一类方法,也称为数据平滑。平滑处理的基本思想是提高低概率,降低高概率,使整体的概率分布趋于均匀。
2,加法平滑
3,古德- 图灵估计法
4,Katz平滑
5,n语法模型整体上来看与训练语料规模和模型的阶数有较大的关系,不同的平滑算法在不同情况下的表现有较大的差距。平滑算法虽然较好的解决了零概率问题,但是基于稀疏表示的n元语言模型仍然有三个较为明显的缺点:
(1)无法建模长度超过n的上下文
(2)依赖人工设计规则的平滑技术
(3)当n增大时,数据的稀疏性随之增大,明显的参数量更是指数级增加,并且模型受到数据稀疏问题的影响,其参数难以被准确的学习。
**神经网络语言模型**
1,前馈神经网络语言模型
给定历史单词序列,神经网络语言模型的目标是根据历史单词对下一时刻词进行预测。
前馈神经网络由三部分组成,分别为输入层,隐藏层和输出层。历史词序列首先经过输入层被转换为离散的的独热编码,随后每个词的独热编码被映射为一个低维稠密的实数向量;隐藏层对词向量的输出进行编码,进行多次线性变换与非线性映射;最后,隐藏层向量经过输出层被映射到词表空间,再利用softmax函数得到其词表上的概率分布。
2,循环神经网络语言模型
在实际场景下,固定长度的历史词并不是总能提供充分得到信息,对于信息较为复杂的长文本,模型需要依赖较长的历史才能做出准确预测。
循环神经网络常用于处理序列结构的数据,其特点是上一时刻的模型隐藏层状态会作为当前时刻模型的输入,每一时刻的隐藏层状态都会维护所有过去词的信息。循环神经网络语言模型不再基于马尔可夫假设,每个时刻的单词都会考虑到过去所有时刻的单词,词之间的依赖通过隐藏层状态来获取。
最基本的循环神经网络,在处理长序列时,训练这样的循环神经网络可能会遇到梯度消失或梯度爆炸问题,导致无法进行有效的训练。一种解决方案是在反向传播的过程中按长度对梯度进行截断,但这一做法会损害模型建模长距离依赖的能力。另一种做法是使用如LSTM等具备门控机制的循环神经网络。
**预训练语言模型**
1,动态词向量算法ELMo
双向预训练语言模型。双向语言模型是从两个方向进行语言模型建模:从左到右前向建模和从右到左后向建模。
输入层,编码层和输出层。
2,生成式预训练语言模型GPT
无监督预训练:GPT采用生成式预训练方法,单向意味着模型只能从左到右或从右到左对文本序列建模,所采用的Transformer结构保证了输入文本每个位置只能依赖过去时刻的信息。
GPT- 2 模型的输入层与前文中介绍的神经网络语言模型的不同之处在于其需要添加位置向量,这是 Transformer 结构自身无法感知位置导致的,因此需要来自输入层的额外位置信息。
3,掩码预训练语言模型BERT
BERT 利用掩码机制构造了基于上下文预测中间词的预训练任务,相较于传统的语言模型建模方法,BERT 能进一步挖掘上下文所带来的丰富语义。
在预训练时,模型的最后有两个输出层MLM和NSP,分别对应了两个不同的预训练任务:掩码语言模型(MLM)和下一句预测(NSP)
BERT输入层采用了WordPiece分词,根据词频,决定是否将一个完整的词切分为多个子词以缓解OOV问题。BERT的输入表示由三部分组成:词嵌入,段嵌入和位置嵌入。
需要主注意的是,与GPT中Transformer结构所采用的约束自注意力仅关注当前单元左侧上下文不同,BERT采用的Transformer结构使用了双向多头自注意机制,不仅关注当前单元左侧上下文情况,也会关注右侧上下文。
预训练任务:去噪自编码(掩码语言建模,下一句预测)
4,序列到序列预训练语言模型BART
BART 兼具上下文语境信息的编码器和自回归特性的解码器,配合上针对自然语言生成制定的预训练任务,使其格外契合生成任务的场景。
相较于标准的trandsformer,BART选择了GeLU而不是ReLU作为激活函数
预训练任务:对含有噪声的输入文本进行去噪重构方法,属于去噪自编码器。BART 使用双向编码对引入噪声的文本进行编码。然后,单向的自回归解码器通过自回归方式顺序重构原始文本。编码器最后一层隐藏层表示参与解码器每一层的计算。BART 的预测过程与 BERT 独立预测掩码位置的词有很大不同。因此,BART 的预训练任务主要关注如何引入噪声。
**人类反馈**
RLHF 算法主要分为如下三个步骤:
(1) 收集初始数据初步训练大模型,从得的指令集合中采样部分数据,对初始的大模型进行有监督微调;
(2) 收集打分数据并训练奖励(Reward)函数,使用无标注的指令数据,收集模型的多个输出结果,评价人员根据模型的输出结果进行对比评价,确定模型输出的结果排序,并利用该评分训练奖励函数,使其未来可以对模型输出的优劣进行判断;
(3) 使用更多的指令数据,利用奖励函数输出的得分,利用强化学习机制根据奖励得分进一步优化大模型。
**习题**
(2)预训练语言模型中常用的子词(Subword)是为了解决什么问题?
预训练语言模型中常用的子词是为了解决词汇的开放性和多样性问题。在自然语言中,存在着大量的未登录词(Out- of- Vocabulary,OOV),这些词在训练数据中未被见过,导致传统基于词的模型无法处理这些未登录词。为了解决这个问题,可以将单词分解成更小的单元,如字符或者子词,从而扩展词汇表,提高模型的覆盖率。
(3)常见的预训练任务有哪些?这些预训练任务的目的是什么?
- 语言建模
该任务的核心在于“预测下一个词元”
- 去噪自编码
在去噪自编码任务中,输入文本经过一系列随机替换或删除操作,形成损坏的文本。模型的目标是根据这些损坏的文本恢复出被替换或删除的词元片段。
- 混合去噪器
通过将语言建模和去噪自编码的目标均视为不同类型的去噪任务,对于预训练任务进行了统一建模。
(4)预训练- 微调范式可能存在哪些问题?
- 过拟合问题:预训练模型在大规模数据上进行训练,可能会导致过拟合问题,特别是在微调阶段数据量较小的情况下。
- 灾难性遗忘问题:在微调阶段,模型可能会忘记预训练阶段学到的知识,导致性能下降。
- 领域差异问题:预训练模型在不同领域的数据上训练,可能会导致领域差异问题,需要额外的调整或微调来适应特定领域的数据。
- 计算资源问题:预训练- 微调范式需要大量的计算资源和时间来进行训练和微调,不适用于资源有限的环境。
## 7.信息抽取
信息抽取的目标就是从非结构化的文本内容中提取特定的信息。信息抽取的三个主要任务:命名实体识别,关系抽取和事件抽取。
**信息抽取概述**
信息抽取目标不是构建通用的句子或者篇章理解方法,而是针对特定的需求,从自然语言构成的非结构化文本中抽取指定类型的实体,关系,事件等信息,进而形成结构化数据。
**命名实体识别**
命名实体是指具有特定意义的实体,主要包括人名,地名,机构名,专有名词等。
命名实体识别目标就是从文本中抽取出这些具有特定意义的实体词。命名实体识别一般包含两个步骤,分别是实体边界判断和实体类别判断。
命名实体从表现形式还可以进一步分为两种类型:嵌套命名实体和非嵌套命名实体
1,非嵌套命名实体识别
非嵌套命名实体识别通常可以转换为序列标注问题。对给定序列中的每一个元素标注一个标签。标注的标签一般同时能表示实体的边界和类别信息。典型的标注格式是BIO标签体系。假设需要识别的命名实体包含人名(PER),地名(LOC)和机构名(ORG),采用BIO标签体系,对于的标签集合为:{O,B-PER,I-PER,B-LOC,I-LOC,B-ORG,I-ORG}
更复杂的BIOES标签体系,在BIO标签的基础上增加了单字符实体S和字符实体的结束标识E。对应的标签集合为{O,B-PER,I-PER,E-PER, S-PER, B-LOC, I-LOC, E-LOC, S-LOC, B-ORG, I-ORG,E-ORG, S-ORG}
2,嵌套命名实体识别
**关系抽取**
关系抽取旨在从无结构文本中识别两个或多个实体之间的语义关系,是信息检索,智能问答,人机对话等应用系统中不可或缺的基础任务,也是知识图谱构建所依赖的关键技术之一。
关系抽取任务的主要难度在于关系类型种类繁多以及对语义建模能力要求高。
从关系抽取任务定义可以看到其目标是识别实体间语义关系,因此依据是否已经在无结构文本中标记了实体类型,关系抽取方法可分为*联合式抽取*和*流水线式抽取*。根据关系类型是否需要提前预先定义,关系抽取算法可以分为*预定义关系抽取*和*开放关系抽取*两类。
有监督关系抽取- 基于图卷积网络的关系抽取:
关系抽取需要根据句子抽取实体之间的关系,句子的句法结构提供了捕捉单词之间的长距离关系的有效信息。图卷积神经网络有效利用句子依存句法树结构的关系抽取算法。通过图卷积操作对输入句子的依存结构进行编码,然后提取以实体为中心的表示,进而进行关系预测。
有监督的关系抽取方法虽然准确率较高,模型结果更为可靠,但是需要人工标注数据集。然而,构造这样的数据集需要耗费大量的人力和时间。由于关系种类相较于实体种类更加复杂多样,并且不断涌现,针对所有关系抽取都需要预先标注大量样本,制约了关系抽取的更广泛的应用。近年来,为了实现自动化关系抽取,研究人员们提出了*远程监督*方法。远程监督方法假设知识库中两个实体存在某种关系,那么所有提及了这两个实体的句子都表达了这种关系。
虽然利用远程监督方法可以迅速构建大量训练样本,但是远程监督方法构建标签的假设过于宽松,非常容易导致大量的错误标注,从而严重影响模型的性能。因此,大量的远程监督方法关注于如何缓解训练集中的噪声信号,从而获得高性能的抽取器。两种经典方法:多示例学习方法和基于注意力的方法。
远程监督关系抽取- 基于注意力的关系抽取
该模型通过使用卷积神经网络抽取句子的语义特征,然后在多实例上构建句子级别的注意力机制,从而动态减少噪声实例的权重并全面的获取实例的信息。给出一组句子{x1,x2,..xn}和两个相对应的实体,模型评估每个关系r的可能性。模型主要包含两大部分:句子编码器和实例选择注意力。
基于注意力的方法在多示例学习的基础上,摒弃了只采用最高置信度的句子作为训练语句的方法,而是综合考虑所有包含同一实体对的句子,对它们与预测关系的相关性给予不同的权重,进而得到更为全面、有用的信息。在充分利用包含每对实体的所有信息句的同时,通过选择注意力机制缓解了远程监督中带来的错误标签的影响。
传统的关系抽取算法,不论是有监督还是远程监督关系抽取方法,目标都是针对预先定义的关系类型在限定语料中判定实体之间是否存在预先定义的关系。因此,传统的关系抽取算法能够处理的关系数量有限,并且在处理不同邻域时需要用户进行关系类别定义,数据标注以及模型训练等一系列工作。在处理海量互联网和社会媒体数据时,传统关系抽泣算法受到上述问题的制约,很难适应快速发展且不断演进的需求。*开放关系抽取*目标是在不需要预先关系定义的情况下,从非结构化文本中提取关系元组,并且不受语料库领域的限制。
**事件抽取**
事件抽取目标是从文本中发现特定类型事件,并抽取该事件所涉及的时间,地点,人物等元素。事件由*事件触发词*以及*事件论元*组成。
根据事件信息是否预先定义,事件抽取可分为限定域事件抽取和开放域事件抽取两种类型。
限定域事件抽取- 基于分类的事件抽取方法:
限定域事件抽取需要预先定义事件类型以及与之对应的事件论元,抽取算法的目标就是从包含事件的文本中识别特定类型的事件并提取相应的事件论元。事件类型是标识事件的类别,事件触发词是指最清楚和明显地表达事件发生的主要词,事件论元是指事件中涉及的参与者,论元角色(也称元素角色)是指事件论元在事件中所扮演的角色。
该方法将事件抽取任务转换为以下四个子任务
(1)触发词识别:从文本中识别触发词,并根据触发词确定事件提及类型
(2)论元识别:针对每个事件提及,从文本中识别事件提及的相关论元,包括实体,时间等。
(3)属性分配:确定每个事件提及的模态,极性,概括性和时态等属性
(4)事件共指:确定从文本发现的事件提及是否为同一事件
开放域事件抽取其目标是在没有任何预定义域假设的情况下,从非结构化文本中挖掘提取有意义的事件信息。
**习题**
(1) 命名实体识别中有哪些解码方式?如何解决嵌套实体问题?
解决嵌套命名实体识别的基本方法可以采用基于非嵌套实体识别算法的穷举法,将所有可能的单词序列都利用非嵌套实体识别算法进行识别和分类;还可以将原有标签修改为组合形式,将可能共同出现的所有类别进行组合,产生新的标签体系(如:将 B-LOC 与 B-ORG 组合构造 BLOC|ORG 新标签)。也可以修改原有序列标注算法从单一目标到多目标,利用 KL 散度等做为损失函数进行参数训练等方法。这些基本方法虽然实现相对简单并且直接,但是存在计算消耗、标签量指数增加或者目标学习难度大等问题。几种实现相对复杂,但是结果较好的算法,包括:基于成分句法分析、基于跨度以及基于生成式框架的嵌套式命名实体识别算法。
(2) 远程监督是关系抽取任务中自动标注训练数据的有效策略,但其过强的设定会产生错误标注,可以从哪些角度考虑来缓解远程监督引入的噪声问题?
多实例学习:将一个句子中的多个实体对应于一个关系,从而减少错误标注的影响。
注意力机制:引入注意力机制,使模型能够更好地关注与关系抽取任务相关的信息,减少噪声的影响。
(3) 试比较流水线式的关系抽取和联合关系抽取的优缺点。
- 流水线式关系抽取:
优点:模型简单,易于实现和调试。
缺点:错误传播问题,前一步的错误会影响后续步骤,导致错误累积。
- 联合关系抽取:
优点:可以同时考虑实体识别和关系抽取任务,减少错误传播。
缺点:模型复杂度较高,训练和推理的效率较低。
(4) 限定域事件抽取的基本事件结构?
事件类型是标识事件的类别,事件触发词是指最清楚和明显地表达事件发生的主要词,事件论元是指事件中涉及的参与者,论元角色(也称元素角色)是指事件论元在事件中所扮演的角色。
(5) 信息抽取目前还面临哪些挑战?如何解决开放域下的关系抽取问题?
- 开放域问题:在不同的领域和语境中进行关系抽取,需要模型具备跨领域、跨语境的泛化能力。
- 未标记实体问题:有些实体在知识库中未标记,需要模型能够识别出这些实体并进行关系抽取。
- 长距离依赖问题:有些关系需要跨越较长的文本距离才能确定,需要模型能够捕捉长距离的语义关系。
## 8.机器翻译
**机器翻译概述**
机器翻译的任务定义相对简单,目标就是通过计算机将源语言翻译成目标语言。
机器翻译的研究与发展大体上经历了三次主要的浪潮:*基于规则的机器翻译*,*基于统计的机器翻译*以及*基于神经网络的机器翻译*
现代神经机器翻译模型大多依据序列到序列的方式对任务进行建模。给定源语言输入文本,训练目标是找到最合适的目标语言句子作为译文。这一过程大体上可以划分为编码和
解码两个模块步骤。编码器旨在将源语言句子转化为对应的语义向量,而解码器通过这些向量预测出合适的目标语言句子。
机器翻译面临的挑战:
(1)自然语言复杂度高
(2)翻译结果不可解释
(3)翻译结果评测困难
**基于神经网络的机器翻译方法**
传统机器翻译方法高度依赖于繁杂的特征工程,合理特征的设计对系统构建者的语言学背景具有较高的要求,同时需要在不断地试错过程中修正。这些特征往往不能完整地反映输入文本的语义。举例来说,语言模型作为传统机器翻译模型的重要组成部分,为了降低模型复杂度而引入的马尔可夫假设使得上下文窗口之外的语义依赖无法被建模;从输入文本表示的角度来说,经典的词袋模型则忽略了词序对输入文本的最优表征。与之相对,神经网络模型作为一个强大的特征抽取器,能够自动地学习输入文本的最优表征,从而在很大程度上减少对领域知识的要求及繁琐的特征工程预处理步骤。
现代神经机器翻译模型大多依赖序列到序列的方式对任务进行建模。这一过程大体上可以划分为编码和解码两个模块步骤。编码器旨在将源语言句子转化为对应的语义向量,而解码器通过这些向量预测出合适的目标语言句子。
1,循环神经网络翻译模型
由于 RNN 的循环过程在每个时间步都要求一个输入单词,为了启动解码过程,一般会使用一个保留的特殊符号“[Start]”作为翻译开始的标记送入到 RNN 解码器当中并解码出目标语言序列的第一个单词 z1。接下来,z1 会作为下一个时刻的输入被送入到循环神经网络当中并按照不断迭代产生后续的预测。由于目标语言序列的长度无法被提前预知,因此使用另一个保留符号“[Stop]”作为预测结束的标志。当某一个时刻 t 预测出的目标语言单词为 zt =“[Stop]”时,解码过程动态地停止。
注意力机制:在维护 RNN 任意时刻隐藏状态并生成译文的过程中,能够自适应地考虑源语言中的哪部分信息需要被聚焦,从而生成更加高质量的译文。
2,卷积神经网络翻译模型
位置编码,卷积层与门控线性单元,残差连接
基于循环或卷积神经网络的序列到序列建模方法是现存机器翻译任务中的经典方法。然而,它们在建模文本长程依赖方面都存在一定的局限性。对于卷积神经网络来说,受限的上下文窗口在建模长文本方面天然地存在不足。而对于循环神经网络来说,上下文的语义依赖是通过维护循环单元中的隐藏状态实现的。在编码过程中,每一个时间步的输入建模都涉及到对隐藏状态的修改。随着序列长度的增加,编码在隐藏状态中的序列早期的上下文信息被逐渐遗忘。尽管注意力机制的引入在一定程度上缓解了这个问题,但循环网络在编码效率方面仍存在很大的不足之处。由于编码端和解码端的每一个时间步的隐藏状态都依赖于前一时间步的计算结果,这就造成了在训练和推断阶段的低效。
3,自注意力神经网络翻译模型
自注意力子层,前馈子层,残差连接,层标准化
**习题**
(4)在基于神经网络的机器翻译方法中,Transformer 模型相较于其他模型具有怎样的优势?它仍然存在什么样的问题?
- 优势:
自注意力机制:能够捕捉长距离依赖关系,提高翻译准确性。
多头注意力机制:提高了模型对不同位置的关注度,增强了泛化能力。
残差连接和层归一化:有助于解决梯度消失和梯度爆炸问题,加速训练收敛。
- 问题:
计算资源消耗较大:Transformer 模型中的注意力机制需要大量计算资源,对硬件要求较高。
长文本处理:对于极长的文本,仍然存在信息衰减和性能下降的问题
(5)你认为机器翻译任务现在还存在哪些挑战?
- 语义理解:机器翻译需要准确理解源语言句子的语义信息,这对模型的深层语义表示提出了挑战。
- 多样性和变化:不同的语言之间存在多样性和变化,例如词序、语法结构等,需要模型具备较强的泛化能力。
- 上下文依赖:翻译结果可能依赖于上下文信息,如前文、后文等,对模型的上下文理解提出了要求。
- 低资源语言:对于低资源语言,缺乏大规模的训练数据,如何利用有限的数据训练高质量的翻译模型是一个挑战。
## 9.情感分析
情感分析又称观点挖掘,目标旨在从文本中分析得到人们关于主题或实体的评价,观点或态度,还包括分析文本所表达的情绪信息。
**情感分析概述**
1,情感模型:观点模型和情绪模型
2,情感分析主要任务:情感分析包含非常多各种类型任务,从任务的类型层面可以划分为*情感分类*和*情感信息抽取*两大类。从语言单元层面又可以划分为篇章级情感分析,句子级情感分析和属性级情感分析。
情感信息抽取,也称评价要素抽取,目标是抽取文本中的表达情感的核心要素,如评价词,评价对象,观点持有者,评价搭配等。
**习题**
(4) 如何进行跨语言情感分析?
- 翻译和对齐:将不同语言的文本翻译为同一语言,并进行文本对齐,以便在同一语言上进行情感分析。
- 多语言模型:训练能够处理多语言的情感分析模型,使其具备对多种语言的情感识别能力。
- 迁移学习:利用在一个语言上训练好的模型进行迁移学习,以提高在其他语言上的情感分类效果。
(5) 跨领域情感倾向分析的主要难点有哪些?
- 领域适应:不同领域的文本具有不同的特点和术语,需要模型能够适应不同领域的语言风格和表达习惯。
- 数据稀缺:在新的领域中,可能缺乏大量标注数据,如何利用有限的数据训练高效的情感分析模型是一个挑战。
- 标签偏置:不同领域或不同文本来源可能存在标签偏置问题,即标签分布不平衡,导致模型训练偏向于某些类别而忽略其他类别。
## 10.智能问答
智能问答旨在自动回答用户以自然语言方式提出的各类问题。
**智能问答概述**
BASEBALL系统 LUNAR系统
问题分类:事实类,是非类,定义类,列表类,比较类,意见类以及指导类。
根据上述不同类型问题的特点,再结合知识库的来源,可以将智能问答分为五大类:阅读理解,表格问答,社区问答,知识图谱问答和开放领域问答。
**习题**
(1)阅读理解模型有哪些信息提取方式?你认为基于深度学习的阅读理解模型包含哪些缺陷?
- 基于规则的提取:例如关键词匹配、句法分析等。
- 基于机器学习的提取:例如基于特征的方法,从文本中提取特征进行答案预测。
- 基于深度学习的提取:例如使用循环神经网络(RNN)、注意力机制等进行答案提取。
基于深度学习的阅读理解模型的缺陷可能包括:
- 对大量数据的依赖,需要大量的标注数据进行训练。
- 对计算资源的需求较高,特别是在处理较长文本时。
- 可解释性相对较差,难以理解模型的决策过程。
- 对于复杂语境和逻辑推理的理解能力有限。
(5)你认为端到端架构的开放问答模型相比传统的基于检索的开放问答模型有哪些可能的优势,为什么当前端到端架构的模型效果不如基于检索的模型。
优势:
- 简化流程:端到端架构不需要额外的检索过程,减少了系统的复杂性。
- 全局优化:能够直接从输入到输出进行端到端的优化,更好地利用了文本之间的关联信息。
劣势:
- 数据依赖性:端到端架构对大量数据的需求较大,需要更多的训练数据来保证模型的效果。
- 复杂度:端到端架构通常需要更复杂的模型结构和更多的计算资源来处理。
当前端到端架构的模型效果不如基于检索的模型可能是因为:
- 数据量和质量:端到端架构需要大量的标注数据来训练,并且对数据质量要求较高,而这种数据往往比较难获取。
- 模型设计:当前端到端架构的模型设计可能还不够成熟,需要进一步改进模型结构和训练策略。
(6)你认为 ChatGPT 模型可以看作是一种开放问答模型吗?它与传统的开放问答模型相比有哪些优点及其原因?
相比传统的开放问答模型,ChatGPT 的优点在于:
- 上下文理解更加全面:ChatGPT 能够利用更广泛的上下文信息来生成回答,而传统模型往往只能利用局部信息。
- 多样性更丰富:ChatGPT 能够生成多样性的回答,从而提供更多选择。
然而,ChatGPT 也存在一些缺点,比如:
- 可解释性较差:由于模型结构的复杂性,ChatGPT 的决策过程不易解释。
- 对话流程控制不足:ChatGPT 在长对话中可能会出现话题漂移或不连贯的问题。
## 11.文本摘要
**抽取式文本摘要**
抽取式文本摘要的关键内容是从原始文本中提取的,同时所提取的内容通常不会以任何方式进行修改。常见的抽取式文本摘要方法可以分为两大类:基于排序的方法和基于序列标注的方法。
1,基于排序的抽取式文本摘要的基本思想是对于一篇文档,首先按照一定的规则将其拆分为多个语义单元,并通过某种重要性评估方法为每个语义单元进行评分。
受到 PageRank 算法的启发,在进行文本摘要任务时,TextRank 算法将文档中的句子作为节点,以句子间的相似度作为边,通过迭代更新节点的重要性分数。
2,基于序列标注的方法:选取句子作为基本语义单元,并使用二元标签来表明句子被抽取的状态。标签1表示该句子可以需要被抽取出来作为摘要句,而0表示该句子不需要作为摘要句。通过这种思路,可以将抽取式文本摘要转化为序列标注任务。
**生成式文本摘要**
生成式文本摘要则可以产生原始文档中不存在的新文本。通常生成式文本摘要算法需要首先构建原始文档的抽取语义表示(编码过程),然后使用此语义表示创建出接近人类表示方式的摘要(解码过程)。
**习题**
(1)抽取式摘要方法和生成式摘要方法的区别是什么?分别适用于哪些场景?
- 抽取式摘要方法:直接从原始文本中选取最具代表性或关键性的句子或短语作为摘要,不涉及新的内容生成。常用的技术包括关键句子提取、TextRank 算法等。适用于需要保留原文重要信息的场景,如新闻摘要、信息检索等。
- 生成式摘要方法:通过对原始文本进行理解和生成,生成新的摘要内容,通常使用基于深度学习的序列到序列模型,如基于注意力机制的模型。适用于需要对原文进行归纳和概括,生成更加简洁和精炼的摘要的场景,如文档总结、自动文摘等。
(2)对于文档中的未登录词,如何将其输出到摘要中?
- 使用特殊标记:将未登录词用特殊标记标注出来,例如用 <UNK> 或 [UNK] 表示未登录词,这样在生成摘要时可以保留这些标记,指示其重要性。
- 基于上下文的生成:在生成摘要时,考虑上下文信息,根据上下文中已有的词语来生成与之相关的词语,从而避免生成未登录词。
(3)你能否设计一种强化学习训练策略,在不截断摘要的前提下,使得模型生成的摘要长度不超过某个定值?
- 设置长度惩罚:在强化学习的奖励函数中引入长度惩罚项,鼓励模型生成长度不超过阈值的摘要,例如使用长度惩罚系数乘以摘要长度与阈值之间的差值。
- 调整生成策略:设计合适的策略网络,根据当前生成的摘要长度和已生成的内容来决定下一步的生成动作,以保证生成的摘要不超过设定的长度。
## 12.知识图谱
**知识图谱概述**
知识图谱是指采用图结构表示实体(包括物体,事件或抽象概念)及其之间关系的知识库。知识图谱按照其所描述的主要内容可以分为四类:事实知识图谱,概念知识图谱,语言知识图谱和常识知识图谱
**知识图谱表示与存储**
传统的知识图谱表示方法一般以符号式为主,包括属性图,RDF,OWL本体语言等。符号表示方法的特点是可解释性强,但是依赖知识描述的准确性。近年来,随着深度神经网络研究的兴起,基于向量式的表示方法逐渐引起人们重视。向量式的方法容易捕获隐式知识,计算效率高,但是可解释性差。此外,向量式表示本质上属于统计模型,对没见过的实体表示质量较差,而自然界的实体一般呈长尾分布,这也在一定程度上限制了向量式表示方法的应用。
1,符号表示
在简单的应用场景下,无向图即可满足需求。若要进一步增强知识图谱的表达能力,给实体和边添加属性,则可以选择有向标记图。常用的有向图模型有两种:属性图和 RDF 图模型。
2,向量表示
*知识表示学习*,即如何构建高质量的向量表示。知识表示学习通过将三元组中的语义信息投影到稠密的低维向量空间,构造实体和关系的分布式表示向量。
这种知识表示方法相对符号式表示有如下几个优点:
(1) 知识表达能力强,分布式向量可以更好地建模对象之间的关系,语义相似的对象往往其表示向量也更接近,可以缓解长尾分布的知识表达问题;
(2) 计算效率更高,对于计算机来说,已经提前计算好的蕴含语义知识的低维数值向量显然比复杂的知识图谱更高效;
(3) 适用于深度学习算法,通过将知识映射到语义空间中,使得不同来源的知识可以很方便地互相融合。
TransE模型将关系看做是表示空间中的平移。TransE算法的优化过程:首先,将所有实体和关系的嵌入向量随即初始化。在每次迭代开始之前,会对实体的向量进行归一化操作。之后,在每次批量训练时,从训练集中随机采样一些三元组。对于每个三元组,会构造一个负例三元组,用于计算合页损失。根据损失函数产生的梯度,对实体和关系的表示向量进行更新。迭代上述过程,直至算法在验证集上的效果收敛。
3,基于表的知识谱图谱存储
尽管知识图谱是用图的形式描述,但图数据库并不是存储知识图谱的唯一方案。在工业界,很多成熟的数据库都是基于关系模型,知识图谱的数据可以通过一定的设计,从而可以利用关系型数据库存储。基于关系型数据库的知识图谱存储方案主要可以分为四种:基于三元组的知识图谱存储、基于属性表的知识图谱存储、基于垂直表的知识图谱存储以及基于全索引的知识图谱存储。
4, 基于图的知识谱图谱存储
在图数据库技术还不成熟的初期,关系型数据库因其成熟的技术架构,成为知识图谱存储的首选方案。但是关系型数据库却并不善于处理“关系”,在关系型数据库上进行图数据上的多跳查询,会产生大量的连接操作,其计算复杂度随着查询的跳数增多呈指数级增长。
图数据库则充分利用图的结构对数据进行建模,将一张图对应到一个邻接列表,再基于这个邻接列表建立索引,优化关联查询。
**知识图谱获取与构建**
知识图谱的数据来源是多种多样的,包括结构化数据、半结构化数据以及非结构化数据等。
*属性补全*的目的就是自动地从文本中提取出实体所具备的属性。
*实体链接*目标是将文本中的实体指代和它们在知识图谱中的对应实体进行对应。
*实体对齐*也被称为实体匹配,旨在发现多源知识图谱中等价的实体对。
**知识图谱推理**
基于知识图谱的知识推理,旨在从图谱中已存在的关联关系或事实推理出未知的关系或事实。推理得到的知识又可以反过来丰富知识图谱。从推理方法的角度,知识图谱推理方法可以分为两类,一种是演绎推理,主要是基于符号逻辑的知识图谱推理,依赖于专家显示制定的知识描述和逻辑推导方法;另一种是归纳推理,代表方法为基于表示学习的知识图谱推理,更多地依赖于大规模数据和统计学习算法。
**知识图谱问答**
知识图谱问答旨在以知识库为知识源来回答自然语言问题。
知识图谱问答方法大概可以分为两类:
(1)基于*语义解析*的方法,即将自然语言组织的问句转化为知识库可以识别的结构化查询语句,然后在知识库中查询得到答案。而这个问句到结构化查询的映射,可以通过规则定义的模板或者训练过的自然语言解析器来完成。
(2)基于*信息检索*的方法,通过对问句中的实体和关系识别锁定问题的主题实体,然后根据主题实体得到知识图谱中的候选实体,最后对候选进行排序得到最终答案。
**习题**
(1) 基于属性图的知识图谱表示有什么缺点?
- 存储效率低下:属性图需要存储大量的节点和边的属性信息,导致存储空间占用较大。
- 查询效率不高:属性图查询需要遍历大量的节点和边,查询效率较低,特别是在图规模较大时。
- 无法处理复杂的语义关系:属性图主要表示实体之间的关系,难以表达复杂的语义关系和推理。
(2) TransR 算法相比 TransE 算法做了什么改进,可以解决什么问题?
改进:TransR 在 TransE 的基础上,引入了关系特定的映射矩阵,将实体和关系投影到不同的空间中,从而解决了 TransE 在处理多对多关系时混淆的问题。
问题解决:TransR 能够更好地处理多对多关系,提高了知识图谱表示的表达能力和推理性能。
(3) 使用关系型数据库作为知识图谱的存储介质,想要兼顾存储空间的利用率和查询效率,应当使用哪种存储方案?
- 图存储方案:将知识图谱存储为图结构,使用图数据库进行存储和查询。图数据库能够高效地处理图查询,但可能存在存储空间浪费的问题。
- 表存储方案:将知识图谱存储为关系型数据库中的表结构,通过表间的关联来表示实体和关系之间的联系。这种方案能够较好地兼顾存储空间的利用率和查询效率
(4) 实体对齐技术主要解决哪些问题?存在哪些技术难点?
- 问题:实体对齐技术主要解决异构知识图谱中不同数据源中相同实体的识别和匹配问题,以实现跨知识图谱的数据融合和查询。
技术难点:
- 语义不一致性:不同知识图谱中同一实体的命名和描述可能不一致。
- 数据异构性:不同知识图谱的数据结构和表示方式可能不同,导致难以进行匹配。
- 规模问题:知识图谱规模庞大,实体对齐的搜索空间巨大,需要高效的匹配算法和策略。
(5) 基于表示学习的知识图谱推理相比于基于符号的知识图谱推理,有何优势?
- 基于表示学习的优势:
能够从大规模的知识图谱中学习到高效的表示,捕捉实体和关系之间的语义信息。
通用性强,能够应用于各种类型的知识图谱,并能够处理复杂的关系和推理任务。
- 基于符号的优势:
更具可解释性:基于符号的推理方法能够提供更直观和可解释的推理过程。
更适合复杂的逻辑推理:基于符号的推理方法能够利用逻辑规则进行推理,对于逻辑推理任务更为适用。
## 题型预测
**填空**
1,常见激活函数:sigmoid,tanh,relu
2,常见损失函数:绝对值损失函数,平方损失函数,交叉熵损失函数
3,常见梯度下降算法:梯度下降,随机梯度下降,小批量梯度下降
4,DNN训练参数的方法:梯度下降BP
5,可能导致梯度消失的损失函数:sigmoid,tanh
6,CNN的结构:卷积层,池化层,全连接层交叉堆叠
7,CNN结构特性:局部连接,参数共享,空间或时间次采样
8,常见的采样方法:max pooling,mean pooling
9,RNN的参数训练方法:BPTT
10,RNN有哪些改进和变形:LSTM,GRU
11,LSTM用来解决RNN的长距离依赖问题
12,GRU将LSTM的输入门输出门简化为更新门
1,概率语言模型的参数学习方法:最大似然估计
2,常见的离散词表示:one-hot,词袋
**简答题**
1,激活函数有什么用,应该具备哪些性质?
激活函数的作用是增强网络表达能力,加入非线性因素。
性质:连续可导,激活函数和导函数简单,导函数值域范围合理
2,什么是反向传播算法?
将前馈输出的误差以某种形式反传给各层的所有单元,各层按照本层误差修改各单元连接权值。
3,什么是梯度下降算法?
误差反向传播时,沿着梯度的负方向调整参数,使得最快达到误差最小的一种方法。
4,什么是梯度消失问题?如何解决?
梯度消失:在误差反向传播时,每一层都要乘以激活函数的导数,若 该导数值小于1,将导致误差愈来愈小,甚至消失。(如果导数很大将导致梯度爆炸)
解决方法:选择合适的激活函数(RELU),用复杂的门结构代替激活函数,残差结构
5,CNN各层的作用是什么
(1)卷积层:通过卷积操作减少参数
(2)池化层:通过采样减少网络规模
(3)全连接层:将池化层的单元平化
6,相较于BP,BPTT有什么特点?
BPTT损失函数定义为每一个时刻的损失之和,它会在每一个时间步长内叠加所有对应的权重梯度
1,什么是语言模型?语言模型的思想
用数学的方法描述语言规律
用句子S=w1,w2,…,wn 的概率 p(S) 刻画句子的合理性
2,概率语言模型存在的问题?
由于参数数量过多问题需要进行词i的历史简化n-gram,由于数据匮乏引起0概率问题需要进行数据平滑
3,什么是神经网络语言模型?
用神经网络来学习语言模型的参数
4,RNN为什么能解决神经网络语言模型“需历史简化”的问题?
随着模型逐个读入语料中的词,RNN隐藏层实际上包含了此前所有的上文信息,因此不需要简化为n-gram
5,什么是词向量
一些词表示方法(one-hot)导致模型耗空间大,且稀疏,需要构造低维稠密的词向量作为词的分布式表示
6,词向量的特征
语义相似的词,其词向量在空间距离更相近
相似关系对的词向量之差也相似
7,CBOW与skip-gram的区别?
CBOW用上下文预测中心词
skip-gram用中心词预测上下文
1,什么是注意力机制?
注意力机制是一个加权求和模块,对于输入Q,K(K是一个集合),需要回答的问题是:对于Q而言,每一个Ki有多重要,重要性由V描述。
2,注意力机制有哪些优势?
(1)让任务处理系统找到与当前任务相关显著的输入信息,并按照重要性进行处理。
(2)不需要监督信号,可推导多种不同模态数据之间的难以解释、隐蔽性强、复杂映射关系,对于先验知识少的问题极为有效。
(3)可以解决长距离依赖问题,提升任务性能
3,Transformer有哪些特点?
(1)全部采用Attention机制
(2)训练时解码端和编码端都能并行
(3)预测时编码端并行,解码端串行
(4)具有捕捉长距离依赖的能力
与 BERT 等早期的预训练语言模型相比,大语言模型的特点是使用了更长的向量维度、更深的层数,进而包含了更大规模的模型参数,并主要使用解码器架构
4,Transformer的结构?
(1)输入编码
输入的词元序列 (𝒖 = [𝑢1, 𝑢2, . . . , 𝑢𝑇]) 首先经过一个输入嵌入模块(Input Embedding Module)转化成词向量序列。具体来说,为了捕获词汇本身的语义信息,每个词元在输入嵌入模块中被映射成为一个可学习的、具有固定维度的词向量 𝒗𝑡 ∈ R𝐻。由于 Transformer 的编码器结构本身无法识别序列中元素的顺序,位置编码(Position Embedding, PE)被引入来表示序列中的位置信息。给定一个词元 𝑢𝑡,位置编码根据其在输入中的绝对位置分配一个固定长度的嵌入向量 𝒑𝑡 ∈ R𝐻。然后,每个词元对应的词向量和位置向量将直接相加,生成了最终的输入嵌入序列 𝑿 = [𝒙1, . . . , 𝒙𝑇],并且被传入到后续层中
(2)多头自注意力机制
多头自注意力机制通常由多个自注意力模块组成。在每个自注意力模块中,对于输入的词元序列,将其映射为相应的查询(Query, 𝑸)、键(Key, 𝑲)和值(Value,𝑽)三个矩阵。然后,对于每个查询,将和所有没有被掩盖的键之间计算点积。这些点积值进一步除以 √𝐷 进行缩放(𝐷 是键对应的向量维度),被传入到 softmax函数中用于权重的计算。进一步,这些权重将作用于与键相关联的值,通过加权和的形式计算得到最终的输出。
(3)前馈网络层
为了学习复杂的函数关系和特征,Transformer 模型引入了一个前馈网络层(Feed Forward Netwok, FFN),对于每个位置的隐藏状态进行非线性变换和特征提取。
(4)编码器
在 Transformer 模型中,编码器的作用是将每个输入词元都编码成一个上下文语义相关的表示向量。编码器结构由多个相同的层堆叠而成,其中每一层都包含多头自注意力模块和前馈网络模块。在注意力和前馈网络后,模型使用层归一化和残差连接来加强模型的训练稳定度。其中,残差连接将输入与该层的输出相加,实现了信息在不同层的跳跃传递,从而缓解梯度爆炸和消失的问题。而 LayerNorm 则对数据进行重新放缩,提升模型的训练稳定性。编码器接受经过位置编码层的词嵌入序列 𝑿 作为输入,通过多个堆叠的编码器层来建模上下文信息,进而对于整个输入序列进行编码表示。由于输入数据是完全可见的,编码器中的自注意力模块通常采用双向注意力,每个位置的词元表示能够有效融合上下文的语义关系。
(5)解码器
与编码器不同,解码器需要引入掩码自注意力模块,用来在计算注意力分数的时候掩盖当前位置之后的词,以保证生成目标序列时不依赖于未来
的信息。除了建模目标序列的内部关系,解码器还引入了与编码器相关联的多头注意力层,从而关注编码器输出的上下文信息。同编码器类似,在每个模块之后,Transformer 解码器 也采用了层归一化和残差连接。在经过解码器之后,模型会通过一个全连接层将输出映射到大小为𝑉 的目标词汇表的概率分布,并基于某种解码策略生成对应的词元。
1,什么是预训练语言模型?
预训练语言模型是采用迁移学习的方法,通过自监督学习从大规模的数据中获得与具体任务无关的预训练模型,然后用训练好的预训练模型提高下游任务性能的一种数据增强方法。
2,RNN的问题
(1)问题1. 长程依赖问题
RNN 存在长程依赖问题,不适用于长文本。而 Transformer 网络几乎只使用注意力模块。注意力有助于在序列的任何部分之间建立联系,因此不存在长程依赖问题。 对于 Transformer 而言,长程依赖与短程依赖的处理方式是一样的。
(2)问题2. 梯度消失和梯度爆炸
RNN 饱受梯度消失和梯度爆炸之苦。而 Transformer 几乎没有梯度消失或梯度爆炸问题。在 Transformer 网络中,整个序列是同时训练的,因此很少有梯度消失或梯度爆炸问题。
(3)问题3. 训练性能低
RNN 需要更多的训练步骤才能达到局部/全局最优。 我们可以将 RNN 视为非常深的展开网络,网络的大小取决于序列的长度。这将产生许多参数,并且这些参数中的大部分是相互关联的。 这就导致优化需要更长的训练时间和更多的步骤。而 Transformer 需要的训练步骤比 RNN 要少。
(4)问题4. 无法并行
RNN 无法并行计算。因为 RNN 是序列模型,即网络中的所有计算都是顺序发生的,每一步操作都依赖前一步的输出,因此很难并行化。而 Transformer 网络允许并行计算,可以充分发挥 GPU 并行计算优势。
1,Transformer 解码器按如下步骤工作(以原作论文中机器翻译任务为例):
(1)在机器翻译任务中,解码器接受中文句子(用于中文到英文的翻译)。与编码器一样,首先需要添加一个词嵌入和一个位置嵌入并将其提供给多头注意力块。
(2)自注意力模块将为英文句子中的每个单词生成一个注意力向量,用于表示句子中一个单词与另一个单词的相关程度。
(3)然后将英文句子中的注意力向量与中文句子中的注意力向量进行比较。这是中文到英文单词映射发生的部分。
(4)在最后几层中,解码器预测将中文单词翻译成最可能的英文单词。
(5)整个过程重复多次以获得整个文本数据的翻译。
2,Transformer中的注意力机制
(1)交叉注意力层
在 Transformer 中,交叉注意力层位于字面上的中心位置;它连接了编码器和解码器,是在模型中使用注意力最直接的方式。
要实现这一点,需要将目标序列作为查询,将上下文序列作为键/值传递。
Q = 解码器中因果注意力层的输出向量
K = 编码器输出的注意力向量
V = 编码器输出的注意力向量
(2)全局自注意力层
全局自注意力是Transformer编码器的一部分,它的作用是负责处理整个输入序列。
它允许每个序列元素直接访问其他所有序列元素,只需将整个序列作为Q,K,V即可,所有输出可以并行计算。
Q = 输入序列中的当前位置词向量
K = 输入序列中的所有位置词向量
V = 输入序列中的所有位置词向量
(3)因果注意力层
因果注意力层对解码器中输出序列执行类似于全局自注意力层的工作;但与编码器的全局自注意力层有不同的处理方式。
Transformer是一个“自回归”模型,它逐个标记地生成文本,并将输出反馈到输入中;为了使这个过程高效,这些模型确保每个序列元素的输出只依赖于前面的序列元素;这些模型是“因果”的。
要构建一个因果自注意力层,在计算注意力分数和求和注意力值时需要使用适当的掩码,因为输出序列也是一次性输入的,但在计算前面分词的时候是不希望它后面的分词也参与计算的。
Q = 输出序列中的当前位置词向量
K = 输出序列中的所有位置词向量
V = 输出序列中的所有位置词向量