【摘要】Perl是一种强大的脚本语言,快捷实用,支持正则表达式,是处理字符串的理想程序。鉴于此,Perl语言可以广泛应用于语料库的文本处理,尤其是文本中字符串的匹配、替换和转换。经验证,Perl可轻松实现语料库文本标注形式的替换以及XML和普通文档之间的相互替换。 【关键词】Perl;字符串;替换;语料库 一、引言 语料库是指以电子形式保存的语言材料(Kennedy2000:3),具有海量存储,共现语境等优点。目前,语料库已广泛应用于二语习得、外语教学、话语分析、语言测试、翻译研究、文体分析等各个研究领域。语料库语言学与计算语言学、理论语言学、描述语言学、应用语言学、认知语言学、翻译等学科融会贯通,形成了一系列的交叉学科,如语料库翻译学,语料库文体学。 文本处理是语料库建设最基础最关键的一步,文本清洁、格式统一对于后续研究的数据提取和数据分析具有至关重要的作用。简单的文本清洁和统一的格式处理可以通过Word的查找、替换实现。为便于深入分析文本特征,语料库建设者往往对语料库添加信息(Hunston,2002:79)并且进行词类标注(POStagging)和语义标注(semanticannotation)。标注代码往往有几十种甚至上百种,Word很难对标注文本进行统一的格式替换和更改,而应用程序可轻松实现这一目的。PERL语言灵活自由,功能强大,正是文本处理的理想程序。 二、PERL语言的功能 1987年,LarryWall开发出Perl(PracticalExtractionandReportLanguage),填补了C语言与Unixshell之间的空白,融合了编程语言和脚本语言的优点。这种跨平台的语言从各种汇编语言中借鉴了语法规则,提供了许多冗余语法,增加系统的稳定性,使程序设计者可以忽略计算机内部资料存储、类型、处理方法、运算规则、甚至内存越界等等的细节,而将思考中心放在所需要的程序逻辑上。最重要的是Perl内部集成了正则表达式的功能,以及巨大的第三方代码库CPAN(ComprehensivePerlArchiveNetwork)。Perl突出的文本处理、丰富的正则表达式、面向对象程序设计以及免费的自由软件和易学易用的特性,使perl成为语料库文本处理的首选程序语言。 三、文本处理的程序设计 只要计算机中装载了Java平台和ActivePerl,即可使用Perl进行程序设计和操作。设计者可选择编辑器如Notepad或者Editpad编写程序。基于强大的正则表达式功能,Perl可轻松地进行字符串的匹配(m)、替换(s)和转换(tr)。下面就语料库文本处理中可能遇到的几个问题尝试Perl程序的解决方案。 不同语料标注软件采用的赋码方式不尽相同,早期的语料库标注采用尖括号内加词类代码(如want),目前大部分软件如Claws和Gotagger采用下划线后接词类代码的标注方法(wantVAV)。中国科学院计算技术研究所研制的汉语词法分析系统ICTCLASi对现代汉语进行文本切分与词性标注则采用反斜线后加词类代码(如举行v活动vn)。研究者欲对搜集的多个语料库的标注文本进行分析研究,必然要统一标注形式。Perl语言的替换程序可满足使用者不同的转换要求,在各种标注形式之间进行转换。 (一)尖括号替换为下划线 程序1。 步骤1opendir(DIR,。)ordieCouldnotopenthecurrentdirectory;openthecurrentdir filesreaddir(DIR);readallfilesinthedirandsavetheminanarray closedir(DIR);closethedir 步驟2foreachfile(sort(files))loopdealingwitheachfile { 步骤3nextif(fileeq。);skipthefilenamed。 nextif(fileeq。。);skipfilename。。 nextif(file~format。pl);skiptheperlscriptitself 步骤4open(FHI,file)ordieCouldnotopenfile;openthefileorexit 步骤5outputnew。file;nametheoutputfile 步骤6open(FHO,gt;output)ordieCouldnotopenoutput;createoutputfile 步骤7while(line)readeachlineinthefile { line~slt;(S)gt;1g;matchingandreplacingall printFHOline;printtotheoutputfile } 步骤8close(FHI);closetheinputfile close(FHO);closetheoutputfile } fhi vav Perl是一种解释性语言,其脚本由声明(declaration)和语句(statement)两部分构成,在执行字符串的替换前后,有必要对字符串的搜索和文件的处理进行声明解释。步骤1调用opendir()函数打开目录句柄,从中读取文件数列,然后关闭目录句柄;步骤2是设置循环语句,依次处理各个文件,直至整个程序结束;步骤3跳过点文件(。),点点文件(。。)以及程序文件。pl;步骤4打开源文件;步骤5定义输出文件名为newfile(file指源文件);步骤6创建并将结果写入输出文件(表示写入);步骤7是整个程序的核心,while控制结构内,定义line为变量,用运算符~进行匹配,s函数进行替换(s把第一个变量替换为第二个)。Perl中自动定义出现的第一个()中的内容为变量1,即1,第二个()中的内容为变量2,即2,在这里,1指任何一个字符以上的非空格字符串(S),通过命令slt;(S)gt;1,文件中尖括号非空格字符串的组合,替换成下划线后加相同的字符串。语句末尾的g是Perl中的常用参数,表示匹配所有可能的模式,即所有符合条件的字符串都将被替换。需要注意的是,如果不添加参数g,Perl语句仅仅对符合条件的第一个字符串进行替换。之后替换结果打印到输出文件。步骤8关闭输入文件和输出文件。 将上述编辑的命令以另存为的方式选择后缀名。pl保存,保存完毕后双击文件,程序即运行。标注方式Doyouwanttogothere?lt;?gt;替换为 DoVBVyouPPwantVAVtoTOgoVBthereADV?? 如若下划线替换为尖括号仅仅把步骤7中的字符串前后颠倒即可。程序如下: line~s(S)lt;1gt;g;matchingandreplacingall 定义任何非空格字符串(S)为变量1,使用s函数替换所有含下划线字符串为尖括号内含相同字符串。将上述编辑的命令以另存为的方式选择后缀名。pl保存,保存完毕后运行该程序,DoVBVyouPPwantVAVtoTOgoVBthereADV?? 替换为Doyouwanttogothere?lt;?gt; (二)普通文本替换为XML文本 扩展标记语言XML(ExtensibleMarkupLanguage)是一门新兴的标记语言,可以自定义标签,轻松表达多层结构的数据,方便地与数据库中的表进行相互转换,使计算机能够很简易地读取和统计数据。XML文件内容和形式分离的特性,使文档的更改和搜索变得极为方便。鉴于XML文件的以上特征,大型语料库多以XML文件格式存储。下划线标注的普通文本可编写以下程序替换为XML文本。 程序3 line~s(S)(S)1lt;wgt;g;matchingandreplacingall XML使用表示单词的开始,表示单词的结束。其中开始标记括号中可以添加标签的特性,意思是随后的单词标记为名词。定义下划线前的单词为变量1,下划线后的赋码标记为变量2,使用s函数进行替换,使词类标记码提到单词前面开始标记内,在单词之后添加结束标记。将上述编辑的命令以另存为的方式选择后缀名。pl保存,保存完毕后运行该程序 坚持VV和CC完善VV社会主义NN民主NN制度NN。PU 替换为: 坚持和完善社會主义民主制度。 在文本开头添加指令lt;?xmlversion1。0encodingGB2312?gt;(XML支持多种语种,GB2312指简体中文),添加文本开始标签和结束标签,以及等元数据,XML文档就替换完成了。 四、结语 以上探讨了Perl语言辅助语料库文本处理的两种情况,这仅仅是Perl语言在语料库应用中发挥的少许作用,Perl语言的强大功能有待于进一步的探索。总之,Perl是一种强大脚本语言,快捷实用,支持正则表达式,是处理字符串的一把好手。 注释: iICTCLAS:InstituteofComputingTechnology,ChineseLexicalAnalysisSystem中科院汉语词法分析系统 【参考文献】 〔1〕Conway,D。PerlBestPractices。OReilly公司编译。Perl语言最佳实践〔M〕。南京:东南大学出版社,2008。 〔2〕Hoffman,P。PerlforDummies(3rdedition)。杨皓译。轻松学用Perl〔M〕。北京:电子工业出版社,2001。 〔3〕Hunston,S。CorporainAppliedLinguistics〔M〕。Cambridge:CambridgeUniversityPress,2002。 〔4〕Kennedy,G。AnIntroductiontoCorpusLinguistics〔M〕。Beijing:ForeignLanguageTeachingandResearchPress,2000。 〔5〕MartinC。PerlProgrammesReference。何黎芳等译。Perl5语言命令详解〔M〕。北京:电子工业出版社,2001。 〔6〕Thackeray,W。M。VanityFair。杨必译。名利场〔M〕。北京:人民文学出版社,1957。 w