達觀數(shù)據(jù)如何打造一個中文NER系統(tǒng)


1 NER簡介

NER(Named Entity Recognition俩滥,命名實體識別)又稱作專名識別迹淌,是自然語言處理中常見的一項任務屡江,使用的范圍非常廣沟优。命名實體通常指的是文本中具有特別意義或者指代性非常強的實體,通常包括人名病苗、地名疗垛、機構(gòu)名、時間硫朦、專有名詞等贷腕。NER系統(tǒng)就是從非結(jié)構(gòu)化的文本中抽取出上述實體,并且可以按照業(yè)務需求識別出更多類別的實體咬展,比如產(chǎn)品名稱泽裳、型號、價格等破婆。因此實體這個概念可以很廣涮总,只要是業(yè)務需要的特殊文本片段都可以稱為實體。以下將詳細介紹達觀數(shù)據(jù)在文本語義理解過程中是如何構(gòu)建中文NER系統(tǒng)的祷舀。

2 NER問題分解

NER問題的目標是從文本抽取出特定需求實體的文本片段瀑梗。針對這個任務,通常使用基于規(guī)則的方法和基于模型的方法裳扯。

2.1 基于規(guī)則的方法

基于規(guī)則進行實體抽取是較容易想到的方式抛丽。針對有特殊上下文的實體,或?qū)嶓w本身有很多特征的文本嚎朽,使用規(guī)則的方法簡單且有效铺纽。比如,抽取文本中物品價格哟忍,如果文本中所有商品價格都是“數(shù)字+元”的形式狡门,則可以通過正則表達式”\d*\.?\d+元”進行抽取。但是如果待抽取文本中價格的表達方式多種多樣锅很,例如“一千八百萬”其馏、“伍佰貳拾圓”、“2000萬元”爆安,這個時候就要修改規(guī)則來滿足所有可能的情況叛复。隨著語料數(shù)量的增加,面對的情況也越來越復雜扔仓,規(guī)則之間也可能發(fā)生沖突褐奥,整個系統(tǒng)也可能變得不可維護。因此基于規(guī)則的方式比較適合半結(jié)構(gòu)化或比較規(guī)范的文本中的進行抽取任務翘簇,結(jié)合業(yè)務需求能夠達到一定的效果撬码。總結(jié)一下基于規(guī)則的實體抽取方式版保,優(yōu)點:簡單呜笑,快速夫否;缺點:適用性差,維護成本高后期甚至不能維護叫胁。

2.2 基于模型的方法

從模型的角度來看凰慈,命名實體識別問題實際上是序列標注問題。序列標注問題指的是模型的輸入是一個序列驼鹅,包括文字微谓、時間等,輸出也是一個序列谤民。針對輸入序列的每一個單元堰酿,輸出一個特定的標簽。以中文分詞任務進行舉例张足,例如輸入序列是一串文字:“我是中國人”,輸出序列是一串標簽:“SSBME”坎藐,其中“BMES”組成了一種中文分詞的標簽體系为牍,B表示這個字是詞的開始Begin,M表示詞的中間Middle岩馍,E表示詞的結(jié)尾End碉咆,S表示單字成詞。因此我們可以根據(jù)輸出序列“SSBME”進行解碼蛀恩,得到分詞結(jié)果“我\是\中國人“疫铜。序列標注問題涵蓋了自然語言處理中的很多任務,包括語音識別双谆、中文分詞壳咕、機器翻譯、命名實體識別等顽馋,而常見的序列標注模型包括HMM谓厘,CRF,RNN等模型寸谜。

2.2.1 HMM

HMM(Hidden Markov Model竟稳,隱馬爾可夫模型)是使用非常廣泛經(jīng)典的一個統(tǒng)計模型,作為一個生成式模型熊痴,HMM用來描述一個含有隱含未知參數(shù)的馬爾可夫過程他爸。簡單來講,HMM模型包括兩個序列三個矩陣:觀察序列果善、隱藏序列诊笤、初始狀態(tài)概率矩陣、狀態(tài)轉(zhuǎn)移概率矩陣岭埠、發(fā)射概率矩陣盏混。通常情況下蔚鸥,我們要根據(jù)觀察序列和三個矩陣,來得到隱藏序列许赃。

圖1:HMM模型

其中X表示隱藏序列止喷,y表示觀察序列,a表示狀態(tài)轉(zhuǎn)移概率混聊,b表示發(fā)射概率

以中文分詞任務舉例弹谁,使用“BMES”標簽體系,HMM模型就是從切分好的語料中統(tǒng)計出初始狀態(tài)概率矩陣句喜、狀態(tài)轉(zhuǎn)移概率矩陣预愤、發(fā)射概率矩陣這三個矩陣的概率參數(shù)。初始狀態(tài)矩陣指的是序列第一個字符是BMES的概率咳胃,顯然字符是M和E的概率為0植康。狀態(tài)轉(zhuǎn)移概率矩陣是BMES四種狀態(tài)間轉(zhuǎn)移的概率,顯然B-->S展懈,M-->S销睁,M-->B等狀態(tài)的轉(zhuǎn)移概率為0。發(fā)射概率矩陣指的是一個字符是BMES四種狀態(tài)其中一種的概率存崖,比如“中-->B:0.3“冻记、“中-->E:0.4“等±淳澹可以看到冗栗,HMM模型只需按照模型要求,統(tǒng)計出上述概率矩陣即可供搀,因此HMM的優(yōu)點是模型簡單訓練快隅居,但因為馬爾可夫假設的原因,模型效果相對較差趁曼。

2.2.2 CRF

CRF(Conditional random field军浆,條件隨機場)是一種判別式模型。條件隨機場是給定隨機變量X的情況下挡闰,隨機變量Y的馬爾科夫隨機場乒融。馬爾科夫隨機場是概率無向圖模型,滿足成對摄悯、局部及全局馬爾可夫性赞季。對于序列標注問題,一般使用線性鏈條件隨機場奢驯。

圖2:一種線性條件隨機場

對于條件隨機場的模型訓練申钩,通常使用基于BFGS、SGD等算法的優(yōu)化算法瘪阁,不同軟件包的實現(xiàn)上也有所區(qū)別撒遣。理論上CRF算法性能要優(yōu)于HMM邮偎,因為CRF可以使用更多的特征,但同時义黎,特征選擇對于模型的性能有一定的影響禾进,除此之外,相對于HMM廉涕,CRF模型的訓練也更加復雜泻云,時間相對較長。

2.2.3 RNN

隨著深度學習的興起狐蜕,RNN宠纯、LSTM、BILSTM等模型已經(jīng)被證明在NLP任務上有著良好的表現(xiàn)层释。相比傳統(tǒng)模型婆瓜,RNN能夠考慮長遠的上下文信息,并且能夠解決CRF特征選擇的問題湃累,可以將主要的精力花在網(wǎng)絡設計和參數(shù)調(diào)優(yōu)上勃救,但RNN一般需要較大的訓練數(shù)據(jù),在小規(guī)模數(shù)據(jù)集上治力,CRF表現(xiàn)較好。在學術界勃黍,目前比較流行的做法是將BILISTM和CRF進行結(jié)合宵统,借鑒兩個模型各自的優(yōu)點,來達到更好的效果覆获。

圖3:BILSTM+CRF標注模型

3 基于CRF模型打造中文NER系統(tǒng)

上面介紹了用于序列標注不同模型的特點马澈。雖然深度學習有著廣闊的前景,并且在機器翻譯等任務上表現(xiàn)優(yōu)異弄息,但對于序列標注任務而言痊班,CRF模型老而彌堅且比較成熟,在工業(yè)界中被廣泛使用摹量,因此本章使用CRF模型打造一個中文NER系統(tǒng)涤伐。(達觀數(shù)據(jù) 高翔)

3.1 明確標注任務

前文講過,NER可以根據(jù)業(yè)務需求標注各種不同類型的實體缨称,因此首先要明確需要抽取的實體類型凝果。一般通用場景下,最常提取的是時間睦尽、人物器净、地點及組織機構(gòu)名,因此本任務提取TIME当凡、PERSON山害、LOCATION纠俭、ORGANIZATION四種實體。

3.2 數(shù)據(jù)及工具準備

明確任務后就需要訓練數(shù)據(jù)和模型工具浪慌。對于訓練數(shù)據(jù)冤荆,我們使用經(jīng)典的人民日報1998中文標注語料庫,其中包括了分詞和詞性標注結(jié)果眷射,下載地址為:http://icl.pku.edu.cn/icl_groups/corpus/dwldform1.asp祸憋。對于CRF,有很多開源的工具包可供選擇番枚,在此使用CRF++進行訓練审轮。CRF++官方主頁為CRF++: Yet Another CRF toolkit,包括下載及使用等說明欧宜。

3.3 數(shù)據(jù)預處理

人民日報1998語料庫下載完畢后坐榆,解壓打開“199801.txt”這個文件(注意編碼轉(zhuǎn)換成UTF-8),可以看到內(nèi)容是由word/pos組成冗茸,中間以兩個空格隔開席镀。我們需要的提取的實體是時間、人名夏漱、地名豪诲、組織機構(gòu)名,根據(jù)1998語料庫的詞性標記說明挂绰,對應的詞性依次為t屎篱、nr、ns葵蒂、nt交播。通過觀察語料庫數(shù)據(jù),需要注意四點:1践付,1998語料庫標注人名時秦士,將姓和名分開標注,因此需要合并姓名永高;2隧土,中括號括起來的幾個詞表示大粒度分詞,表意能力更強乏梁,需要將括號內(nèi)內(nèi)容合并次洼;3,時間合并遇骑,例如將”1997年/t 3月/t” 合并成”1997年3月/t”卖毁;4,全角字符統(tǒng)一轉(zhuǎn)為半角字符,尤其是數(shù)字的表示亥啦。

通過腳本將語料庫數(shù)據(jù)進行處理炭剪,處理前后的結(jié)果如圖4和圖5所示。

圖4:人民日報1998標注語料數(shù)據(jù)處理前


圖5:人民日報1998標注語料數(shù)據(jù)處理后


3.4 模型訓練

根據(jù)我們的NER任務需求及CRF++的訓練要求翔脱,模型訓練需要4個步驟:1奴拦,確定標簽體系;2届吁,確定特征模板文件错妖;3,處理訓練數(shù)據(jù)文件疚沐;4暂氯,模型訓練。

3.4.1 確定標簽體系

對于NER任務亮蛔,常見的標簽體系包括IO痴施、BIO、BMEWO究流、BMEWO+辣吃。下面舉例說明不同標簽體系的區(qū)別。

表格1:不同標簽體系的標注示例

大部分情況下芬探,標簽體系越復雜準確度也越高神得,但相應的訓練時間也會增加。因此需要根據(jù)實際情況選擇合適的標簽體系偷仿。本文選擇和分詞系統(tǒng)類似的BMEWO標簽體系循头。

3.4.2 特征模版設計

特征模版是一個文本文件,其內(nèi)容如圖6所示炎疆,其中每行表示一個特征。圖6使用了unigram特征国裳,并且僅以字符本身作為特征而不考慮其他特征形入。除當前字符外,還使用了其前后3個字缝左,以及上下文的組合作為特征亿遂。CRF++會根據(jù)特征模版生成相關的特征函數(shù)。關于特征模版的詳細解釋可以查看官網(wǎng)文檔渺杉,并且對于特征的選擇和設計可以靈活配置蛇数,圖6僅作為參考。

圖6:特征模板設計

3.4.3 訓練數(shù)據(jù)生成

CRF模型的訓練數(shù)據(jù)是一行一個token是越,一句話由多行token組成耳舅。每一行可以分為多列,除最后一列外,其他列表示特征浦徊。本文所描述的NER系統(tǒng)馏予,單字表示token,并且僅使用字符這一種特征盔性,因此可以根據(jù)語料庫中每個字在詞中的位置和詞性霞丧,以及所選的標簽系統(tǒng),生成CRF++的訓練數(shù)據(jù)冕香。生成的訓練數(shù)據(jù)如圖7所示蛹尝。

圖7:CRF++訓練數(shù)據(jù)示例

3.4.4 模型訓練

準備好特征模版和訓練數(shù)據(jù)后就可以進行模型訓練,如圖8所示悉尾。使用crf_learn命令突那,指定模版文件、訓練數(shù)據(jù)文件和輸出模型文件就可以進行訓練焕襟。參數(shù)-f 1表示過濾頻次低于1的特征陨收,在這里不進行特征過濾,-c 1.0用來調(diào)節(jié)CRFs的超參數(shù)鸵赖,c值越大越容易過擬合务漩。除此之外,還有-a等其他參數(shù)進行控制調(diào)整它褪。圖9展示了訓練完畢的相關數(shù)據(jù)饵骨。

圖8:CRF++訓練過程


圖9:CRF++訓練結(jié)果


3.5 模型預測及使用

模型訓練完畢后就可以進行預測。CRF++提供crf_test命令進行測試茫打,我們使用文本“北京市委組織部長姜志剛調(diào)任寧夏副書記“進行測試居触,測試文件中每字一行,每句話使用空行隔開老赤。測試結(jié)果如圖10所示轮洋。

圖10:CRF++測試結(jié)果

從圖10的結(jié)果我們可以看到,CRF模型能夠?qū)斎胛淖中蛄休敵鱿鄳臉撕瀼亩瓿蒒ER任務抬旺。在模型預測時弊予,CRF++主要使用了維特比算法進行nbest輸出。在模型訓練時开财,可以指定-t參數(shù)輸出文本格式的模型汉柒,方便debug或編寫自己的模型加載及解碼程序。

對于一個完整的NER過程责鳍,除了得到序列標簽外碾褂,還要對標簽序列進行解碼得到最終的結(jié)果。CRF++同時提供了python接口历葛,可以方便的在python 程序中進行模型的調(diào)用得到標簽序列正塌,然后通過標簽解碼得到最終的結(jié)果。圖11展示了一個完整的NER預測結(jié)果。

圖11:使用python代碼進行NER的預測結(jié)果

圖11展示了較好的結(jié)果传货,能夠識別出諸如“北京小米科技有限責任公司”這樣的組織機構(gòu)名屎鳍。通過使用1998年的數(shù)據(jù)識別出了2010年才成立的公司,這就是模型算法的力量问裕。當然模型也有瑕疵逮壁,諸如“郁亮“、”海聞”這樣的人名沒有識別出來粮宛,這除了和模型特征選擇相關外窥淆,也和語料庫的規(guī)模和標注有關,因此語料庫的建設和積累更加重要巍杈。

4 總結(jié)

本文講述了NER任務的基本概念及方法忧饭,并使用業(yè)界成熟的語料和工具開發(fā)了一個簡單能work的基于CRF模型的中文NER系統(tǒng),而實際提供線上服務的NER系統(tǒng)要比這個復雜的多筷畦。在自然語言處理的實際工作中词裤,除了不同模型、算法鳖宾、工具的使用和參數(shù)調(diào)優(yōu)外吼砂,語料庫的選擇和積累也非常重要。對于中文文本語義分析技術鼎文,達觀數(shù)據(jù)擁有多年的技術積累并緊跟行業(yè)潮流渔肩,對已有成熟技術進行深挖,對新興技術進行研究集成拇惋。同時周偎,針對不同行業(yè)及任務積累了豐富的文本語料,并源源不斷的使用新數(shù)據(jù)對語料模型進行升級更新撑帖,保證分析結(jié)果的準確性和實時性蓉坎,為客戶提供高品質(zhì)服務。

7月28日胡嘿,國內(nèi)人工智能領域的先行者達觀數(shù)據(jù)將攜手喜馬拉雅袍嬉、創(chuàng)業(yè)邦、梨視頻等一線互聯(lián)網(wǎng)文娛企業(yè)大咖灶平,帶你走進“達觀數(shù)據(jù)開放日”,解剖技術運營趨勢箍土,引爆流量逢享!

達觀數(shù)據(jù)開放日

達觀數(shù)據(jù)開放日 報名地址:http://www.huodongxing.com/event/2395084653800?td=9261419483889

想了解學習更多技術干貨,掃描下方二維碼關注“達觀數(shù)據(jù)”公眾號

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末吴藻,一起剝皮案震驚了整個濱河市瞒爬,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖侧但,帶你破解...
    沈念sama閱讀 206,602評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件矢空,死亡現(xiàn)場離奇詭異,居然都是意外死亡禀横,警方通過查閱死者的電腦和手機屁药,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來柏锄,“玉大人酿箭,你說我怎么就攤上這事≈和蓿” “怎么了缭嫡?”我有些...
    開封第一講書人閱讀 152,878評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長抬闷。 經(jīng)常有香客問我妇蛀,道長,這世上最難降的妖魔是什么笤成? 我笑而不...
    開封第一講書人閱讀 55,306評論 1 279
  • 正文 為了忘掉前任评架,我火速辦了婚禮,結(jié)果婚禮上疹启,老公的妹妹穿的比我還像新娘古程。我一直安慰自己,他們只是感情好喊崖,可當我...
    茶點故事閱讀 64,330評論 5 373
  • 文/花漫 我一把揭開白布挣磨。 她就那樣靜靜地躺著,像睡著了一般荤懂。 火紅的嫁衣襯著肌膚如雪茁裙。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,071評論 1 285
  • 那天节仿,我揣著相機與錄音晤锥,去河邊找鬼。 笑死廊宪,一個胖子當著我的面吹牛矾瘾,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播箭启,決...
    沈念sama閱讀 38,382評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼壕翩,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了傅寡?” 一聲冷哼從身側(cè)響起放妈,我...
    開封第一講書人閱讀 37,006評論 0 259
  • 序言:老撾萬榮一對情侶失蹤北救,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后芜抒,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體珍策,經(jīng)...
    沈念sama閱讀 43,512評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,965評論 2 325
  • 正文 我和宋清朗相戀三年宅倒,在試婚紗的時候發(fā)現(xiàn)自己被綠了攘宙。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,094評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡唉堪,死狀恐怖模聋,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情唠亚,我是刑警寧澤链方,帶...
    沈念sama閱讀 33,732評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站灶搜,受9級特大地震影響祟蚀,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜割卖,卻給世界環(huán)境...
    茶點故事閱讀 39,283評論 3 307
  • 文/蒙蒙 一前酿、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧鹏溯,春花似錦罢维、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,286評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至颜阐,卻和暖如春平窘,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背凳怨。 一陣腳步聲響...
    開封第一講書人閱讀 31,512評論 1 262
  • 我被黑心中介騙來泰國打工瑰艘, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人肤舞。 一個月前我還...
    沈念sama閱讀 45,536評論 2 354
  • 正文 我出身青樓紫新,卻偏偏與公主長得像,于是被迫代替她去往敵國和親李剖。 傳聞我的和親對象是個殘疾皇子弊琴,可洞房花燭夜當晚...
    茶點故事閱讀 42,828評論 2 345

推薦閱讀更多精彩內(nèi)容