FrameNet 是一个为期三年的项目,获得了 NSF(美国国家科学基金会)的支持,专注于基于语料库的计算词典编纂。
项目特点
FrameNet承诺使用语料库证据(corpus evidence)来进行语义和句法的概括; 并对目标词(主要是名词、形容词和动词)的搭配方式进行表示,其中语义部分使用了框架语义学。
最终的数据库将包含所描述词语的语义框架描述,以及几千个词语和短语的搭配表示(语义和句法),每个词语或短语都附有一组代表性的标注语料实证,这些实证共同展示了“框架元素”及其句法实现(例如,语法功能、短语类型和其他句法特征)之间的观察到的链接。
项目成果
FrameNet 项目正在为数千个英语词汇项生成框架语义描述,并通过当代英语语料库中的语义标注实证支持这些描述。这些描述基于从大型文本语料库中提取的例句的手工语义标注,以及词典编纂者和语言学家对这些例句所体现的语义模式的系统分析。因此,该项目的主要重点是将语义知识以机器可读的形式编码,由人类完成。词典编纂者的直觉受到基于语料库研究结果的指导和限制,这些研究使用高性能的软件工具进行。
该项目的主要成果有两个部分:
- 一个名为 FrameNet 数据库的词汇资源
- 相关的软件工具。
这个数据库有三个主要部分:
- 一个词典,包含的词条由以下部分组成:
- 一些传统的字典类型数据,主要供人类读者使用;
- 公式,这些公式捕捉了语义框架的元素在围绕该词构建的短语或句子中的形态句法实现方式;
- 与语义标注的例句的链接,这些例句说明了公式中识别出的每种潜在实现模式;
- 与框架数据库及其他机器可读资源(如 WordNet 和 COMLEX)的链接。
- 一个框架数据库,包含每个框架基本概念结构的描述,并为参与这些结构的元素命名和描述。
- 注释过的例句,这些句子被标注以说明词汇项的语义和形态句法属性。这些句子为框架数据库和词典条目中的词典编纂分析提供了实证支持。
概念模型
在 FrameNet 中,角色名称(称为框架元素或 FEs)是特定概念结构(框架)所特有的。一些框架非常通用,而另一些则特定于一小类词汇项。例如,在运动(MOTION)领域内的交通(TRANSPORTATION)框架提供了行动者(MOVERS)、运输方式(MEANS of transportation)和路径(PATHS)。
例如,DRIVING属性指定了一个DRIVER (主要的MOVER),VEHICLE (具体的MEANS元素),以及潜在的CARGO或RIDER作为次要的MOVER。在这一帧中,DRIVER启动并控制车辆的移动。在这个框架中,大多数动词都可以实现为DRIVER或VEHICLE的主语;车辆、乘员或货物可以作为直接对象出现;PATH和VEHICLE可以作为斜补语出现。
项目概述
生成 FrameNet 的框架语义表示数据库需要四个处理步骤:
- 准备:生成语义和句法模式的初始描述,用于语料库查询和注释
- 子语料库提取:提取好的例句
- 标注:手动标记感兴趣的成分
- 词条写作:根据标注和其他数据构建词汇语义表示的数据库
代码
import nltk
from nltk.corpus import framenet as fn
# 下载 FrameNet 数据(如果尚未下载)
nltk.download('framenet_v17')
# 查看所有可用的框架
frames = fn.frames()
print(f"Total frames: {len(frames)}")
# 查找一个特定的框架,例如 "Commerce_buy"
commerce_buy = fn.frame('Commerce_buy')
# 打印框架名称
print(f"Frame name: {commerce_buy.name}")
# 打印框架的核心元素和非核心元素
print("Core Frame Elements:")
for element in commerce_buy.FE:
print(f"- {element}")
print("\nNon-Core Frame Elements:")
for non_core in commerce_buy.FEcoreSet:
print(f"- {non_core}")
# 打印例句
print("\nExample Sentences:")
for sentence in commerce_buy.exemplars:
print(sentence.text)