一、众包技术
众包技术是数据采集技术之一,是一种分布式问题解决和生产组织模式,也是多人协作执行数据收集与处理的工作机制。众包这一概念由美国《连线》(wired)记者杰夫·豪(Jeff Howe)在2006年6月首次提出[33],后来逐步传播并被大众接受。众包有两类不同方法,一类是借助众人的行为,另一类是利用众人的智力。第一类数据的产生和收集被视为个体行为在网络或者其他网络环境的副产品,侧重于收集人类活动所产生的有用信息,用户在线行为被用来预测其意图或者发现其兴趣,也有助于理解现实世界的事物或趋势,在舆情监测或新闻发掘方面为决策者提供数据支撑,如谷歌研究人员通过侦测用户搜索请求中关于流感症状与治疗的记录,准确地监测流感在特定区域的爆发情况;第二类则是小团体被组织起来共同从事一件工作或解决某一问题,一般会主动设计在线活动来诱使人们提供有用的数据并加以处理,如美国卡内基梅隆大学曾设计开发ESP游戏,玩家通过列出描述图像的词汇在游戏中得分,对图像的标注将辅助以后的图像搜索查询。
数据作为人工智能与数据挖掘的基本素材,大容量数据是机器学习等人工智能技术的原始资料。一些特定的素材,如大容量的普通人语音信息和照片图像等都需要人为采集,众包技术能很好地解决这一难题,目前国内IT巨头已有众包平台,如阿里众包、百度众包等,国外亚马逊公司设计开发了微任务众包平台Amazon Mechanical Turk,成千上万的人利用这一平台完成任务。冯剑红等人对众包技术进行综述,指出众包通过整合计算机和互联网上未知的大众来完成机器单独难以处理的任务,自2009年开始,众包得到了各个领域的广泛关注,包括人机交互、信息检索、机器学习、数据库、人工智能、计算机理论等,已经逐渐成为一个新研究热点,在基础理论和工程技术方面向科技工作者提出了大量具有挑战性的问题,文中介绍了众包的基本概念以及工作流程,对众包在计算机领域中已有的研究工作进行综述,基于众包工作流程,从众包任务准备、任务执行和任务答案整合3个方面综述了现有技术研究以及存在的挑战,最后展望了未来可能的研究方向。[34]
众包的参与者一般是非确定的普通大众。参与者遵循自由自愿的原则,对于给定的任务,他们有些会认真完成分配的任务,有些随意完成,有些没按时完成,这些状况都有可能发生,利用众包采集的数据质量很难保证,数据质量的度量面临一定的评估难题。张志强等人指出由于众包自由松散的组织模式,使得如何有效地控制质量完成任务,并将欺骗类型工作者识别出来,成为目前众包研究中一个急需解决的问题,文中基于对众包工作者提交结果的评估与分析,提出了一种阶段式的动态质量控制策略,同时给出了一个组合式众包结果质量评估方法框架,经过实际数据的测试,文中提出的质量控制策略和众包结果质量评估方法具有较好的效果。[35]唐思提出了基于工作者过滤和期望最大化的质量控制算法的两个阶段,在第一阶段,算法利用工作者应答时间和答案冲突作为反馈,对工作者进行评价并过滤恶意工作者,在第二阶段,算法通过采样算法设定初始值,并通过期望最大化算法,估计用户质量和任务的答案,得到高质量的聚合答案,该算法解决了传统算法中隐式反馈未得到有效利用、恶意工作者影响答案质量以及期望最大化算法初始值设定等问题。[36]
二、昆曲
昆曲是最古老的中国传统戏曲之一,有六百多年的历史,是集文学、舞蹈、音乐、武术、美术和戏剧为一体的艺术表演形式,它具有完整的表演体系,基础深厚,遗产丰富,曲词优美典雅,唱腔婉转动听,角色的表演方式细腻入微,在中国文学史、音乐史、舞蹈史、戏曲史上占有重要的地位,被人们誉为“百戏之母”。2001年,联合国教育、科学及文化组织(United Nations Educational, Scientific and Cultural Organization)郑重宣布昆曲入选世界首批“人类非物质文化遗产代表作”名录。昆曲是全人类宝贵的文化遗产。数千出的昆曲剧本在历史长河中被传唱,极大地丰富了人们的娱乐生活,昆曲曲谱遗产丰富,汗牛充栋,如在清代昆曲传奇《纳书楹曲谱》和《九宫大成南北词宫谱》两部巨作中,《纳书楹曲谱》包含昆曲单折戏360出,《九宫大成南北词宫谱》包含北曲597支,乐曲1841首,南曲1586支,乐曲2774首。而现代各昆剧团所演出的剧本数量有限,大量的昆曲曲谱需要挖掘与复用。
现存昆曲剧本大多以昆曲曲谱的形式存在,通常一首昆曲曲谱至少包含有剧本的标题、曲牌、谱字、曲词、念白等信息,如图2-2所示,昆曲工尺谱谱例是从五本昆曲剧本中任选一页曲谱的图像拼图,这五本分别是叶堂《纳书楹曲谱》,王锡纯、李秀云《遏云阁曲谱》,谢元淮《碎金词谱》,吕士雄、刘璜、唐尚信、杨绪《新编南词定律》和馆藏浙江图书馆古籍研究所的《西厢记》折子戏剧本。
图2-2 昆曲工尺谱谱例图像
观察图2-2的昆曲工尺谱谱例,图像谱面中的信息除了作者、标题、子标题、曲牌名等这些整首曲谱的宏观信息外,更多的是歌词和工尺谱谱字构成的音乐信息,这些歌词是古代常用的繁体汉字,而工尺谱谱字则以“合、四、一、上、尺、工、凡、六、五、乙”等基本音高谱字表示乐音,以“、”“×”“〇”“●”“Δ”等板眼谱字表示节拍信息。在谱面构成上,五张谱例的歌词间的记录顺序虽然都为从右到左、从上到下构成整首曲谱,但单个歌词和它的附属谱字的结构组织方式不同,图2-3抽象出了图2-2中各谱例的歌词和它附属的谱字的音乐信息在谱面上的组织结构,其中大圆圈表示一部分歌词,黑色小圆圈表示音高谱字,空心小圆圈表示板眼谱字,它们呈现三维结构,大圆圈为第1维,黑色小圆圈为第2维,空心小圆圈为第3维。
图2-3 昆曲曲谱的信息组织结构
三、昆曲可编辑语义文本语料库
现存的古代昆曲剧本都为纸质载体,这些纸质载体通过数字扫描仪等数字化设备可以转化为数字剧本,构成数据剧本的每页曲谱的存储格式一般为图像格式,和文本格式相比,图像格式是不可编辑的,文本格式的文件很容易利用文本软件打开和编辑,而图像格式的文件则利用图像软件打开进行绘图,无法进行文本编辑;同时文本格式的文件在统计分析和数据挖掘等方面远比图像格式的文件方便。许多程序设计语言对文本格式的文件都有标准的接口,方便开发人员对文件进行操作。
当然,可以利用人工智能的光学乐谱识别技术对工尺谱乐谱进行识别,并把识别结果存储为文本格式的文件,但是,在工尺谱乐谱模式分类的识别正确率评判中,需要把分类的结果谱字和此乐谱的标准谱字进行比较才能获得正确率,而标准谱字仍然需要人工输入并存储为文本格式,实际上就是分类识别的文本文件和标准文本文件相比较得到模式识别的正确率。而且,光学乐谱识别技术对工尺谱乐谱的谱字识别率较低[37],模式识别的文本文件仍然需要人工进行校正,总之,大规模、完整的昆曲剧本的可编辑文本的数据建设是当前昆曲这一世界非物质文化遗产数字化保护的基础性工作。
语料库是真实文本的集合,是大容量的原始文本数据的集中管理和检索的文本汇集,一般的语料库有针对性的主题,比如北京语言大学创建的古汉语主题的语料库,利用此语料库,利用关键词“三分损益”可以查询到在各类古汉语书籍中出现724条此关键词的记录,如其中1条内容为:“《证辨》曰:十二律循环相生,而世俗不知<U>三分损益</U>之数,往而不返。仲吕再生黄钟,止得八寸七分”,说明此关键词在《宋史》中出现。文本语料库还方便给原始文本内容进行标注,满足不同用户的不同需求,未标注的原始语料库,一般称为生语料库,而加了标注的语料库,一般称为熟语料库。
昆曲剧本语料库建设是昆曲数字化保护的基础性工作,它实现了对昆曲数据、文本的管理和使用,能提高信息的使用率,方便传播和检索。昆曲语料库的标注包括文本标注、声韵标注、音高标注、节奏标注、动作标注、唱腔标注等方面,特别是对语料库中工尺谱谱字的节奏标注,有利于未登录的昆曲剧本的工尺谱谱字节奏标注的智能化处理,利用数据挖掘中的人工智能技术,对未登录剧本的工尺谱谱字节奏进行标注,如采用五线谱或简谱的节奏表示方法对谱字的节奏进行标注,达到自动转换剧本中音乐信息的目的,为大容量的昆曲剧本的智能处理提供素材。
由图2-3可知,昆曲剧本的信息组织方式为三维结构,而一般的文本是一维线性的信息组织方法,这里采用文献第2章的昆曲曲谱的文本格式,即昆曲曲谱的可编辑语义文本方法:
(1)信息类别:歌词、音高符号(谱字)、节拍符号(板眼)、声调、其他符号共五类,其他符号包括作者、曲谱名、曲牌、调性、曲谱说明、题解等有完整语义信息的字符串;歌词与其他符号按线性顺序先后出现,音高、节拍、声调附属在歌词的周围,与歌词组成三维或二维树形结构。
(2)记录顺序:按曲谱从上到下、从左到右的歌词和其他符号线性顺序记录曲谱中的各类信息,对应原始曲谱中从右到左,从上到下的原有书写顺序。
(3)歌词和其他符号:其他符号与歌词之间、其他符号之间都用逗号“,”分割,如果在歌词之间或其他符号之间有多个空格,则用一个空格表示这些空格。
(4)音高符号:在歌词的后面加左右方括号“[]”,把附属的音高符号按先右后左、先上后下的顺序,依次线性放在左右方括号中间。
(5)节拍符号:如果音高符号附属有若干个节拍符号,则在此音高符号后面加上左右圆括号“()”,把这些节拍符号按先上后下的顺序放在左右圆括号中间。
(6)声调:如果歌词附属有声调符号,那么在歌词后面加上左右菱形括号“<>”,把声调符号放在菱形括号“<>”内。
(7)各类文本信息顺序:上述各类信息的先后顺序为:其他符号……歌词<声调>[音高符号(节拍符号)……]……[38]
图2-4 昆曲剧本的一页曲谱的可编辑语义文本
利用此方法对图2-2(a)进行语义文本表示,可以得到图2-4。
四、数据采集软件设计
由于昆曲剧本的信息结构为三维组织方式,有特定的可编辑语义文本方法,而一般的文本文件是一维的线性组织方式,所以一般的文本编辑软件不适合用于昆曲剧本的文本编辑,为了适应昆曲剧本的输入和后期的校正,方便用户输入,降低输入的错误率,昆曲剧本的数据采集软件须满足如下功能:
(1)剧本输入功能:根据昆曲剧本的曲谱,每页谱面按从右到左、从上到下的顺序逐列输入曲谱信息,为了输入方便,在输入界面上增加谱字列表,通过鼠标选择谱字列表中的谱字,直接输入到文本中,节省了输入时间。
(2)输入文本复制和保存功能:输入一页曲谱后,保存为文本文件,设计一按钮,把输入的文本信息复制到粘贴板,然后粘贴到一个空的文本文件中,并以剧本名+页码作为文件名进行保存。
(3)格式检查功能:在保存输入的昆曲剧本信息之前,检查输入的文本是否符合可编辑语义文本表示方法所规定的约束条件,如果不符合条件,则返回重新输入,否则直接把内容复制到粘贴板。
(4)功能说明:简要说明使用方法和约束条件,包括音高谱字和板眼谱字输入方法,遇到谱面中看不清或无法输入的歌词、汉字或谱字,用“?”代替等。
为了缩短开发时间,我们采用Microsoft Visual Basic 5.0作为开发工具,具体的实现步骤如下:
(1)新建一个VB工程,设置主窗体Form1的Caption属性值为“昆曲剧本输入”。
(2)在Form1上添加1个文本框控件Text1、2个列表框控件List1和List2、4个标签控件Label1~4和1个按钮控件Command1,设置4个标签控件的Caption属性值分别为“输入框:”“谱字:”“板眼:”和“功能说明”的内容,设置按钮的Caption属性为“复制输入内容”。
(3)按图2-5在主窗体Form1上分别调整每个控件的位置,左边为文本输入框,右上为两个并列的列表选择框,右下为功能说明标签和按钮控件。
(4)初始化主程序、主窗体和各个控件的参数和变量,主要全局变量为:
(5)为文本框控件Text1、列表框控件List1~2和按钮Command1控件设计事件代码,分别是Text1_Change事件、List1_Click事件、List2_Click事件和Command1_Click事件。(www.xing528.com)
图2-5 昆曲剧本输入软件界面
Text1_Change事件代码实现当文本框中有信息输入或修改时,检测是否在板眼谱字“|╳”的中间有其他字符,因为此板眼谱字是由两个符号“|”和“╳”构成的,在输入信息的时候容易不小心在这两个符号之间插入字符,实现的代码见附录【代码2-1】。此代码实现在输入文本的过程中,实时监测输入的板眼谱字“|╳”的两个字符中间有没有其他字符,如果有,则弹出“输入位置错误”提示框,当用户点击提示框的确定按钮后,这两个字符中间的其他字符就会被自动删除。
List1_Click事件和List2_Click事件代码实现当用户点击列表框的某一项条目时,把点击的条目内容插入到文本框中当前光标所在的位置,List1_Click事件实现代码见附录【代码2-2】,此代码先获取用户所点击的列表框条目的序号,然后从全局变量中提取出序号对应的条目内容,接着获取光标在文本框中的位置,并判断此位置的左右两个字符是否正好是板眼谱字“|╳”的两个字符,如果是,则弹出“输入位置错误”提示框,当用户点击提示框的确定按钮后,不插入任何内容,直接返回文本框,如果不是,则利用光标位置把文本框的文本内容分割成两个部分,然后把“左边内容”+“选中的条目内容”+“右边内容”的文本赋值给Text1.Text,实现列表框选中条目内容的插入。List2_Click事件代码的实现方法类似。
Command1_Click事件代码实现把文本框中的文本信息复制到粘贴板中,代码见附录【代码2-3】,当用户点击此按钮时,检测是否存在嵌套的“[]”和“()”符号,如果有则弹出“出现嵌套的两个符号”提示框,当用户点击提示框的确定按钮后,文本框中出现嵌套的“[]”和“()”符号被高亮选中,方便用户进行删除,如果没有嵌套的“[]”和“()”符号,则直接把文本框里的文本信息复制到粘贴板中,方便用户可以把输入的昆曲剧本信息直接复制到需要的地方。
(6)如果利用此软件来输入图2-2(a)的昆曲剧本,就可以得到图2-4的文本格式的昆曲剧本结果。
五、众包分发
现存的昆曲剧本大多以纸质书籍形式存在,整本或整套昆曲剧本所包含的剧本数量较多,如《纳书楹曲谱》就包含有360出单折戏及散曲,剧本谱面页数多达2300多页,虽然有上述专用的昆曲剧本输入软件,但完成整套《纳书楹曲谱》的输入也需要投入大量的人力和物力,组织专用的团队自身成本过高,如把输入工作外包给其他团队,又由于输入的昆曲剧本不需要专业知识,只需要基本的汉字识字基础即可,因此也不太合适。
众包分发采用自由参与原则,利用参与者的空余时间,不受地域与时间限制,完成输入任务。在昆曲剧本《纳书楹曲谱》的录入工程中,先把录入工程拆解为一个个独立的、小颗粒度的、以谱面页数为单位的子任务,然后根据参与者的意愿自动领取相应的子任务数量,参与者主要以选修杭州师范大学《计算机音乐》全校公选课的部分学生为主,以及其他一些志愿者构成录入工程的主要成员,录入工程从2011年5月开始到2014年7月完成二校工作,历时三年多。
六、三重校正
在昆曲剧本《纳书楹曲谱》录入工程的三年中,数据采集工作持续进行,几无中断,给文档整理和人员管理带来一定的挑战,由于录入工程的参与者可自由进入,参与者的时间控制差,采集数据存在偏差,团队管理临时、松散,监督缺失,使得一些曲谱的录入质量不能得到有效控制,有重复输入多次的曲谱谱页,有未完成录入的曲谱谱页,也有格式错误的曲谱谱页,有些采集数据被忽略而未汇集到最终数据仓库,林林总总,不一而足。
众包数据采集属于分布式数据采集方式。分布式数据采集方式不仅要汇集管理不同来源的数据,还要保证数据的一致性、完整性,数据的质量控制是分布式数据采集方式的重要组成部分。为了对昆曲剧本《纳书楹曲谱》录入质量进行控制,按国家新闻出版署(现国家新闻出版广播电影电视总局)1997年颁布的《图书质量保障体系》规定的“三校一读制度”,对录入的《纳书楹曲谱》文本进行初校、二校和三校,力求降低差错率。
昆曲剧本《纳书楹曲谱》语义文本的初校工作采用指定人员和随机抽取相结合的原则,初校工作由专人负责,随机抽取总工程1/3左右的谱面页数进行初校工作。昆曲剧本《纳书楹曲谱》的语义文本的二校工作采用集中校正,由杭州师范大学计算机专业2011级113位同学负责进行,利用专用昆曲剧本校正软件,对《纳书楹曲谱》的语义文本进行二校。
昆曲剧本校正软件是利用原有的昆曲剧本,参照原有剧本的谱面信息在软件上进行校正的过程,首先需要打开原有昆曲剧本,显示出需要校正的谱面,然后打开校正软件进行校正。昆曲剧本的语义文本专用校正软件具有比昆曲剧本录入软件更多的功能,这些功能包括:
(1)自动获取文本文件数量功能:需要校正的昆曲剧本的语义文本文件放在和校正软件相同的目录下,当打开校正软件的时候,校正软件自动在当前目录下,搜索所有的文本文件,并显示文本文件的数量。
(2)打开文本文件功能:校正软件自动打开当前目录下的第一个文本文件,这个文件的文件名是所有文本文件中,文件名按字母顺序排序后的第一个文件,由于昆曲剧本的语义文本文件在录入的时候是按此文件的谱面在整个昆曲剧本中的页码顺序来命名的,所以校正软件自动打开的第一个文件就是校正软件同目录的文本文件中页面最小的文本文件。
(3)文件名显示功能:当校正软件打开一个文本文件后,此文本文件的文件名显示在校正软件上,方便用户进行校正,当校正软件不能正确地显示文本文件的内容时,用户可以先关闭校正软件,然后用普通的文本编辑软件进行编辑。
(4)读取文本文件功能:当校正软件打开一个文本文件后,就自动读取此文本文件的所有文本内容。
(5)按歌词进行显示功能:对读取的文本内容的一行内容(对应昆曲剧本谱面的一列)进行分割,按昆曲剧本的语义文本格式要求,每个歌词的后面紧跟着一个方括号符号“[”,这个方括号后是谱字字符,所以利用这个方括号符号“[”对从文本文件中读取的文本内容进行分割,然后获取分割后的每段字符串,将它们按从前到后的顺序,分别显示在从上到下的各个文本框中。
(6)位置对齐功能:为了校正方便,合理设置各个文本框之间的间距,使得各个文本框能基本和原有的昆曲剧本谱面的一列中各个歌词在位置上对齐,方便用户比对。
(7)界面窄窗体显示功能:为了能校正昆曲剧本谱面的每一列歌词和谱字,校正软件的整个窗体应该能很好地适应每一列的位置,方便用户调整校正软件窗体在屏幕中的位置,适应窗体和原有的昆曲剧本谱面的位置关系,所以采用的窗体在高度上和原有昆曲剧本的谱面一样,宽度上较窄,方便左右移动,以对齐需要校正的歌词和谱字列。
(8)文件切换功能:在校正软件所在目录下的所有文本文件都可以一一在校正软件中显示和修改,并能一一切换到后一个文件或前一个文件,由于需要校正的是整部昆曲剧本,包含多页谱面,在剧本输入的时候,是逐页输入信息的,每一页保存为一个文件,所以在校正软件中应该以上下页为前后文件的提示内容,当选择的文件为所在目录下的第一个或最后一个文件时,点击下一页或上一页应提示已经到第一页或最后一页。
(9)谱面各列切换功能:由于昆曲剧本的信息在谱面上是从右到左一列一列显示的,所以校正软件打开一个文本文件后,首先显示的是当前谱面最右一列的歌词和谱字内容,然后可以一列一列切换到其他列,实现左一列或右一列切换功能,同时需要提示是否到达最右列或最左列。
(10)文件保存功能:当所有内容校正完成后,可以对当前的文件进行保存,并校正下一文件,文件保存功能可以随时保存修改的内容,避免因误操作引起的校正工作丢失。
这里我们也采用Microsoft Visual Basic 5.0作为开发工具,来开发昆曲剧本校正软件,根据上述十个功能,设计合理的界面和代码,实现这些功能,具体步骤如下:
(1)新建一个VB工程,设置主窗体Form1的Caption属性值为空字符“”。
(2)在Form1上添加18个文本框控件Text1、21个标签控件Label1~19和7个按钮控件Command1,设置21个标签控件的Caption属性值分别为空字符“”,设置7个按钮的Caption属性分别为“上一页”“保存”“下一页”“最左列”“左一列”“右一列”和“最右列”。
(3)按图2-6在主窗体Form1上分别调整每个控件的位置,在主窗体的上半部分,放置7个按钮控件,这7个按钮分两行放置,第一行放置“上一页”“保存”“下一页”3个按钮控件,第二行放置“最左列”“左一列”“右一列”和“最右列”4个按钮控件,在按钮控件下,放置1个文件名显示用的标签控件,此控件显示当前校正的文本文件名,在这个标签控件下面,叠放20个文本框控件,从上到下放置,文本框之间的上下间距相同,每个文本框控件的左边放一个标签控件,文本控件左边对应的标签控件显示在当列中,此文本框内的歌词在此列歌词谱字中从上到下的顺序序号,同时为了统一显示,所有的序号都只显示个位数的数字;注意:图2-6的背景是当前正在校正的文本的原有昆曲剧本谱面。
图2-6 校正软件界面与谱面一列谱字谱例
(4)初始化主程序、主窗体和各个控件的参数和变量,主要全局变量为:
(5)打开校正软件就自动获取当前目录下所有文本文件的文件名,具体实现的代码见附录【代码2-4】。
(6)打开文本文件并读取出文本文件的内容,代码见附录【代码2-5】。
(7)分割读取的文本文件当前行的文本内容,主要利用方括号“[”进行分割,代码见附录【代码2-6】。
(8)在窗体的文本框中显示当前行分割后的字符串信息,代码见附录【代码2-7】。
(9)对当前文本内容进行一行一行的分割,代码见附录【代码2-8】。
(10)保存修改的内容,代码见附录【代码2-9】。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。