海量标注语料库智能构建系统的设计与实现

2022-01-21 10:30杨静姜赢朱哲宇
现代计算机 2021年33期
关键词:语料语料库专家

杨静,姜赢,朱哲宇

(1.北京师范大学人文和社会科学高等研究院,珠海 519087;2.北京师范大学珠海分校,珠海 519087)

0 引言

随着自然语言处理技术的进步以及大型语料库的不断丰富,中文信息处理领域取得了丰富的研究成果。这其中尤为突出的是基于机器学习、深度学习等方法的深入应用,在中文分词、词性标注、语义分析、主题提取、自动问答系统、机器翻译、文本聚类等方面都取得了较好的效果。但对于半监督、有监督的算法而言,网络模型的训练往往需要海量正确标注的语料作为样本,通过学习之后才能具备对未知数据的预测能力。例如最新的自然语言深度学习模型GPT-3[1],该模型通过对将近0.5万亿个单词进行预训练,可以很好地完成翻译、自动问答甚至生成连贯的文本段落。虽然目前已经出现了各种自动文本标注算法,但由于中文词义的复杂、多变,无论哪一种标注算法都无法达到100%的准确率。特别是在语义、语用和话语研究中,单纯依靠计算机的自动判别无法达到研究所需的精度,因此海量的高质量标注数据对于中文信息处理是不可或缺的研究素材。

语料库是自然语言处理的重要数据支撑平台,大量带标注的结构化语料能够帮助研究者对语料库信息进行深度挖掘,并实现语料的增值[2]。目前国内大部分语料库都存在规模偏小、语料陈旧、标注单一、开发周期过长等缺陷。例如:北京大学计算语言研究所构建的1998年人民日报语料库无论在学界和业界都有巨大的影响力,但是随着时间的推移,该语料库的时效性、完备性和覆盖度均需要进一步的更新和补充。然而建设一个海量标注语料库是一项非常巨大的系统工程,从原始语料的采集、整理、存储、分发、标注到语料库的后期维护都需要大量的人力与物力。语料库标注是“为了提高计算机处理自然语言能力而向文本添加元信息的过程”[3],这里的元信息一般来说包括文本的词性标注、句法分析、音韵标注、语义标注、语用标注、话语标注、文体标注、词语标注等[4]。语料库标注按标注内容可以分为:一般语言学知识标注、实体知识标注和特定语言任务标注[5]三类。标注阶段由于算法标注和人工标注都无法达到百分百的准确,是语料库建设中最为耗费人力和时间的步骤。传统的以人工为主的语料库开发方式已经逐渐不能适应海量语料库的开发需求,目前很少有研究者从事专门的标注语料库标注系统研究,已有各种标注系统大多是针对某一专门的领域,例如计算机视觉领域中的静态图像行为标注系统[6];或者是用于完成某种特定的自然语言标注任务,例如WASA[7]是一个用于专门处理多语语码转换的标注系统。一个完善的语料库标注系统除了应该能够高效的完成大规模语料数据的标注任务,还需要易于扩展以支持不同的标注类型。因此本文中的系统主要是针对大型语料库中的中文分词与词性标注任务,而其他类型的标注问题也可以参考借鉴本系统。

针对以上问题,本文通过构建基于海量语料库的智能标注系统,旨在提供一套完整的海量标注语料库开发方案,为语料库开发者提供了从语料的采集、分发到存储、标注以及统计分析等各项功能。系统采用B∕S架构,通过三级标注来保证标注的准确率和标注效率,并内置三个用户自定义的标注参数以适应不同的语料库标注任务,除此之外,系统还通过专家错误反馈机制、词性查询字典、标注用户留言等功能来辅助标注。使用该系统可以大大缩短海量标注语料库的开发周期,并降低语料标注的人工成本。

1 系统结构与设计

1.1 系统基本架构

系统主要包括语料导入、导出模块、语料派发模块、预标注模块、众包标注模块、专家标注模块、错误反馈模块、查询模块、留言模块以及数据统计模块。系统具备易开发、易维护、易扩展的特点,方便语料库开发人员进行系统配置以及后期的系统维护与更新。语料库开发者可以根据不同的语料标注任务进行系统参数配置以获得最优的标注效果。系统遵循MVC设计思想,采用J2EE技术,构建B∕S架构;采用前后端分离模式,前端使用React框架作为数据展示实现,后端使用Spring Boot框架来搭建系统;数据存储采用MySQL和Elasticsearch相结合,除了能满足数据存储需求还能提供海量数据的快速搜索、统计分析和数据探索功能。系统使用MyBatis-Plus作为数据持久层框架;Spring Security作为认证服务框架,实现基于RBAC模型的权限控制。系统基本架构如图1所示。

图1 系统架构

1.2 系统功能模块介绍

为了满足海量标注语料库的开发需求,系统主要包括十个功能模块,分别属于服务器端功能模块和客户端功能模块。

1.2.1 服务器端功能模块

(1)导入、导出模块。批量或者单独导入或导出不同格式的原始语料,并预留接口可以直接连接外部语料采集系统。

(2)标注者评价模块。对标注用户进行标注能力测试、评分,并根据评价结果进行标注用户筛选。

(3)预标注模块。利用自动标注算法对原始语料进行预标注。

(4)语料派发模块。对原始语料进行分割后派发给不同的标注用户进行标注。

(5)数据统计模块。对语料标注情况进行统计分析。

1.2.2 客户端功能模块

(1)众包标注模块。众包标注用户对系统所分配的语料进行标注。

(2)专家标注模块。专家标注用户对系统判定的疑难语料进行标注。

(3)错误反馈模块。专家用户在标注过程中纠正错误标注的结果并反馈给预标注算法和众包标注用户。

(4)查询模块。标注用户和语料库使用者可以对标注情况以及语料进行多维查询。

(5)留言模块。用户可以将在使用过程中所遇到的系统使用、标注问题等相关信息反馈给系统开发者。

在语料标注的过程中,系统采用三级标注的方式对语料进行标注,可以同时保证标注的准确率和效率,标注的具体流程如图2所示。

图2 语料标注流程

2 系统关键算法介绍

根据不同的建库目的,语料库中语料来源有不同的种类,主要包括:报刊文章、文学作品、广播电视转写、微博、科技论文、教材等等。由于版权保护的原因,语料库的语料一般不能以全文方式显示,而是以单个句子、词、字的形式进行统计分析和规律展示。在语料标注任务中,语料库开发者希望将同一个标注任务尽可能分散的分配给不同的标注用户以避免版权纠纷和敏感语料的泄露。因此系统需要首先将完整的语料全文按标点符号切分成若干句子再以单句为最小任务单位进行分发。另一方面,为了提高人工标注的准确率,系统采用冗余标注的方式,即一个标注任务分发给多个众包用户进行标注。

基于以上两点考虑,系统给出了一种简单、高效的标注语料派发算法。系统接收两个用户自定义参数:最小语料间隔和冗余标注数量。首先将系统中的原始语料进行分句处理,并记录每条语料的位置信息,例如(i,j)表示第i篇文档中的第j句语料,再将所有语料随机打乱顺序。系统将每一条语料分配给预定数量的标注者之后,遍历整个分配结果,如果发现同一个标注者的相邻两个标注语料属于同一文档且位置间隔小于预设定的最小语料间隔则进行重新分配直到所有分配结果满足最小间隔的要求。

由于系统采用了三级标注来处理标注任务,为了区分不同标注阶段的语料,语料设有以下5种状态:未标注、预标注、众包标注、专家标注以及成功标注。原始语料的状态为未标注,由算法自动标注完成后语料状态由转变为预标注。系统将预标注状态的语料分发给众包标注者进行众包标注,语料状态同时被设置为众包标注。

系统基于多用户的冗余标注,每条语料会派发给多个众包用户进行标注,再根据众包标注的中间结果来决定如何进行下一步的语料标注派发。引入三元组<m,n,k>来标记语料标注的中间结果:其中的m代表最大相同众包标注结果数量,n为不同众包标注结果数量,k为语料跳过总次数。具体标注过程如下:标注者首先对接收到的语料标注任务进行评估,如果认为该条语料的标注过于困难则可以选择直接跳过,语料的中间状态更新为<m,n,k+1>。如果众包用户选择进行标注,系统在用户提交结果后进行多用户标注结果的对比,并更新最大相同语料标注结果和最大不同语料标注结果。例如三元组<3,2,2>表示该语料的标注结果中有3位用户标注一致,有2种不同的标注结果,且曾经被2位用户跳过标注。

在大多数应用场景中,如果多位用户给出了完全相同的标注结果,可以直接接受该结果,而如果同一个标注任务出现多个完全不同的标注结果,则可以认为该标注任务存在歧义,属于较难的标注任务,而如果同一个标注任务多次被标注者选择跳过,则可以认定该标注任务属于困难任务。系统设定三个自定义参数:验证接受次数、验证拒绝次数和最大跳过次数,分别对应语料状态三元组中的三个值。用户可以根据实际应用中语料标注的难易程度自行设定参数大小,系统判定逻辑为:如果m值大于验证接受次数,系统将认定该条语料为成功标注;而如果n值大于验证拒绝次数,系统将认为该条语料未通过交叉验证则不再分发给众包用户而是直接发给专家用户进行标注;如果k值大于最大跳过次数,则系统自动将该条语料设置为疑难语料,疑难语料也直接发给专家用户进行标注。系统语料派发的优先级由以下规则确定:人工标注状态的语料优先级高于预标注状态的语料,而同样为人工标注状态的语料则根据状态三元组中的m值确定,m值越大优先级越高。这种语料派选方法倾向于将系统中已标注过的语料优先处理完毕,然后再对未标注过的语料进行标注,可以有效防止系统中产生大量未标注完毕的语料。

3 系统主要功能模块

3.1 人工标注

人工标注包括众包标注和专家标注两部分,在语料预标注的基础上,为了最大限度提高人工标注的语料产出效率,系统提供了两种人工标注方式:选择模式和输入模式,标注人员可以根据自己的标注习惯与偏好选择合适的模式进行标注。

选择模式尽可能减少人工标注过程中的键盘输入,标注用户只需要点击选择框进行选择就可以对语料进行标注,不需通过键盘输入词性。标注页面如图3所示。

图3 选择模式核心标注界面

系统根据系统对语料的标注结果,通过正则表达式,将语料以“词∕词性”的模式进行拆分显示,标注界面上方显示原始语料,语料正下方按系统分词结果进行切分显示下拉菜单,标注人员在对应位置进行词性选择。点击词性框会弹出词性的具体选择模块,词性通过二级菜单实现分类展示,用户点击词性选择框,首先弹出词性类别选项,点击具体词类后,会弹出该类别下的所有词性,复合词的词性则在最后一个语素的下方选择词性。

输入模式则由用户从键盘输入,采取了“原句-系统标注结果-文本输入框”的展示模式,用户首先检查输入框内完整的系统标注结果标注,然后从键盘输入对预标注的结果进行手工修改。标注界面如图4所示。

图4 输入模式核心标注界面

系统标注结果以“词∕词性”的方式显示,标注人员需要对文本输入框中显示的系统标注结果中标注错误的地方直接进行修改。输入模式允许标注人员在输入框中自由修改文本,为了避免标注人员误输入的数据格式错误,标注人员完成标注后,点击“提交”按钮提交标注语料,系统会采用正则表达式按照“词∕词性”的组合形式对输入框中的标注内容进行检测,若格式不正确,则系统拒绝标注结果,并给出提示提醒标注人员重新检查标注结果。

两种标注方式各有优势:选择模式无需标注人员从键盘输入,便于标注人员利用鼠标快速选择正确词性,同时选择框限定了数据输入格式,从而避免了标注结果中的数据格式错误;而输入模式中字与字之间的连接更为紧凑,在整体视觉上更为友好,便于标注人员快速阅读带有分词结果的语料,提高理解效率。系统的运行结果反馈表明大约60%的标注人员选择使用输入模式,而40%的标注人员选择使用选择模式进行标注。

3.2 专家错误反馈机制

专家用户作为标注任务中的权威用户,其主要任务是对少量疑难语料进行标注,专家用户标注后的语料将直接被接受为正确标注的语料。本系统借鉴主动学习[8]的优化思想,结合专家标注来进一步提高标注系统的标注质量。主动学习是通过对一些较难学习的样本进行人工专家标注后再利用这些样本训练以提高模型的精度,而专家对疑难语料的标注结果可以作为正确标注的学习样本反馈给众包标注用户以及预标注算法,从而提高整个标注系统的标注质量,具体如图5所示。

图5 专家错误反馈机制

众包用户在标注过程中遇到疑难语料可以选择跳过,在专家用户对该条疑难语料标注完毕后,专家的标注结果会在众包用户下次登录系统时推送给跳过此条语料标注的众包用户。另一方面,众包用户在标注过程中如果有关于语料标注的疑问可以进行系统留言,之后由专家进行留言反馈,这种定向的错误反馈机制可以有效提高众包用户的标注质量。

在算法标注阶段,专家标注的语料同样可以反馈给算法以改进算法标注的准确性。以HanLP分词为例,HanLP提供了多个离线词典作为分词依据,这些词典是可以用户自定义的。在专家标注过程中,专家可以向系统提交未登录词,系统自动将该词整理成词典格式并修改HanLP的离线词典。系统运行结果显示,该功能可以较好地解决未登录词的识别问题。

3.3 辅助标注功能

系统提供了词性字典供标注人员在标注过程中对某个词的词性进行查询。查询结果中除了显示查询词的各种可能词性,还能显示该词在系统中已成功标注过的词性以及对应的次数。如果当前标注的语料是已标注但未通过交叉检验的状态,则在页面下方还会展示出其他标注人员对该语料的标注结果。如果有多个标注结果,则系统选择两条不一样的结果分别显示,并且以标红的方式对比显示出标注结果中的差异之处。在词性标注任务中绝大部分标注错误都集中在某几种容易混淆的词性上,例如:动词s(V)和名动词(Vn),因此标注人员往往只需要重点关注这些易混淆词。这种标注参考方式使得标注人员可以快速定位到语料中歧义词的所在位置,也可以在一定程度上提高标注人员的效率。

图6 词性字典及标注结果对比界面

为了增加标注人员之间以及与专家用户、管理员之间的交互便利性,系统提供了留言功能。众包用户点击左侧菜单栏中“语料库标注”模块下的“留言”栏目可以进入留言列表。众包用户对某条语料有疑问、评论或对系统有相关建议等,都可以在留言界面发表。

为了便于语料库开发者随时了解语料标注情况,系统还提供了基于Elasticsearch的查询统计模块,系统管理员可以查看当前的总体标注趋势与标注情况。总体标注趋势以折线图的形式显示最近七天内每日的标注总量,众包标注情况以列表的形式展现,显示标注人员的序号、用户名、最后标注日期、最后一天标注的数量、最后一次标注前7天的标注量、标注总量,并按照用户的标注总量进行倒序排序。通过该模块系统管理员可以快速了解各标注人员的标注进度,配合趋势折线图还能充分了解语料的详细标注情况。

4 结语

本文针对海量语料库标注工作,设计并实现了基于三级混合标注的语料库标注系统。语料库开发者可以利用该系统快速获得高质量的标注语料,系统主要优点体现在以下几方面:①算法预标注、众包标注和专家标注的三级标注保证了系统标注的效率和准确率。②语料状态三元组能准确描述语料在系统中的状态并为语料分发和流转提供依据。③用户自定义参数的设定使得系统可以适应不同的标注任务。④专家错误反馈机制进一步提高了系统标注质量。⑤两种人工标注界面为用户提供了偏好选择,用户使用界面友好。

猜你喜欢
语料语料库专家
致谢审稿专家
浅谈视频语料在对外汉语教学中的运用
基于语料库翻译学的广告翻译平行语料库问题研究
可比语料库构建与可比度计算研究综述
运用语料库辅助高中英语写作
如何使用第二外语学习者语料
请叫我专家
专家面对面
语料库与译者培养探索
英语教学中真实语料的运用