本文语料库和术语数据库是当前自然语言处理(naturallanguage processing,简称NLP)的重要内容,特别在语料库语言学兴起之后,这方面的研究特别活跃。在文本语料库和术语数据库的研制和应用中,如何交流库与库之间的信息资源,是一个极为重要而迫切的问题。 为了实现文本语料库之间以及术语数据库之间的信息交换(information exchange)和信息的再利用(information reuse), 必须首先解决语言信息格式的标准化问题。国际标准化组织ISO/TC37 /SC3 近年来一直力图把标准通用置标语言(Standard GeneralizedMarkup Language )应用于文本语料库和术语数据库的研制和开发之中,在最近召开的ISO/TC37/SC3 的会议上, 几乎每一次会议都要讨论SGML在自然语言处理中的应用问题。本文作者曾经作为中国代表参加过1993 年(在丹麦哥本哈根召开)、 1994 年(在挪威奥斯陆召开)和1995年(在美国费城召开)的标准化会议,在会议期间积极参与了有关问题的讨论,并参加了有关国际标准的投票,对于这些标准的情况和细节比较了解。因此,我们在本文中介绍一下SGML这种重要的标准通用置标语言以及它在文本语料库和术语数据库中的应用,希望这些介绍有助于我国语言信息处理中标准化工作的进一步开展。 为了帮助人们理解书面信息的内容,书面信息必须显现为便于人们阅读的形式,人们便常常在书面文本中加入一些控制标记,如文字的大小、标题的字体、插图的位置等。但是,每个系统都有自己的控制标记,不同的系统之间没有统一的格式,标记和格式都没有通用性;有的系统尽管也采用了所谓“过程性置标”(procedural markup)的办法, 说明在系统中,应该选用什么字体,标题应该处于版面上的什么位置等,但是,这种过程性置标无法使人们了解文件的结构,而且缺乏灵活性。例如,过程性置标告诉人们标题应排在一行的正中,但排在一行正中的不一定是标题,有时可能是插图或引用的某一内容;又如,当要使用另一个系统,或者使用同一个系统而要改变格式时,过程性置标必须逐一地改变以前所置的标记,重复处理的过程,费时而又费力。这种情况,严重地妨碍了信息的交换。因此,很有必要设计一种通用的标记,以提高信息的利用效率。 美国早在60年代就有学者开始研究这个问题。 1969 年, CharlesGoldfarb在领导IBM公司关于集成法律办公信息系统的研究项目时, 就同他的合作者Edward Mosher和Raymond Lorie共同设计了通用置标语言(Generalized Markup Language,简称GML语言)。1978年,美国国家标准化局(ANSI)的下属单位成立了一个工作组,由Goldfard领导,进行文本描述语言标准化的研究,这项研究以GML语言为基础, 进一步设计标准化的通用置标语言(Standard Generalized Markup Language,简称SGML 语言)。 这项研究得到了美国图形通信协会(GraphicCommunication Association,简称GCA)的支持,1980年发表了SGML第一稿草案。1983年,GCA推荐SGML第六稿草案作为工业标准, 被美国税务署和国防部采纳,1985年SGML作为国际标准草案发布,1986年,国际标准化组织正式发布了SGML国际标准,标准号是ISO8879-1986。 我国于1995年也把SGML语言作为国家标准,标准号为GB 14814。从研究通用的标记到SGML语言成为正式的国际标准,前后经过了近20年的时间。SGML语言应满足如下约束条件: (1)SGML 语言所置标的文本必须能够被广泛使用的文本处理系统和文字处理系统所接受; (2)SGML 语言能够支持现有的大容量文本输入设备; (3)SGML 语言不依赖于任何的字符集, 可以允许在不同的设备上输入文本; (4)SGML 语言独立于具体的处理程序、系统、设备; (5)SGML 语言没有任何的民族语言倾向; (6)SGML 语言应该适合于人们所熟悉的打印机和文字处理程序的习惯; (7)SGML 语言置标后的文本应该能够与其它数据并存; (8)SGML 语言应该既可以为计算机所使用, 也可以为人所使用。 总而言之,SGML语言的设计目的是要使文件信息与设备无关,与处理系统无关,甚至与所用的语种无关。SGML语言的目的,就是要在各个孤立的系统之间架起桥梁,使各个孤立的系统彼此联系起来。 SGML语言通过描述文件逻辑结构的方法,使置标具有通用性,并通过一系列的声明(declaration), 使各个系统都能理解文件的信息与置标。 任何文件都有其自身的结构。例如,书信由发信人、收信人、信件本体等部分组成,公文由发文单位、收文单位、题目、文号、公文本体等部分组成,学术著作由目录、序言、学术著作本体、后记等部分组成,等等。学术著作本体又可由若干章组成,每一章又可以由若干节组成,每个节又可以由若干段组成。学术著作的结构可以用下面的树形图来表示:
书信和公文的结构也可以用类似的树形图来表示。SGML语言在逻辑上将文件表示为树形图结构。树形图上的每一个非终极结点叫做“元素”,一个元素的子结点,叫做这个元素的“内容”。例如,在学术著作的树形图结构中,“章”是“著作本体”的内容,“节”是“章”的内容,“段”是“节”的内容。树形图上的每一个终极结点没有内容,这些没有内容的终极结点,叫做“数据”。 SGML 语言用描述性置标来区分文件信息中的不同元素, 用“文件类型定义”(Document Type Definition,简称DTD )来描述某一类文件的结构,说明在这一类文件中有哪些元素,这些元素之间存在什么样的关系,SGML 语言还用SGML 声明(SGML declaration)来说明所用的字符集、置标用字符、语法规则等。