中文信息处理研究:文科编程语言“语义研究-图标”_文科论文

中文信息处理专题研究:语义研究——适合文科人员的编程语言——ICON,本文主要内容关键词为:语义论文,中文论文,专题研究论文,编程语言论文,适合论文,此文献不代表本站观点,内容供学术参考,文章仅供参考阅读下载。

1.文科人员需要编程语言

随着计算机的普及和计算机科学的发展,不仅计算机成为其他学科不可缺少的工具,而且计算机科学也促进了其他学科的发展。文科也不例外。计算机不但为语言学、文学等传统上与数理不太相干的文科提供了现代化工具,而且计算机科学的思想、方法等也为这些传统的文科注入新的活力,使这些学科有了长足的发展,甚至产生了文理结合的新学科,如计算语言学。

文科人员在工作、研究中越来越多地使用计算机。计算机不只是计算或编辑、打印文章的机器。它的最高价值在于对数据进行各种需要的处理。要处理就要有进行处理的程序和软件。虽然市场上有很多应用软件,但是用计算机要做的各种处理任务是无限的,而市场上现成的软件总是有限的,不可能完全满足每一个人、每一项具体处理工作的需要。所以,为更好地发挥计算机的潜力做好自己的工作,文科人员应该掌握程序语言,编制自己工作中需要的程序。

目前,多数文科人员还不能使用程序语言编程。这并不是说文科人员不需要编程语言,而主要是由两个方面的矛盾造成的。一方面,我国的文科人员,一般只在高中学习初等的数理知识,进入高一级学校后,不再学习数理方面的课程,这使得广大文科人员的知识结构与学习计算机及程序语言所要求的有不少差距,因而很多人对程序语言的学习望而却步。另一方面,目前我国流行的主要计算机程序语言是Basic、C/C++、Java等,这些是计算机专业人员使用的程序语言,非计算机专业的理科人员掌握起来常常都有困难,对文科人员来说,更是难上加难。而且,这些语言,或者是主要用于数字运算的工具,或者是系统开发的工具,虽然功能强大,但并不特别适合文科人员工作的需要。如何解决这些矛盾呢?从长远来看,应该从教育体制方面根本改变文科人员知识结构不合理的状况,但目前还很难做到,而且远水不解近渴。从目前来看,寻找一种适合于文科人员学习、使用的计算机程序语言,是理想的解决办法。有没有这样的程序语言呢?有!这就是ICON语言。

2.ICON语言是适合文科人员使用的编程语言

2.1 ICON是以字符串和结构处理为特色的语言

ICON语言(下面简称ICON),是美国亚利桑纳(Airzona)大学计算机科学系以Ralph E.Griswold教授为首的研究组研究、开发的一种高水平的通用计算机程序语言,(注:在计算机术语中,ICON的意思是可视界面上的“图标”,但作为语言名称的ICON与图标无关。)它与Basic、C/C++等其他高水平计算机语言一样,可以在多种机型和操作系统上运行,如,Unix、MSDOS、OS/2、Machintoshi等,并且有了可以在WINDOWS上运行的版本。在语言的句法结构上,ICON与C语言类似,采用过程化的结构,源程序编译成为可执行文件后在操作系统上运行。

ICON是以字符串和结构处理为特色的程序语言。其他程序语言虽然也有字符串处理的功能,但它们只是把字符串作为长度有限的字符数组,靠低水平的字符数组操作来完成,因而处理能力有限,而且使用极为不便。ICON的设计者把字符构成的串和结构的处理及处理的便利、高效作为突出的考虑,因而ICON在字符串处理上具有其他语言所没有的鲜明特色。

ICON是设计思想独特的程序语言。传统的程序语言,为了提高运行的速度,多采取用语言模仿计算机硬件的方法。结果,提高了速度,牺牲了编程的便利。ICON的设计者采用符合人们思维和解决问题方式的方法来实现语言的功能,让机器尽量替人做事而不是人为机器操心。因而,ICON编程便利,程序简短。(注:意思引自ICON设计者Griswold教授为笔者《ICON语言教程》(清华大学出版社出版)写的序言。)

2.2 ICON适合文科人员的需要

包括语言学、文字学等在内的文科人员工作的主要对象是语言,离不开对语言信息的分析、检索、处理。在现代语言学来看,语言的成分或片段,如词、句子、篇章等,都是由字符表中的符号构成的有一定结构的串,一般称为“字符串”。在计算机处理中,这些片段同样作为字符串来处理。文科人员在工作中使用计算机,必然要与字符串打交道,少不了对字符串和结构的分析和处理。ICON正是以字符串和结构处理的特色适合文科人员的需要。这体现在以下方面:

1.强有力的字符串扫描功能

为了对字符串和结构进行有效的处理,ICON提供了有力的工具——字符串扫描。例如,只用三个程序行可以把输入文件里的所有汉字找出来并加以统计,

while line:=read(file in)do

line?while tab(upto(&cset[161:256]))do

table[move(2)]+:=1

其中,“?”是专门进行字符串扫描的算子(运算指令),找到的字及统计结果由索引表table保存。完成同样的任务,用其他程序语言,至少要用十几甚至二十几个程序行或语句。稍加修改,这三行就可以完成对中文词语的统计。

在字符串扫描的基础上,可以对字符串和结构进行任何分析或处理。例如,

while line:=read(file_in)do

line? if match(“学习”|“掌握”)||arb()||match(“方法”|“理论”)

then write(line)

可以找到输入文件中含有“学习”或“掌握”与“方法”或“理论”共现的行并将其输出。由于中文字符编码的复杂性,汉语文本处理比西文复杂得多。用ICON编程,汉语文本的处理变得容易得多。

2.丰富的字符串和结构分析、处理函数

在C/C++语言中,字符串不是一种数据,要通过字符数组对字符串进行处理。这给以字符串的处理为主的编程带来很大不便。在ICON中,字符串是一种数据,并有一套字符串和结构的分析、处理函数对字符串扫描加以支持,使字符串处理变得十分便易。上面两例里的tab()、upto()、move()、match()都是这样的函数。

3.多种结构数据的支持

对字符串和结构进行处理时,少不了对字符串的存放、管理和检索,这就要用到结构数据。ICON提供了丰富的结构数据,如字符集、表、集合、索引表等,加强了扫描和对串和结构处理能力。索引表可以建立数据与其属性的联系,通过数据对其属性进行检索,如词语、字与频度、读音、笔画等之间的联系。表可以存放一组有序的数据对象,也可以用来表示树形结构,如,[A,[B,[C,D]],[E,[F,[G,[H,I]]]]]可以表示下面的树:

集合可以存放一组无序的数据对象,如词表。通过集合的并、差、补等运算,为不同组数据对象间的处理提供了方便的手段。

3.用ICON可以做什么

根据ICON设计者的目标,ICON可以广泛地应用于多种领域,如,高水平的字符串和结构分析处理;文本的分析、编辑和编排;人工智能、专家系统;数据的过滤、转换;数理语言的分析;语言学研究,等等。

据ICON研制组了解,在像语言学和人文科学这样的研究中,ICON已在很大程度取代了原来使用的语言。ICON不仅特别适宜编写短小的程序,而且也十分适用于解决非常复杂的、相当困难的编程任务。欧美不少大学的文科院系里,把ICON作为文科学生的必修课。

笔者是搞语言的文科人员,从1994年开始使用ICON,而且学习、使用过C、Basic、Prolog等其他程序语言。在使用中,笔者感到,ICON确实是文科人员使用起来得心应手的工具。在文科研究、汉语言信息处理方面,ICON可以方便地胜任多方面的工作,例如:

1.语言信息处理 语言信息的基础是语言成分的查找、检索、统计等。通过对语言文本的扫描,对文本进行分析、查找、检索,正是ICON的特长。

2.语言成分的统计 统计就是计算,一般语言都可以胜任。但是,计算之前,要准确地找到统计对象。查找统计对象,就涉及到对字符串和结构的分析、处理。从输入文本中准确、有效地寻找、确定统计对象,这对其他语言来说并非易事,而这正是ICON的特长。如,统计汉字、词语的程序,也就一、二十行,统计20万字的文本,几分钟就可完成。

3.本文的各种处理 在扫描的基础上,对文本可以进行各种各样的处理。如,得到一个很大的文本,想对它进行分析、检索,甚至作为语料库中的语料。可是,文本里充满了排版符号或其他符号。要把这些多余的符号“过滤”掉,用ICON可以轻而易举地完成。ICON在进行字符串扫描的时候,可以对找到的对象进行替换、删除。笔者曾对北大方正排版系统排版后的文本进行过滤,从七百万字的文本中滤去所有排版符号,只用了不到十分钟。再如,一个文本的格式不符合要求,有很多不必要的空行。要是用编辑软件修改,就得进行很多手工操作,还要作文本格式的转换。同样的工作,用ICON写个十行左右的小程序,用不了一两分钟就可解决问题。

4.成员的确认 如果把若干个词语、短语或其他数据对象看做一个集合,确认某个词语、短语或数据对象是否是这个集合的成员,是数据处理中常常要做的工作。如果把这种工作叫做“成员确认”,在ICON中,很容易完成这样的工作。如,把一个词表存放在结构数据集合(比如,集合ck)里,用下面的句子可以快速有效地完成对“火险”的确认工作,member(ck,“火险”)。

成员确认,在自动分词、词语标注、文本用词(字)限制等工作中有着广泛而重要的用途。

5.排序 对字、词语或其他数据对象排序,是研究工作里基本而重要的操作。对简单的数据,如一列排列的词表,按内码进行简单的排序,一般而言,甚至DOS命令都可胜任。但是,要按其他属性,如,读音、笔画、部首等,进行复杂的排序,就不那么容易了。如果对一组结构数据(每个数据包含若干相关数据)按结构中某个数据的某个属性排序,那就更复杂了。在ICON中,由于有表、索引表以及排序函数的支持,完成起来不很困难。笔者用ICON写的对字、词语按内码、笔画、读音、部首等属性排序的程序,运行快捷,六七万字的词表,几分钟即可完成排序。

6.语料库的加工、管理 在语言学的研究中,人们正渐渐放弃“笔加卡片”的传统方法,改而采用语料库语言学的方法。由于计算机的普及、硬盘容量的增大及价格的降低,使得在个人计算机上建立小型语料库成为可能。语料库的建立,主要是对语料文本的加工,如分词、标注等。语料库建立起来后,就要对语料库管理、使用,如统计、检索、查找等。这些,用ICON都可以比较便利地完成。

7.自然语言处理 自然语言的理解和生成,是人工智能的核心工作,也是语言工作者验证自己的语法体系描写充分性的最有效方法。在字符串和结构处理的基础上,加上ICON的回溯能力和“有逻辑编程色彩”的运行机制,ICON完全可以用来进行汉语真实文本的分析理解或生成工作。实际上,ICON常常被系统程序员用来对程序文件进行分析、转换和建模,这就是对形式语言的分析、理解和生成。

4.ICON是便于文科人员学习的语言

4.1 ICON的设计思想为文科人员学习使用创造便利

除了强调字符串和结构的处理外,ICON的设计思想还有两大特点。一是改变让程序语言模仿机器硬件的做法,而让语言模仿人类思维和解决问题的方式来分析、解决问题;二是机器能做的事情尽量让机器去做,不让人为该由机器做的事情操心。这样的思想体现在语言的使用上,便是程序的简短、编程的便利以及程序运行时的动态机制。这些特点主要表现在以下方面:

1.变量存放数据的多质性

在Basic、C/C++等其他高级程序语言中,建立一个变量,必须声明数据类型。数据类型一经声明,便不得改变,否则就会出错。这虽然可以保证程序运行正常,但对使用者、尤其是文科使用者,给编程带来很大的不便。在ICON中,建立变量时,不需要数据类型声明。一个变量建立后,可以赋予它任何类型的值。ICON会自动判断数据的类型并分配相应的记忆空间,并且,需要时能自动对数据类型进行转换。

2.结构数据里,可以存放不同类型的数据

在C语言里,一个结构数据里,只能存放同一类型的数据,而在ICON里,一个结构数据里,可以存放多种不同数据,这就为类型不同但又相关的一组数据的存放、处理提供了极大的便利。例如,book是一个表,给它赋值的表达式为

book:=[“语义学”,[“G.Leech”,“英国”,“上海外语教育出版社”,4.9,567]表里的元素可以是字符串、实数、整数和表,保存了书名、作者及其国籍、出版社等信息。在词基础上,可以根据其中任何一项信息对整个表进行处理。

3.自动管理内存

程序运行时,ICON对计算机的内存进行动态的自动管理。字符串和结构,在程序运行时动态建立和管理。例如,建立一个表时,不必说明表的大小(元素的个数),程序运行时,随着元素的加入,表的大小自动扩大,而且表的大小不受限制。这样,给程序编写和运行带来极大的方便。一方面,使用者只需把精力放在程序要完成的工作上,不必为数据的管理担心,另一方面,在计算机硬件允许的范围内,对可处理的数据的规模几乎没有限制。

4.ICON程序简短,易于编写

由于ICON语言模仿人解决问题的方法,很多工作由机器替使用者完成,所以,ICON程序简洁、短小,而运行效率高。例如,用C语言写的从文本文件里分离并检索出全部句子的程序,有239个程序行,用ICON写的功能相同的程序,只有54个程序行,且运行速度相似。

由于以上特点,人们评价ICON是“有逻辑编程色彩”的程序语言。

4.2 ICON不难掌握

笔者从学习ICON到掌握ICON,用了不过一年多时间。从笔者的经验看,掌握了ICON的基本内容后,编写一个解决具体问题的程序,用不了多长时间。比较熟练地掌握ICON后,编写一个一二十行的程序,加上调试,不过是二三十分钟、个把钟头的事情。编写一个几百行的程序,加上调试,也就是几天时间。不仅程序编写不难,而且可以根据需要随时对程序进行修改、增减。

那么,对于没有编程知识的文科人员,学习ICON的基本内容要多长时间呢?笔者给三届语言专业的研究生讲授过ICON,每周三课时上课、两课时上机练习。认真学习和练习,一个学期,便可以掌握ICON的基本内容,能编写不太复杂的程序。学习程序语言的最好方法是编写程序,因为编写、运行程序是了解程序语言的最好途径。学习、掌握ICON不需要高深的数理知识,有高中的数理基础作为起点,就可以了。这对于一般文科人员来说,不算什么问题。

5. ICON是适合文科人员学习、掌握的编程语言

通过前面的介绍,说明ICON正是适合于文科人员学习、使用的一种计算机程序语言。一方面,ICON以字符串和结构处理为特长,同时又具有一般通用计算机程序语言具有的其他功能,特别适合以文字处理为主要内容的文科人员的工作性质的需要;另一方面,ICON语言本身,没有非常复杂的句法,不需要使用者操心对计算机底层的控制。这完全适合于没有很多数理知识的文科人员工作、研究的情况和需要。文科人员用ICON不仅可以编制一些短小的程序解决工作中的具体问题,而且也可以设计较大的实用软件,解决一系列相关的问题。(注:笔者是文科出身,不仅用ICON编写短小的程序,而且还用ICON编制了较大的综合性软件。)

其实,学习、掌握一种程序语言得到的收益不仅仅是能够编制、使用程序。现代科学的发展趋势之一,是文理相互渗透,尤其是传统的文科中吸收了越来越多的数理学科的思想、方法、理论。这些思想、方法、理论成为现代化的文科的一个重要特征,成为现代化文科人员知识结构中必不可少的组成部分。一个文科人员,如果只满足于原有的东西,不学习、了解、掌握这些新东西,必然适应不了学科现代化发展的趋势和需要。而学习一种计算机程序语言的过程,又是熟悉、了解、学习这些新的思想、方法、理论的一个具体而有效的过程。当然,说ICON是便于学习的程序语言,并不是说学习、掌握ICON不需要付出努力。但是,与付出努力后得到的回报相比较,付出的努力是值得的。既然如此,何乐而不为呢?

那么,要学习、使用ICON,如何得到ICON呢?由于ICON的研制者是受赞助的非营利机构,所以ICON是放在公众领域里的可自由拷贝的软件。有以下两个途径可以得到ICON:

通过因特网下载,地址是:htpp://www.cs.arizona.edu/icon 这是亚利桑纳大学计算机科学系ICON研制组的网址,从该处可以自由地下载需要的软件。

《ICON语言教程》(清华大学出版社),随书带有一张练习盘,里面有ICON的基本软件。

标签:;  ;  ;  ;  

中文信息处理研究:文科编程语言“语义研究-图标”_文科论文
下载Doc文档

猜你喜欢