自然语言处理的核心任务即是让计算机“理解”自然语言所蕴含的意义,即语义(Semantic)。前文介绍的文本向量表示,可以被认为隐性地蕴含了很多语义信息。而一般意义上的语义分析指的是通过离散的符号及结构显性地表示语义。根据待表示语言单元粒度以及语义表示方法的不同,语义分析又可以被分为多种形式。

从词语的粒度考虑,一个词语可能具有多种语义(词义),例如“打”,含义即可能是“攻击”(如“打人”),还可能是“玩”(如“打篮球”),甚至“编织”(如“打毛衣”)等。根据词语出现的不同上下文,确定其具体含义的自然语言处理任务被称为词义消歧(Word Sense Disambiguation,WSD)。对于每个词可能具有的词义,往往是通过语义词典确定的,如WordNet等。除了以上一词多义情况,还有多词一义的情况,如“马铃薯”和“土豆”具有相同的词义。由于语言的语义组合性和进化性,无法像词语一样使用词典定义句子、段落或篇章的语义,因此很难用统一的形式对句子等语言单元的语义进行表示。众多的语言学流派提出了各自不同的语义表示形式,如语义角色标注(Semantic Role Labeling,SRL)、语义依存分析(Semantic Dependency Parsing,SDP)等。

其中,语义角色标注也称谓词论元结构(Predicate-Argument Structure),即首先识别句子中可能的谓词(一般为动词),然后为每个谓词确定所携带的语义角色(也称作论元),如表示动作发出者的施事(Agent),表示动作承受者的受事(Patient)等。除了核心语义角色,还有一类辅助描述动作的语言成分,被称为附加语义角色,如动作发生的时间、地点和方式等。下图展示了一个语义角色标注的示例,其中有两个谓词——“喜欢”和“下”,并针对每个谓词产生相应的论元输出结果。语义依存分析则利用通用图表示更丰富的语义信息。根据图中节点类型的不同,又可分为两种表示——语义依存图(Semantic Dependency Graph)表示和概念语义图(Conceptual Graph)表示。其中,语义依存图中的节点是句子中实际存在的词语,在词与词之间创建语义关系边。而概念语义图首先将句子转化为虚拟的概念节点,然后在概念节点之间创建语义关系边。下图展示了一个语义依存图分析结果示例。

以上的语义表示方式属于通用语义表示方式,也就是针对各种语言现象,设计统一的语义表示。除此之外,还有另一类语义分析用于专门处理具体的任务,如将自然语言表示的数据库查询转换成结构化查询语言(SQL)。例如,对于如下图所示的学生信息表,系统需要将用户的自然语言查询:年龄大于18岁的学生姓名,转化为SQL语句:select name where age >18

参考文献:
[1] 车万翔, 崔一鸣, 郭江. 自然语言处理:基于预训练模型的方法[M]. 电子工业出版社, 2021.
[2] 邵浩, 刘一烽. 预训练语言模型[M]. 电子工业出版社, 2021.
[3] 何晗. 自然语言处理入门[M]. 人民邮电出版社, 2019
[4] Sudharsan Ravichandiran. BERT基础教程:Transformer大模型实战[M]. 人民邮电出版社, 2023
[5] 吴茂贵, 王红星. 深入浅出Embedding:原理解析与应用实战[M]. 机械工业出版社, 2021.