分享

语料库技术在手 科研方法不再愁

 西北望msm66g9f 2018-08-19

刘国兵

河南师范大学外国语学院副院长、硕士生导师、博士、校聘教授、语料库应用研发中心学术带头人。研究领域为语料库语言学及英语教学。现任中国语料库语言学研究会常务理事,全国中学通用教材《英语》(新标准CD-ROM)核心编委、河南省教师教育专家、河南省中等职业教育师资培训专家。主持国家社科基金项目、教育部人文社科项目、中国外语教育基金重点项目、河南省哲学社科规划项目、“十二五”教育科学规划项目等多项国家及省部级项目;在国内外期刊上发表学术论文30余篇;出版译著2部、教材8部。


吉洁

博士、外交学院英语系讲师,研究领域为语料库语言学与应用语言学。获北京外国语大学中国外语与教育研究中心博士学位,期间赴剑桥大学联合培养。主持北京社科基金项目1项、中央高校基本科研项目2项,参与国家语委重大项目、国家社科及教育部人文社科项目4项。出版专著1部,在LINGUA、《外语电化教学》等期刊上发表论文数篇,参与编写著作2部。


课前思考题

1. 形符与类符的区别?类/形比(TTR)与标准类/形比(STTR)的区别?频率和频数的区别?


请大家先看下图:


如上图所示,token即实际库容,而type是一种不重复的计数方式,两者之比即TTR,是衡量[词汇密度/丰富度]的常用标准。譬如两篇同是200词的英语作文,A篇TTR为70,B篇为90,可认为B篇用词更丰富。但若两篇长度不一,如A篇200词而B篇2,000词时,不可直接对比TTR。这是因为词汇储备量及丰富度主要体现在实义词上,但随着篇幅增加,写作中不可避免的功能词(如the, a, of, and等)会不断重复,这会稀释整体的TTR。因此,篇幅不一时要对TTR进行标准化,计算每百词(根据长度可调整为每千词、每万词)的平均TTR,即STTR。

上述token, type,TTR是针对全文本的容量而言,而频率(frequency)和频数(frequencies)是针对某一词(组)在文本中的概率而言。与TTR和STTR的区别类似,频数可理解为raw frequency,即实际的次数。针对同一个语料库,可直接对比两个词的频数,如在BNC库中man出现20万次,woman出现10万次,因此man比woman更常用。但若两库库容不同,则需要将频数标准化后(每千词、每万词等)再进行对比。即:

例如,有两个语料库,一个为男性口语语料库(总词数为10,000),一个为女性口语语料库(总词数为100,000)。其中填充停顿词er在两个语料库中分别出现100次和600次。那么对比其每百词的标准化频率(下表),可看到虽然er在女性口语中出现频数较高(600>100),但频率较低(0.6%<>


2. 能否举出一些例子,来展示搭配、类联接与语义韵的区别?


搭配(collocation)、类联接(colligation)和语义韵(semantic prosody)像是针对节点词周边环境的三级窥镜,分管词语、语法和语义三个层面。

例如在上图中,节点词cause周围的词都可称之为其搭配,如the root cause of problems和dental X-rays can cause cancer等。类联接便是针对这些搭配的一个词类和语法上的归纳,如上图中蓝色下划线的搭配可归纳为[modifier + cause as N + of/for + Noun]这样的类联接;而褐色下划线的搭配可归纳为[Noun ( + Modal Verb) + cause as V + Noun ( + to do)]这样的类联接。在第二种类联接中(即当cause作动词时),我们还可以对其后面的Noun的语义层面作出归纳,如下图:

语义层面的归纳其实分为两种,语义倾向(semantic preference)是对semantic feature/field的提炼,例如上图中global warming, pain, delays, crashes, angina, bubbles, destruction, problems, bad behavior, cavities等可以概括为一种[phenomenon/event/situation]。而语义韵则是一种evaluative or attitudinal的提炼,例如上述搭配词都属于一种[BAD] phenomenon/event/situation。


3. 请分别从html网页(如新闻)和pdf书籍(如学术)中选取部分语料,建立两个txt文档,从中找出这两种语料来源中常见的“非法”格式,并尝试进行整理。


从html和pdf书籍中粘贴而成的txt中常见的有三种非法格式:全角符号、中文符号和空格。如下图中红色所示:

这三种非法格式会直接影响到检索、标注和分词时的正确性。譬如在第一行中,全角的this和空格不会被识别,而整句话会被识别成“is Jim, Thatis Tom”。同样,中文标点也不会被识别,因此第二三行便变成“This is JimThat is Tom”和“Jim is Toms brother”。缺少空格也是很大的问题,在第四行中“Jim.That”会被当作一个词被检索和标注。

 

从pdf直接转换或复制粘贴过来的txt,还常见断行和单词换行这两种问题。如下图所示,非正常断行会切断本来相连的词组,而目前检索软件不支持断行式检索,这会影响到诸如look forward和take place这种词组的检索与统计,其处理方法是删掉这些非正常换行符(↓)。然而即便删掉换行符,单词换行还是会有问题,会变成for-ward或for- ward这种词,因此还要针对这些词进行处理,删掉其中的连字符。

对于以上常见问题的清理,我编写过一个适用于PowerGREP的“Text Cleaning Library”,可以较全面地清理常见文本问题,里面有详细说明,熟悉PowerGREP的朋友可以从http://corpus./channels/tools下载试用。


4. 请根据2.4.3中介绍,分别使用CLAWS4网络试用服务及TreeTagger软件,对你刚才建立的语料进行词性赋码,并试对比这两种软件的赋码异同。


CLAWS和TreeTagger为两款常见的自动赋码软件,CLAWS可以在线免费试用,但限制语料长度,而TreeTagger完全免费。如果大家有尝试用这两款软件赋码同一篇文章,会发现赋码有很多不同。其实,参考本书后的附录一和二,可以详细对比出这两套赋码集(tagset)的异同之处。

 

譬如,两者对动词的赋码较为相似,都以V开头,中间字符都有B(代表be动词及变体)、D(do及变体)、H(have及变体)以及V(代表实义动词)这四种情况。不同之处在于CLAWS的中间字符还有M(代表情态动词),而TreeTagger的情态动词是直接用MD表示的(注意MD在CLAWS中表示序数词)。

 

至于第三个字符,两者也都有D(代表过去时态)、N(过去分词)、G(现在分词)、Z(-s屈折)这四种变体,不同之处在于CLAWS还有一种I(不定式)和0(原形),而TreeTagger还有一种P(现在时态)和无第三字符(原形)的情况。值得注意的是,CLAWS中的不定式(V*I)其实相当于TreeTagger中的原形(V*),而CLAWS中的原形(V*0)相当于TreeTagger中的现在式(V*P),其对应关系可见下表所示。

了解动词的赋码规律,对于检索中正则表达式的编写十分有用,因此建议大家将上表尽量记住。除了动词外,CLAWS和TreeTagger在其他词类的赋码上也有很多不同,整体来讲,CLAWS的赋码更详细,譬如就人称代词(PP)而言,TreeTagger只有一类,而CLAWS细分为13类。具体选用哪个软件,要看不同研究内容对细致程度的要求,还要考虑付费免费之别。


5. 通过上一题中对CLAWS和TreeTagger词性赋码的观察,尝试编写一个简单的正则表达式,在你之前建立的新闻和学术语料中,使用AntConc检索出所有的情态动词。


这个操作的目的是利用上述赋码规律,练习对不同词类词语的检索。譬如,使用CLAWS对语料赋码后,对赋码后的语料使用AntConc进行检索,勾选Regex并输入正则表达式\S+_VM,可以检索出所有的情态动词,如下图所示:

如果是使用TreeTagger赋码,将VM改为MD。建议大家根据附录一、二中的赋码集,以及书中第17—18页的表1.5,尝试编写不同的正则表达式,来实现不同的检索目的(例如检索过去完成式、否定式、人称代词+情态动词+实义动词等)。如若觉得难度较大,可以根据书中65页对Pattern Builder中的介绍,尝试在其辅助下进行正则表达式的编写。


读者之前的提问

1. 请问“频率”和“概率”这两个概念的区别是什么?


如果说概率是一个抽象概念的话,频率或频数可视为其具体表现。“语料库语言学的目的之一是解释各种语言现象是否可能发生及其发生概率的大小(Kennedy 1998: 270)”,这里面的“大小”就由其具体频率来体现。

 

譬如,当我们说某些词越来越常用时,就是一种概率性论断,这种论断有赖于具体频率的支撑(假设“立flag”一词在2014年语料中出现1次,2016年出现100次,2018年出现1,000次)。基于概率的研究有别于基于规则的研究,体现了经验主义的哲学观和实证的研究方法,而频率是其具体的实证数据。


2. 能否简要介绍下基于语料库的研究和语料库驱动的研究的异同点?


语料库语言学从20世纪50年代以来,发展到现在,可以说各个领域都在使用语料库的方法。甚至从一开始都反对语料库语言学的Chomsky,近些年来在谈到语料库语言学时,口气都比以往缓和多了。因为语料库应用如此之广泛,恐怕在20世纪语料库语言学刚刚萌芽时谁也没有想到。使用得越广泛,内部逐渐就会出现不同的认识、观点,这是很自然的事情。所以我认为,语料库语言学内部阵营的分化,恰恰反映了语料库语言学空前的发展与繁荣。

 

虽然同属语料库领域的研究,从方法论来讲,不存在本质上的差别。但具体到操作层面,基于语料库的研究与语料库驱动的研究,在很多方面还是存在不同的,国内外有很多学者对此也专门做过探讨。从国际范围来看,语料库驱动的研究,建议大家看一看以Sinclair为代表的伯明翰学派(部分学者不同意这么称呼,为了表述方便,这里暂且这么表述)学者们的研究,基本上属于典型的语料库驱动研究。那么基于语料库的研究,建议大家看一看兰卡斯特学派以及北欧的一些学者的著述,他们中的多数属于基于语料库的研究。其实大家不用去做深入对比,拿来他们的文章或专著,甚至从摘要或目录就可以看出二者的异同。

 

作者在本书178—183页也给予了较为详细的解释,建议感兴趣的老师仔细阅读该部分内容,这里不一一赘述。


3. 如何提取语篇中的搭配词,不是某个词的搭配词?


我猜想,这位老师说的意思可能是要提取某一个语篇中的常用搭配(借用本书的说法,叫N-Gram)吧?也或是语篇中的固定短语。后者与前者情况类似,只不过是前者的一个特例。因为所谓搭配词,我们通常说的就是词语之间的搭配,有时候也会扩展到词类、语法结构等,比如类联接。

 

如果要提取某一语篇中的N-Gram,不论高频还是低频,也不管N是几,都可以通过语料库索引软件实现。比如书中提到的AntConc,你可以在该软件中设置具体的值,比如2词序列、3词序列等,以此类推。


4. 在使用卡方或者对数释然率进行显著性差异检验时,为什么比较的是频数而不是标准化频率?


先借用一下参考题1中的例子:一个为男性口语语料库(总词数为10,000),一个为女性口语语料库(总词数为100,000)。其中填充停顿词er在两个语料库中分别出现100次和600次。然而,对不同大小语料库的对比中,要使用标准化的频率,而非频数。通过对比每百词的标准化频率,可看到虽然er在女性口语中出现频数较高(600>100),但频率较低(0.6%<>

 

当对两个语料库中某词的频数进行对比时,这两个库可看作自变量,词语频数可看作因变量。我们要查看差异是否具有显著性,便是检验两个变量间是否具有独立性,因此这是独立性检验,一般采用表格的形式来记录调查结果,所以又称联列表contingency table分析。对上述例子画表如下:

像上表这样的2*2联列表,有一个简易的卡方公式:

将上标数据代入计算,可得23,此时自由度为(2-1)*(2-1)=1,显然卡方值落入了p0.001=10.83的右侧拒绝域,有显著差异。其实对大多研究者而言,无需知道如何利用公式进行计算,只需使用书中94页推荐的Chi-square calculator或Log-likelihood Ratio Calculator这两款软件即可,将原始频数和库容分别输入,会自动生成卡方/对数似然率值及显著性p值。


5. 使用MS Word对文本进行话语结构附码时,标注方案中名称对应的码是完全可以自己随意编写,还是有一定的编码要求?书中的例子【拼写错误的码】看上去有些复杂,这个代码是根据什么编写出来的?


使用MS Word对文本进行标注,其实是借用“宏”(就是Macro)功能或“自动图文集”来帮助我们进行手动标注,我把这种标注方式称之为“机助人工标注”。与人工标注相比,它的优势在于,可以让原本复杂的文字或符号输入变得简单易行,设计为特定的按钮之后,我们就可以点击按钮来实现标注,而不用每一次都手工输入。因为标注是一项极为繁琐且很枯燥的工作,时间长了,免不了会出错。

 

至于编码体系,这都是研究者自己来设计的,但有两个原则我们需要遵循:一是方便自己操作、识别与记忆。也就是说,设计的编码不可以过于简单,也不能过于复杂。因为过于简单,可能表达不了那么多的信息,很多信息你无法标记上去;而过于复杂,又不利于自己记忆,所以在进行标记时会由于记错而出现标记错误。这些属于原始性错误,建库过程中切记尽量避免此类错误,因为修改起来工作量巨大。


第二个原则就是方便研究者使用。因为你花了很大功夫标记好以后,自己能看明白,也一定要让别人看明白,尽量做到user-friendly,以方便他人使用。

 

书中的例子“拼写错误的码”,这个也并不复杂。这种格式是给计算机读的,标记得越详细、越规范、越精确,计算机的处理与检索就越准确,计算机不怕累。但人不一样,还是简单为好。所以作者在第40页最后一段做了说明,大概意思就是要把复杂的代码简单化。所以就出现了利用MS Word的“宏”及“自动图文集”来进行机助人工标注。

 

总之,代码不可以随意编写。我们随意了,计算机可不会跟着我们随意,它是个很认真、很严肃且“一根筋”的东西。


6. 请老师以30页图2.7为例,介绍一下标准的XML标注格式。



该书第30页的文字表述如下:“图2.7的文本使用了标准的XML标注格式,即每个词形……”,作者的意思是图2.7的标注很规范,也很标准,它属于XML格式。如果标注采用XML标注格式,其实不存在标准不标准的问题,因为你的标注如果不标准,也就是说对于标签的使用不规范,那么检索时会出问题,可能后期检索过程中,很多东西你检索不出来。


XML 指可扩展标记语言(Extensible Markup Language),与我们制作网页时的HTML(Hyper Text Markup Language)类似。前者主要是为传输和储存数据设计的,它没有固定的标签,在使用时我们必须自己设计标签。后者主要用来显示数据,比如网页。也就是说,使用者不一定非要了解标签的制作过程和原理,只要打开能显示就行了,所以后者的关注焦点是数据的显示形式。

 

BNC语料库采用了XML标注方式,因此非常方便使用者进行检索。它的最大特点就是每一个标签都放在一个<>内,且每一个标签有开始标记,也有结束标记,这是对应的。结束的标记用“/”来表示。比方说你在设计标签时,只有开始,而没有结束,那么软件在检索时,该标签就检索不出来。

 

这里我借用XML教程中的一个经典例子,我们来看一下XML标注到底是什么。比如Tom想提醒Mary不要忘记上课,因此写了一个便条,但存储为了标准的 XML格式:

 

Mary

Tom

Reminder

Don't forget the class!

 

是这个便条的开始标记,是该便条的结束标记。这就是告诉计算机,这两个标签中间的东西,就是我要写的note,即便条。大家肯定能明白,就是谁写的,写给谁看,同样既有开始也有结束。如果Mary这一行缺少了结束标记,或者你少写了一个“/”,写成了Mary,那么计算机同样检索不出来Mary。是标题,是便条内容。从最基本的开始,一步一步深入,我相信大家会成为XML高手。

 

对于BNC中的标签,作者在第31页也进行了解释,我们通过阅读可以略知一二。但如果想详细了解BNC的标记内容,还需要查阅BNC的使用手册,里面有详细的解释。此外,如果您对XML语言比较感兴趣,可以阅读相关的XML教程之类的书籍,对于语料库爱好者来说,学习它并不困难,只要你从最基础的开始,一步一步来就行。


7. 请老师介绍在AntConc软件下,如何在检索中设定语境条件。肯定语境条件和否定语境条件分别是什么意思。


语境条件可以理解为对节点词进行检索时所设定的搭配环境,通常需要使用正则表达式来编写检索条件。例如,because为节点词,后面[跟of]或[不跟of]都可视为其语境条件,前者为肯定条件,后者为否定条件。

 

当我们想研究because+从句时,因为从句的第一个词很难确定(因为很多省略了that),这时可以使用排除法,先把because of + N的情况排除,这就叫做否定条件。通过使用because\s(?!of)这个正则表达式,在AntConc中进行检索。下图是检索结果,对R1进行sort,可看出结果中完全没有of。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多