楊靜,姜贏,朱哲宇
(1.北京師范大學人文和社會科學高等研究院,珠海 519087;2.北京師范大學珠海分校,珠海 519087)
隨著自然語言處理技術(shù)的進步以及大型語料庫的不斷豐富,中文信息處理領(lǐng)域取得了豐富的研究成果。這其中尤為突出的是基于機器學習、深度學習等方法的深入應用,在中文分詞、詞性標注、語義分析、主題提取、自動問答系統(tǒng)、機器翻譯、文本聚類等方面都取得了較好的效果。但對于半監(jiān)督、有監(jiān)督的算法而言,網(wǎng)絡模型的訓練往往需要海量正確標注的語料作為樣本,通過學習之后才能具備對未知數(shù)據(jù)的預測能力。例如最新的自然語言深度學習模型GPT-3[1],該模型通過對將近0.5萬億個單詞進行預訓練,可以很好地完成翻譯、自動問答甚至生成連貫的文本段落。雖然目前已經(jīng)出現(xiàn)了各種自動文本標注算法,但由于中文詞義的復雜、多變,無論哪一種標注算法都無法達到100%的準確率。特別是在語義、語用和話語研究中,單純依靠計算機的自動判別無法達到研究所需的精度,因此海量的高質(zhì)量標注數(shù)據(jù)對于中文信息處理是不可或缺的研究素材。
語料庫是自然語言處理的重要數(shù)據(jù)支撐平臺,大量帶標注的結(jié)構(gòu)化語料能夠幫助研究者對語料庫信息進行深度挖掘,并實現(xiàn)語料的增值[2]。目前國內(nèi)大部分語料庫都存在規(guī)模偏小、語料陳舊、標注單一、開發(fā)周期過長等缺陷。例如:北京大學計算語言研究所構(gòu)建的1998年人民日報語料庫無論在學界和業(yè)界都有巨大的影響力,但是隨著時間的推移,該語料庫的時效性、完備性和覆蓋度均需要進一步的更新和補充。然而建設(shè)一個海量標注語料庫是一項非常巨大的系統(tǒng)工程,從原始語料的采集、整理、存儲、分發(fā)、標注到語料庫的后期維護都需要大量的人力與物力。語料庫標注是“為了提高計算機處理自然語言能力而向文本添加元信息的過程”[3],這里的元信息一般來說包括文本的詞性標注、句法分析、音韻標注、語義標注、語用標注、話語標注、文體標注、詞語標注等[4]。語料庫標注按標注內(nèi)容可以分為:一般語言學知識標注、實體知識標注和特定語言任務標注[5]三類。標注階段由于算法標注和人工標注都無法達到百分百的準確,是語料庫建設(shè)中最為耗費人力和時間的步驟。傳統(tǒng)的以人工為主的語料庫開發(fā)方式已經(jīng)逐漸不能適應海量語料庫的開發(fā)需求,目前很少有研究者從事專門的標注語料庫標注系統(tǒng)研究,已有各種標注系統(tǒng)大多是針對某一專門的領(lǐng)域,例如計算機視覺領(lǐng)域中的靜態(tài)圖像行為標注系統(tǒng)[6];或者是用于完成某種特定的自然語言標注任務,例如WASA[7]是一個用于專門處理多語語碼轉(zhuǎn)換的標注系統(tǒng)。一個完善的語料庫標注系統(tǒng)除了應該能夠高效的完成大規(guī)模語料數(shù)據(jù)的標注任務,還需要易于擴展以支持不同的標注類型。因此本文中的系統(tǒng)主要是針對大型語料庫中的中文分詞與詞性標注任務,而其他類型的標注問題也可以參考借鑒本系統(tǒng)。
針對以上問題,本文通過構(gòu)建基于海量語料庫的智能標注系統(tǒng),旨在提供一套完整的海量標注語料庫開發(fā)方案,為語料庫開發(fā)者提供了從語料的采集、分發(fā)到存儲、標注以及統(tǒng)計分析等各項功能。系統(tǒng)采用B∕S架構(gòu),通過三級標注來保證標注的準確率和標注效率,并內(nèi)置三個用戶自定義的標注參數(shù)以適應不同的語料庫標注任務,除此之外,系統(tǒng)還通過專家錯誤反饋機制、詞性查詢字典、標注用戶留言等功能來輔助標注。使用該系統(tǒng)可以大大縮短海量標注語料庫的開發(fā)周期,并降低語料標注的人工成本。
系統(tǒng)主要包括語料導入、導出模塊、語料派發(fā)模塊、預標注模塊、眾包標注模塊、專家標注模塊、錯誤反饋模塊、查詢模塊、留言模塊以及數(shù)據(jù)統(tǒng)計模塊。系統(tǒng)具備易開發(fā)、易維護、易擴展的特點,方便語料庫開發(fā)人員進行系統(tǒng)配置以及后期的系統(tǒng)維護與更新。語料庫開發(fā)者可以根據(jù)不同的語料標注任務進行系統(tǒng)參數(shù)配置以獲得最優(yōu)的標注效果。系統(tǒng)遵循MVC設(shè)計思想,采用J2EE技術(shù),構(gòu)建B∕S架構(gòu);采用前后端分離模式,前端使用React框架作為數(shù)據(jù)展示實現(xiàn),后端使用Spring Boot框架來搭建系統(tǒng);數(shù)據(jù)存儲采用MySQL和Elasticsearch相結(jié)合,除了能滿足數(shù)據(jù)存儲需求還能提供海量數(shù)據(jù)的快速搜索、統(tǒng)計分析和數(shù)據(jù)探索功能。系統(tǒng)使用MyBatis-Plus作為數(shù)據(jù)持久層框架;Spring Security作為認證服務框架,實現(xiàn)基于RBAC模型的權(quán)限控制。系統(tǒng)基本架構(gòu)如圖1所示。
圖1 系統(tǒng)架構(gòu)
為了滿足海量標注語料庫的開發(fā)需求,系統(tǒng)主要包括十個功能模塊,分別屬于服務器端功能模塊和客戶端功能模塊。
1.2.1 服務器端功能模塊
(1)導入、導出模塊。批量或者單獨導入或?qū)С霾煌袷降脑颊Z料,并預留接口可以直接連接外部語料采集系統(tǒng)。
(2)標注者評價模塊。對標注用戶進行標注能力測試、評分,并根據(jù)評價結(jié)果進行標注用戶篩選。
(3)預標注模塊。利用自動標注算法對原始語料進行預標注。
(4)語料派發(fā)模塊。對原始語料進行分割后派發(fā)給不同的標注用戶進行標注。
(5)數(shù)據(jù)統(tǒng)計模塊。對語料標注情況進行統(tǒng)計分析。
1.2.2 客戶端功能模塊
(1)眾包標注模塊。眾包標注用戶對系統(tǒng)所分配的語料進行標注。
(2)專家標注模塊。專家標注用戶對系統(tǒng)判定的疑難語料進行標注。
(3)錯誤反饋模塊。專家用戶在標注過程中糾正錯誤標注的結(jié)果并反饋給預標注算法和眾包標注用戶。
(4)查詢模塊。標注用戶和語料庫使用者可以對標注情況以及語料進行多維查詢。
(5)留言模塊。用戶可以將在使用過程中所遇到的系統(tǒng)使用、標注問題等相關(guān)信息反饋給系統(tǒng)開發(fā)者。
在語料標注的過程中,系統(tǒng)采用三級標注的方式對語料進行標注,可以同時保證標注的準確率和效率,標注的具體流程如圖2所示。
圖2 語料標注流程
根據(jù)不同的建庫目的,語料庫中語料來源有不同的種類,主要包括:報刊文章、文學作品、廣播電視轉(zhuǎn)寫、微博、科技論文、教材等等。由于版權(quán)保護的原因,語料庫的語料一般不能以全文方式顯示,而是以單個句子、詞、字的形式進行統(tǒng)計分析和規(guī)律展示。在語料標注任務中,語料庫開發(fā)者希望將同一個標注任務盡可能分散的分配給不同的標注用戶以避免版權(quán)糾紛和敏感語料的泄露。因此系統(tǒng)需要首先將完整的語料全文按標點符號切分成若干句子再以單句為最小任務單位進行分發(fā)。另一方面,為了提高人工標注的準確率,系統(tǒng)采用冗余標注的方式,即一個標注任務分發(fā)給多個眾包用戶進行標注。
基于以上兩點考慮,系統(tǒng)給出了一種簡單、高效的標注語料派發(fā)算法。系統(tǒng)接收兩個用戶自定義參數(shù):最小語料間隔和冗余標注數(shù)量。首先將系統(tǒng)中的原始語料進行分句處理,并記錄每條語料的位置信息,例如(i,j)表示第i篇文檔中的第j句語料,再將所有語料隨機打亂順序。系統(tǒng)將每一條語料分配給預定數(shù)量的標注者之后,遍歷整個分配結(jié)果,如果發(fā)現(xiàn)同一個標注者的相鄰兩個標注語料屬于同一文檔且位置間隔小于預設(shè)定的最小語料間隔則進行重新分配直到所有分配結(jié)果滿足最小間隔的要求。
由于系統(tǒng)采用了三級標注來處理標注任務,為了區(qū)分不同標注階段的語料,語料設(shè)有以下5種狀態(tài):未標注、預標注、眾包標注、專家標注以及成功標注。原始語料的狀態(tài)為未標注,由算法自動標注完成后語料狀態(tài)由轉(zhuǎn)變?yōu)轭A標注。系統(tǒng)將預標注狀態(tài)的語料分發(fā)給眾包標注者進行眾包標注,語料狀態(tài)同時被設(shè)置為眾包標注。
系統(tǒng)基于多用戶的冗余標注,每條語料會派發(fā)給多個眾包用戶進行標注,再根據(jù)眾包標注的中間結(jié)果來決定如何進行下一步的語料標注派發(fā)。引入三元組<m,n,k>來標記語料標注的中間結(jié)果:其中的m代表最大相同眾包標注結(jié)果數(shù)量,n為不同眾包標注結(jié)果數(shù)量,k為語料跳過總次數(shù)。具體標注過程如下:標注者首先對接收到的語料標注任務進行評估,如果認為該條語料的標注過于困難則可以選擇直接跳過,語料的中間狀態(tài)更新為<m,n,k+1>。如果眾包用戶選擇進行標注,系統(tǒng)在用戶提交結(jié)果后進行多用戶標注結(jié)果的對比,并更新最大相同語料標注結(jié)果和最大不同語料標注結(jié)果。例如三元組<3,2,2>表示該語料的標注結(jié)果中有3位用戶標注一致,有2種不同的標注結(jié)果,且曾經(jīng)被2位用戶跳過標注。
在大多數(shù)應用場景中,如果多位用戶給出了完全相同的標注結(jié)果,可以直接接受該結(jié)果,而如果同一個標注任務出現(xiàn)多個完全不同的標注結(jié)果,則可以認為該標注任務存在歧義,屬于較難的標注任務,而如果同一個標注任務多次被標注者選擇跳過,則可以認定該標注任務屬于困難任務。系統(tǒng)設(shè)定三個自定義參數(shù):驗證接受次數(shù)、驗證拒絕次數(shù)和最大跳過次數(shù),分別對應語料狀態(tài)三元組中的三個值。用戶可以根據(jù)實際應用中語料標注的難易程度自行設(shè)定參數(shù)大小,系統(tǒng)判定邏輯為:如果m值大于驗證接受次數(shù),系統(tǒng)將認定該條語料為成功標注;而如果n值大于驗證拒絕次數(shù),系統(tǒng)將認為該條語料未通過交叉驗證則不再分發(fā)給眾包用戶而是直接發(fā)給專家用戶進行標注;如果k值大于最大跳過次數(shù),則系統(tǒng)自動將該條語料設(shè)置為疑難語料,疑難語料也直接發(fā)給專家用戶進行標注。系統(tǒng)語料派發(fā)的優(yōu)先級由以下規(guī)則確定:人工標注狀態(tài)的語料優(yōu)先級高于預標注狀態(tài)的語料,而同樣為人工標注狀態(tài)的語料則根據(jù)狀態(tài)三元組中的m值確定,m值越大優(yōu)先級越高。這種語料派選方法傾向于將系統(tǒng)中已標注過的語料優(yōu)先處理完畢,然后再對未標注過的語料進行標注,可以有效防止系統(tǒng)中產(chǎn)生大量未標注完畢的語料。
人工標注包括眾包標注和專家標注兩部分,在語料預標注的基礎(chǔ)上,為了最大限度提高人工標注的語料產(chǎn)出效率,系統(tǒng)提供了兩種人工標注方式:選擇模式和輸入模式,標注人員可以根據(jù)自己的標注習慣與偏好選擇合適的模式進行標注。
選擇模式盡可能減少人工標注過程中的鍵盤輸入,標注用戶只需要點擊選擇框進行選擇就可以對語料進行標注,不需通過鍵盤輸入詞性。標注頁面如圖3所示。
圖3 選擇模式核心標注界面
系統(tǒng)根據(jù)系統(tǒng)對語料的標注結(jié)果,通過正則表達式,將語料以“詞∕詞性”的模式進行拆分顯示,標注界面上方顯示原始語料,語料正下方按系統(tǒng)分詞結(jié)果進行切分顯示下拉菜單,標注人員在對應位置進行詞性選擇。點擊詞性框會彈出詞性的具體選擇模塊,詞性通過二級菜單實現(xiàn)分類展示,用戶點擊詞性選擇框,首先彈出詞性類別選項,點擊具體詞類后,會彈出該類別下的所有詞性,復合詞的詞性則在最后一個語素的下方選擇詞性。
輸入模式則由用戶從鍵盤輸入,采取了“原句-系統(tǒng)標注結(jié)果-文本輸入框”的展示模式,用戶首先檢查輸入框內(nèi)完整的系統(tǒng)標注結(jié)果標注,然后從鍵盤輸入對預標注的結(jié)果進行手工修改。標注界面如圖4所示。
圖4 輸入模式核心標注界面
系統(tǒng)標注結(jié)果以“詞∕詞性”的方式顯示,標注人員需要對文本輸入框中顯示的系統(tǒng)標注結(jié)果中標注錯誤的地方直接進行修改。輸入模式允許標注人員在輸入框中自由修改文本,為了避免標注人員誤輸入的數(shù)據(jù)格式錯誤,標注人員完成標注后,點擊“提交”按鈕提交標注語料,系統(tǒng)會采用正則表達式按照“詞∕詞性”的組合形式對輸入框中的標注內(nèi)容進行檢測,若格式不正確,則系統(tǒng)拒絕標注結(jié)果,并給出提示提醒標注人員重新檢查標注結(jié)果。
兩種標注方式各有優(yōu)勢:選擇模式無需標注人員從鍵盤輸入,便于標注人員利用鼠標快速選擇正確詞性,同時選擇框限定了數(shù)據(jù)輸入格式,從而避免了標注結(jié)果中的數(shù)據(jù)格式錯誤;而輸入模式中字與字之間的連接更為緊湊,在整體視覺上更為友好,便于標注人員快速閱讀帶有分詞結(jié)果的語料,提高理解效率。系統(tǒng)的運行結(jié)果反饋表明大約60%的標注人員選擇使用輸入模式,而40%的標注人員選擇使用選擇模式進行標注。
專家用戶作為標注任務中的權(quán)威用戶,其主要任務是對少量疑難語料進行標注,專家用戶標注后的語料將直接被接受為正確標注的語料。本系統(tǒng)借鑒主動學習[8]的優(yōu)化思想,結(jié)合專家標注來進一步提高標注系統(tǒng)的標注質(zhì)量。主動學習是通過對一些較難學習的樣本進行人工專家標注后再利用這些樣本訓練以提高模型的精度,而專家對疑難語料的標注結(jié)果可以作為正確標注的學習樣本反饋給眾包標注用戶以及預標注算法,從而提高整個標注系統(tǒng)的標注質(zhì)量,具體如圖5所示。
圖5 專家錯誤反饋機制
眾包用戶在標注過程中遇到疑難語料可以選擇跳過,在專家用戶對該條疑難語料標注完畢后,專家的標注結(jié)果會在眾包用戶下次登錄系統(tǒng)時推送給跳過此條語料標注的眾包用戶。另一方面,眾包用戶在標注過程中如果有關(guān)于語料標注的疑問可以進行系統(tǒng)留言,之后由專家進行留言反饋,這種定向的錯誤反饋機制可以有效提高眾包用戶的標注質(zhì)量。
在算法標注階段,專家標注的語料同樣可以反饋給算法以改進算法標注的準確性。以HanLP分詞為例,HanLP提供了多個離線詞典作為分詞依據(jù),這些詞典是可以用戶自定義的。在專家標注過程中,專家可以向系統(tǒng)提交未登錄詞,系統(tǒng)自動將該詞整理成詞典格式并修改HanLP的離線詞典。系統(tǒng)運行結(jié)果顯示,該功能可以較好地解決未登錄詞的識別問題。
系統(tǒng)提供了詞性字典供標注人員在標注過程中對某個詞的詞性進行查詢。查詢結(jié)果中除了顯示查詢詞的各種可能詞性,還能顯示該詞在系統(tǒng)中已成功標注過的詞性以及對應的次數(shù)。如果當前標注的語料是已標注但未通過交叉檢驗的狀態(tài),則在頁面下方還會展示出其他標注人員對該語料的標注結(jié)果。如果有多個標注結(jié)果,則系統(tǒng)選擇兩條不一樣的結(jié)果分別顯示,并且以標紅的方式對比顯示出標注結(jié)果中的差異之處。在詞性標注任務中絕大部分標注錯誤都集中在某幾種容易混淆的詞性上,例如:動詞s(V)和名動詞(Vn),因此標注人員往往只需要重點關(guān)注這些易混淆詞。這種標注參考方式使得標注人員可以快速定位到語料中歧義詞的所在位置,也可以在一定程度上提高標注人員的效率。
圖6 詞性字典及標注結(jié)果對比界面
為了增加標注人員之間以及與專家用戶、管理員之間的交互便利性,系統(tǒng)提供了留言功能。眾包用戶點擊左側(cè)菜單欄中“語料庫標注”模塊下的“留言”欄目可以進入留言列表。眾包用戶對某條語料有疑問、評論或?qū)ο到y(tǒng)有相關(guān)建議等,都可以在留言界面發(fā)表。
為了便于語料庫開發(fā)者隨時了解語料標注情況,系統(tǒng)還提供了基于Elasticsearch的查詢統(tǒng)計模塊,系統(tǒng)管理員可以查看當前的總體標注趨勢與標注情況??傮w標注趨勢以折線圖的形式顯示最近七天內(nèi)每日的標注總量,眾包標注情況以列表的形式展現(xiàn),顯示標注人員的序號、用戶名、最后標注日期、最后一天標注的數(shù)量、最后一次標注前7天的標注量、標注總量,并按照用戶的標注總量進行倒序排序。通過該模塊系統(tǒng)管理員可以快速了解各標注人員的標注進度,配合趨勢折線圖還能充分了解語料的詳細標注情況。
本文針對海量語料庫標注工作,設(shè)計并實現(xiàn)了基于三級混合標注的語料庫標注系統(tǒng)。語料庫開發(fā)者可以利用該系統(tǒng)快速獲得高質(zhì)量的標注語料,系統(tǒng)主要優(yōu)點體現(xiàn)在以下幾方面:①算法預標注、眾包標注和專家標注的三級標注保證了系統(tǒng)標注的效率和準確率。②語料狀態(tài)三元組能準確描述語料在系統(tǒng)中的狀態(tài)并為語料分發(fā)和流轉(zhuǎn)提供依據(jù)。③用戶自定義參數(shù)的設(shè)定使得系統(tǒng)可以適應不同的標注任務。④專家錯誤反饋機制進一步提高了系統(tǒng)標注質(zhì)量。⑤兩種人工標注界面為用戶提供了偏好選擇,用戶使用界面友好。