📄 design_of_wordnet_lexicon.htm
字号:
... ]),来定义词形式之间的词汇关系。关系形容词就是以这种方式进入,来表示关系形容词跟相应的名词之间的关系的。<br>
</p>
<p>5 动词的句子框架(Verb Sentence Frames)</p>
<p>每个动词synset包含了一个动词框架的清单,来展示跟这个synset中动词用法有关的简单句句型。<a href="appendix-b.txt">附录B</a>是动词简单句句型框架的清单。</p>
<p> </p>
<p>6 同义词集合的形式句法结构定义(Synset Syntax)</p>
<p>源文件中满足如下形式定义的字符串被当作是synset(不过,下面只是简单的示意,而不是完整的形式描述,正式的规范在“WordNet参考手册”的wninput(5)中可以找到)。</p>
<p>[1] 每个synset以 { 开始;</p>
<p>[2] 每个synset以 } 结束;</p>
<p>[3] 每个synset中包含一个或多个词形式,之间以逗号分隔;</p>
<p>[4]
为表示语义关系,词形式后面可以跟上关系指针,具体形式是:一个词形式后面是逗号,然后是一个关系指针符号;</p>
<p>[5] 对动词synset来说,“框架”(frame)是由逗号隔开的,跟在所有的关系指针之后。</p>
<p>[6] 为表示词汇关系,一个词形式后面可以跟上[4]或[5]中的基本元素形式,放在方括号
[ ... ]中。</p>
<p>[7]
为表示形容词聚类,聚类的每个部分(中心同义词集合,可以选择跟上卫星同义词集合),靠一条仅包含连字符的短线跟其他部分隔开。每个完整的聚类包含在一个方括号中。</p>
<p> </p>
<p>7 档案系统(Archive System)</p>
<p>词典编纂者的源文件保存在一个档案管理系统中。该档案管理系统基于Unix修改控制系统(RCS)——
一个用于文本文件的多重修改管理工作的系统。这个档案系统的建立基于几个理由:(1)允许WordNet数据库的任何一个版本的重构;(2)保存对源文件进行修改的历史记录;(3)阻碍人们对同一个文件进行有冲突的修改;(4)确保产生最新的WordNet数据库。这个档案管理系统中的程序是Unix外部脚本,可以一定方式封装RCS命令,使得词典编纂人员在友好的用户界面下对源文件进行操作。</p>
<p>reserve(预留)命令是从档案中抽取一个或多个给定文件最近修改的部分,并且在用户操作该文件期间对文件上锁保护。review(检查)命令从档案中抽取一个或多个给定文件最近修改的部分,用于检查,此时该文件并没有上锁。为防止修改,review文件时不允许进行写操作。restore(恢复)命令校验一个被预留的文件的完整性,并将该文件返回给档案管理系统。release(释放)命令用于解除一个文件的锁。当词典编纂者决定不应该将对文件的修改返回给档案管理系统时,就可以使用release命令。whose命令用于了解文件是否当前预留的文件,如果是,则显示预留该文件的用户名。</p>
<p> </p>
<p>8 将源文件转换成WordNet词库的Grinder工具(Grinder Utility)</p>
<p>Grinder是将词典源文件转换成数据库形式的工具。Grinder由几个选项来控制对输入文件的操作。为建立一个完整的WordNet数据库,所有的词典源文件必须同时进行处理。Grinder同时也是一个校验工具,确保词典源文件在用restore命令返回到档案管理系统时的一致性、形式合法性。</p>
<p> </p>
<p>9 实施(Implementation)</p>
<p>Grinder是多遍编译器(multi-pass compiler),C语言编程。第一遍使用一个用yacc和lex写的分析器(parser),检查输入文件的文法是否正确,并建立被分析后synset的内部表示。接下来的编译过程都针对词典数据的内部表示操作。第一遍编译尝试尽可能地发现形式句法错误和结构错误。源文件中的形式句法错误是跟规范不符的输入,结构错误指的是由于某种原因无法“解析”(resolve)的关系指针。通常这些错误是词典编纂者的打字错误造成的,比如将一个指针指向一个不存在的文件,或者引用一个多义词时没有明确义项号。第一遍编译无法确定多个指针指向多个文件中的结构错误,因为这多个文件不是一起处理的。作为校验工具使用就如同restore命令所做的那样,只运行第一遍编译过程。</p>
<p>第二遍编译过程中,Grinder解析所有的语义关系和词汇关系指针。为此,每个synset中的指针依次被检查,每个指针的目标(synset或synset中的词形式)则被找出来。源文件中的指针被解析为一个指向内部数据结构的入口,这个入口标明了指针所指目标的“位置”。碰到相互/反身指针(reflexive
pointer)的情况,就搜索目标指针的synset。如果找到,代表反身指针的数据结构就被修改,来表示目标——源指针的“位置”。如果没有找到这样的反身指针,Grinder自动产生一个带有所有相关信息的指针。</p>
<p>随后的一遍编译遍历词形式表,指派一个多义词的义项号。对每个词形式按照句法类不同来分配义项号。</p>
<p>Grinder的最后一遍编译生成WordNet数据库。</p>
<p> </p>
<p>10 内部表示(Internal Representation)</p>
<p>词汇数据的内部表示是一个相关链接表形式的网络。词典源文件被分析过(parsed)后,形成一个关于词形式的哈希表(hash
table)。小写字母字符串作为关键字;如果词形式不是小写字母,就保留下来作为数据结构的一部分,以便包含在数据库文件中。当分析程序处理输入文件时,它调用函数来创建一个synset中的词形式、指针以及动词句型框架的数据结构。一旦一个完整的synset被分析,就有一个数据结构被创建出来表示该synset。输入文件中所有的synset作为一个单一的链接表来维护。Grinder程序对该数据结构的每“遍”(Pass)访问,既可以通过synset的链接表访问,也可以通过词形式的哈希表访问。一个synset的列表(每个synset明确地表明了每个词形式的意义)用于解析指针,并且生成数据库的索引文件。</p>
<p> </p>
<p>11 WordNet数据库(WordNet Database)</p>
<p>对每个句法类,有两个文件来代表WordNet数据库 ——
索引文件(index.pos)和数据文件(data.pos) (这里 pos是part of
speech的缩写,代表 noun, verb, adj 或 adv )——
实际文件名可能由于计算机系统平台不同而有所差别。数据库是ASCII码格式存贮的,人和机器都可读,对于那些希望利用这个数据库支持自己的应用程序的人来说,非常方便访问。每个索引文件是WordNet中一个句法类中所有词形式按照字母顺序排列的表。每个数据文件包含了来自词典编纂者的源文件的所有词汇数据(按句法类分开),同时有经过解析的关系指针来表示词语在数据文件中的地址。</p>
<p>索引和数据文件是相关的。在一个索引文件中,每个记录有一部分是一个或多个字节的偏移量(offset),每个偏移量指明一个synset在数据文件中的起始地址。检索synset或其他信息的第一步通常情况下是在一个或多个索引文件中搜索一个词形式,以获得包含这个词形式的所有synset的数据文件地址。每个地址都是一个按字节计的偏移量(指向数据文件),表示synset信息的起始位置。属于一个单个synset的信息的编码方式可参见下面13小节“数据文件”部分的介绍。</p>
<p>尚书数据库结构的一个缺点是,尽管所有文件都是ASCII码的,因而是可以编辑的,并且理论上也是可以可扩展的,但实际上这些几乎是不可能的。Grinder的主要功能之一是计算synset在数据文件中的地址。编辑任何一个数据库文件都可能造成错误的偏移字节量,从而造成搜索错误。目前,建构一个WordNet数据库需要使用Grinder同时处理所有的词典源文件。</p>
<p>下面将简要描述索引文件和数据文件,非常概要地介绍WordNet数据库的形式结构、规范、和组织方式。更详细的信息请参考手册“WordNet
Reference Manual”中的wndb(5)页。</p>
<p>12 索引文件(Index Files)</p>
<p>索引文件中的词形式是小写的,不管它们原先在词典源文件中取什么形式。索引文件按照ASCII码字符集排序,可以利用二分法快速搜索。</p>
<p>每个索引文件都以几行包含版权申明、版本号、使用许可协议等信息的文字开始,之后是数据行。每行数据包含如下信息:来自在线词典(Collins英语词典)的一个词的义项数信息;包含这个词的所有synset中使用的关系指针类型的列表(这个信息是用于检索的);一个偏移字节量的索引列表,每个偏移字节量指向相应的数据文件中的一个synset中的词形式。每行数据以行尾字符作为结束标志。</p>
<p> </p>
<p>13 数据文件(Data Files)</p>
<p>数据文件中包含的信息对应着词典源文件中定义的synset,以及解析为data.pos文件中的字节偏移量的指针。</p>
<p>每个数据文件都以几行包含版权申明、版本号、使用许可协议等信息的文字开始,之后是一个所有输入文件名的列表。之后是数据行。每行数据包含了synset的信息,以及由Grinder程序附加的信息(可以用于检索或其他软件)。每行数据也是以行尾字符作为结束标志。在数据文件中,一个synset里的词形式对应着词典源文件中的词语规范写法。</p>
<p>每行的第一部分信息是偏移字节量(即synset的地址)。这个信息多少有些是冗余的,因为几乎所有的从一个数据文件中读取synset的计算机程序都知道synset的偏移量,但这个信息仍然是有用的,比如使用像grep这样的unix工具来跟踪synset和指针时,因为有了这个信息,就不需要使用复杂的软件了。此外,这个信息还提供了一个synset的唯一“关键字”(key),可以供用户程序使用。在这部分信息之后是一个整数值,对应着synset所在文件在一个文件名列表中的位置。这个信息可以用于检索软件在显示synset时标记该synset所在的源文件名,同时也有助于区别义项。在这个信息之后是一个词表,关系指针,以及动词句型框架。数据行的最后一段是文本注释部分。这部分是可选的(即可有可无的)。</p>
<p>关系指针由几段信息来表示。指针符号打头,之后是目标synset的地址,以及它的句法类(这个信息对那些指向不同句法类的指针是必需的),之后的一个片断用于区分当前指针是词汇关系指针还是语义关系指针。如果是词汇关系指针,这个片断就指示哪些词形式是该指针在源synset和目标synset中涉及到的词形式。如果是语义关系指针,这个片断的值就是0。</p>
<p> </p>
<p>14 查询词汇信息(Retrieving Lexical Information)</p>
<p>为了让用户可以访问数据库中的信息,需要为用户提供一个界面。这个界面可以使最终用户查找WordNet数据库,并通过一个基于Windows的工具或者以命令行方式来显示查询结果。这一点使得WordNet这样一个在线词典跟传统的印刷出版物形式的辞典非常不同。即便是一般传统词典的在线版本,WordNet仍然跟它有所不同,传统词典的在线版本(电子化)的信息是以固定格式存贮的,根据需要来加以显示。WordNet的信息以面向计算机的方式存贮,对于一般读者而言,反而是不可读的。因此,用户界面为用户提供了多种途径检索和显示词典信息。不同的界面可以提供给不同需求的用户。但所有界面都基于同一个词汇数据库。</p>
<p>WordNet的用户界面可以有很多形式。标准界面是一个X Windows应用程序。该程序可以在几种不同的计算机操作系统平台上运行。支持微软Windows操作系统和苹果Macintosh操作系统的版本也已经开发出来。尽管如此,以命令行方式访问WordNet数据库仍然是需要的。一些用户没有窗口环境,此外,外部脚本程序以及其他一些程序也可能围绕命令行界面来编写。</p>
<p>搜索过程也是跟搜索请求的具体类型无关的。第一步是检索索引文件中的索引入口。索引入口包含了地址信息,即被检索词语所在的synset在数据文件中的地址。然后,每一个synset就作为结果回应检索请求。因为每个包含了被检索词的synset中还包含指向数据文件中其他synset的指针,这些synset也可能是检索结果,需要被显示出来。</p>
<p>WordNet的用户界面和其它软件工具依赖一个函数库。这样一个相当全面的函数库已经提供了出来。可以支持搜索和检索,词形处理,以及其他功能。<a href="appendix-c.htm">附录C</a>包含了对这些函数的简要介绍。</p>
<p>findtheinfo( )函数的输入变元是一个词形式(word form),词类,和搜索类型;findtheinfo(
)调用一个低级函数在索引文件中寻找相应的入口,对每一个义项,调用适合的函数跟踪跟搜索类型相应的指针。大多数都是由traceptrs(
)函数完成的,但特定的函数不一定适合标准的层级搜索。</p>
<p>上述通用搜索和检索算法在实现WordNet的用户界面时是以几种不同方式起作用的。搜索类型根据词类不同而有所区别,但对应着上面表2中列出的关系指针。层级搜索可能由所有的关系指针来完成,除了反义关系和“参见”(also
see)关系。此外,调用findtheinfo( )函数可以搜索多义项信息、动词句型框架信息、或名词同位信息(那些有共同上位的词语也作为搜索字串被搜索到)。</p>
<p>搜索功能无法完成词形处理(morphological operations),因此调用findtheinfo(
)函数的同时需要调用morphstr( )函数来将搜索字串(单词)翻译成一个或多个基础形式(base
form)。</p>
<p> </p>
<p>15 X Windows界面(X Windows Interface)</p>
<p> </p>
<p>16 数据库搜索(Searching the Database)</p>
<p> </p>
<p>17 选项(Options)</p>
<p> </p>
<p>18 结果输出(Output)</p>
<p> </p>
<p>19 词语形态处理(Morphy)</p>
<p> </p>
<p>20 例外词表(Exception Lists)</p>
<p>WordNet中每个词类(副词除外)都包含一个例外词表。这个词表包含词语的不规则词形变化,因此无法以通用的算法方式来处理。这个例外词表的每一行都包含一个含有屈折形式的单词,之后是这个单词的一个或多个基础形式。这个词表以字母顺序排序,采用二分法搜索。</p>
<p> </p>
<p>21 单字词(Single Words)</p>
<p> </p>
<p>22 搭配词(Collocations)</p>
<p> </p>
<p>23 含连字符的词(Hyphenation)</p>
<p> </p>
<p>24 进一步的工作(Future Work)</p>
<p>因为许多名词搭配词包含了介词,例如“line of products”(“产品路线、产品线”)这个词,因此有必要开发一个跟处理动词类似的算法来处理名词。在目前的框架下,如果Morphy分析了“lines
of products”,这个搜索串就成为“line of product”,而“line of
product”在WordNet词库中不存在。Morphy应该在这方面有所改进。当它分析的是基础形式时,应该能够保留该基础形式中的“屈折成分”。</p>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -