赵走x博客
网站访问量:151475
首页
书籍
软件
工具
古诗词
搜索
登录
16、算法部分源码解析
15、系统总体流程与词典结构
14、中文分词
13、词汇与分词技术
12、三个平面中的语义研究
11、汉语的发展
10、字形的流变
9、六书及其他
8、文字符号的起源
7、整合语义角色标注模块
6、整合句法解析模块
5、整合命名实体识别模块
4、整合词性标注模块
3、整合中文分词模块
2、现代自然语言系统简介
1、中文语言的机器处理:历史回顾
7、整合语义角色标注模块
资源编号:76118
NLP汉语自然语言处理原理与实践
自然语言处理
热度:90
语义角色标注(Semantic Role Labeling, SRL)来源于20世纪60年代美国语言学家菲尔墨(C.J.Fillmoere)提出的格语法理论。在菲尔墨看来,格关系是句子深层结构中的名词和谓语动词之间的一种固定不变的语义结构关系(谓词—论元关系),而这种关系和具体语言中的表层结构上的语法结构没有一一对应关系。换句话说,有同样谓词—论元结构支配的,但语法结构不同的句子,其语义应该是相同的。
语义角色标注(Semantic Role Labeling, SRL)来源于20世纪60年代美国语言学家菲尔墨(C.J.Fillmoere)提出的格语法理论。在菲尔墨看来,格关系是句子深层结构中的名词和谓语动词之间的一种固定不变的语义结构关系(谓词—论元关系),而这种关系和具体语言中的表层结构上的语法结构没有一一对应关系。换句话说,有同样谓词—论元结构支配的,但语法结构不同的句子,其语义应该是相同的。 该理论是在句子语义理解上的一个重要突破。基于此理论,语义角色标注就发展起来了,并成为句子语义分析的一种重要方式。它采用“谓词—论元角色”的结构形式,标注句法成分相对于给定谓语动词的语义角色,每个语义角色被赋予一定的语义。 美国宾州大学已经开发出一个具有实用价值的表示语义命题库,称为PropBank。在本书的后续章节将会对该主题库做一个全面和深入的分析。 语义角色标注系统已经处于NLP系统的末端,其精度和效率都受到前面几个模块的影响,所以,当前系统的精度都不高,在中文领域还没有投入商业应用的成功案例,本节介绍的是Ltp 3.3中文语义角色标注系统。 ``` # -*- coding: utf-8 -*- import sys import os from pyltp import * MODELDIR = "E:/nltk_data/ltp3.3/" sentence = "欧洲东部的罗马尼亚,首都是布加勒斯特,也是一座世界性的城市。" segmentor = Segmentor() segmentor.load(os.path.join(MODELDIR, "cws.model")) words = segmentor.segment(sentence) wordlist = list(words) # 从生成器变为列表元素 postagger = Postagger() postagger.load(os.path.join(MODELDIR, "pos.model")) postags = postagger.postag(words) parser = Parser() parser.load(os.path.join(MODELDIR, "parser.model")) arcs = parser.parse(words, postags) recognizer = NamedEntityRecognizer() recognizer.load(os.path.join(MODELDIR, "ner.model")) netags = recognizer.recognize(words, postags) # 语义角色标注 labeller = SementicRoleLabeller() labeller.load(os.path.join(MODELDIR, "srl/")) roles = labeller.label(words, postags, netags, arcs) # 输出标注结果 for role in roles: print('rel:', wordlist[role.index]) # 谓词 for arg in role.arguments: if arg.range.start! =arg.range.end: print(arg.name, ' '.join(wordlist[arg.range.start:arg.range.end]) ) else: print(arg.name, wordlist[arg.range.start]) ``` 输出结果如下。 rel: 是 A0 欧洲 东部 的 罗马尼亚 A0 首都 A1 布加勒斯特 rel: 是 ADV 也 A1 一 座 世界性 的 [INFO] 2016-01-09 02:40:34 build-config: add 61 constrains. [INFO] 2016-01-09 02:40:34 report: number of labels 13 这里“rel”标签表示的是谓词,“A0”指动作的施事,“A1”指动作的受事。关于其他标签,在后面会专门讲解。 # 结语 作为全书的开篇,本章的内容可能有些繁杂。为此,下面总结一下本章的主要内容。首先,本章回顾了自然语言处理的简要历史。自然语言处理及与之相伴的智能计算,从诞生到现在,大约经历了4个阶段,分别是诞生前的科幻主义时代、基于图灵机的早期探索、中期规则派和统计派的划分,以及现在的认知计算时代。 在1.2节给出了现代自然语言处理系统的基本架构,即从中文分词、词性标注到句法解析的语法分析流程,以及与之并行的命名实体识别、语义组块、语义角色标注的语义分析模块。整个框架从中文分词开始直到语义角色标注为止,共历经4~5个串联的环节。后面各节就是对上述环节的介绍和基本应用。 注意,这是当代NLP流行框架,并非本书提出的NLP整体架构。本书的NLP整体架构将在后面章节中给出。 基本上,现代的自然语言处理任务和应用系统都依据该框架发展开来。从1.3节开始,结合StanfordNLP和Ltp 3.3两大开源系统,以及相关的一些小型NLP系统,逐一分析总体架构中各个模块的功能 在中文分词中,介绍了Ltp 3.3和结巴分词的中文分词模块的应用;在词性标注一节中,给出了Ltp 3.3和StanfordNLP中的词性标注模块的应用;在命名实体识别一节中,给出了Ltp 3.3和StanfordNLP中的命名实体识别模块的应用;在句法解析一节中,给出了Ltp 3.3的依存解析树,以及StanfordNLP的短语结构解析树和依存句法解析树的应用。最后,在语义角色标注系统中,给出了Ltp 3.3的语义角色标注系统的应用。 各NLP模块均包含如下结构。 ❑ 模块功能概述。 ❑ 资源下载地址。 ❑ 应用执行代码。 ❑ 执行结果及其说明。 以这些著名的开源系统作为本书的开端,其目的是为读者提供一个开放的学习平台。本书仅仅起到抛砖引玉的作用,读者在阅读本书后,通过学习这些著名的NLP系统的更多规范、算法,可以掌握语言的基本理论、NLP的设计思想,以及开发NLP的各种算法,最终有能力构建出自己的NLP系统。