NLP第14課:動(dòng)手實(shí)戰(zhàn)中文命名實(shí)體提取

命名實(shí)體識(shí)別(Named EntitiesRecognition涡上,NER)是自然語言處理的一個(gè)基礎(chǔ)任務(wù)趾断。其目的是識(shí)別語料中人名、地名吩愧、組織機(jī)構(gòu)名等命名實(shí)體梦裂,比如限府,2015年中國(guó)國(guó)家海洋局對(duì)124個(gè)國(guó)際海底地理實(shí)體的命名

enter image description here

由于命名實(shí)體數(shù)量不斷增加誊稚,通常不可能在詞典中窮盡列出虐拓,且其構(gòu)成方法具有各自的一些規(guī)律性挠羔,因而友浸,通常把對(duì)這些詞的識(shí)別從詞匯形態(tài)處理(如漢語切分)任務(wù)中獨(dú)立處理拆又,稱為命名實(shí)體識(shí)別。

命名實(shí)體識(shí)別技術(shù)是信息抽取温兼、信息檢索、機(jī)器翻譯武契、問答系統(tǒng)等多種自然語言處理技術(shù)必不可少的組成部分募判。

常見的命名實(shí)體識(shí)別方法綜述

命名實(shí)體是命名實(shí)體識(shí)別的研究主體,一般包括三大類(實(shí)體類咒唆、時(shí)間類和數(shù)字類)和七小類(人名届垫、地名、機(jī)構(gòu)名全释、時(shí)間装处、日期、貨幣和百分比)命名實(shí)體浸船。評(píng)判一個(gè)命名實(shí)體是否被正確識(shí)別包括兩個(gè)方面:實(shí)體的邊界是否正確和實(shí)體的類型是否標(biāo)注正確妄迁。

命名實(shí)體識(shí)別的主要技術(shù)方法分為:基于規(guī)則和詞典的方法、基于統(tǒng)計(jì)的方法李命、二者混合的方法等登淘。

1.基于規(guī)則和詞典的方法。

基于規(guī)則的方法多采用語言學(xué)專家手工構(gòu)造規(guī)則模板封字,選用特征包括統(tǒng)計(jì)信息黔州、標(biāo)點(diǎn)符號(hào)、關(guān)鍵字阔籽、指示詞和方向詞流妻、位置詞(如尾字)、中心詞等方法笆制,以模式和字符串相匹配為主要手段绅这,這類系統(tǒng)大多依賴于知識(shí)庫和詞典的建立∠詈兀基于規(guī)則和詞典的方法是命名實(shí)體識(shí)別中最早使用的方法君躺,一般而言峭判,當(dāng)提取的規(guī)則能比較精確地反映語言現(xiàn)象時(shí),基于規(guī)則的方法性能要優(yōu)于基于統(tǒng)計(jì)的方法棕叫。但是這些規(guī)則往往依賴于具體語言林螃、領(lǐng)域和文本風(fēng)格,編制過程耗時(shí)且難以涵蓋所有的語言現(xiàn)象俺泣,特別容易產(chǎn)生錯(cuò)誤疗认,系統(tǒng)可移植性不好,對(duì)于不同的系統(tǒng)需要語言學(xué)專家重新書寫規(guī)則伏钠『崧基于規(guī)則的方法的另外一個(gè)缺點(diǎn)是代價(jià)太大,存在系統(tǒng)建設(shè)周期長(zhǎng)熟掂、移植性差而且需要建立不同領(lǐng)域知識(shí)庫作為輔助以提高系統(tǒng)識(shí)別能力等問題缎浇。

2.基于統(tǒng)計(jì)的方法。

基于統(tǒng)計(jì)機(jī)器學(xué)習(xí)的方法主要包括隱馬爾可夫模型(HiddenMarkovMode赴肚,HMM)素跺、最大熵(MaxmiumEntropy,ME)誉券、支持向量機(jī)(Support VectorMachine指厌,SVM)、條件隨機(jī)場(chǎng)(ConditionalRandom Fields踊跟,CRF)等踩验。

在基于統(tǒng)計(jì)的這四種學(xué)習(xí)方法中,最大熵模型結(jié)構(gòu)緊湊商玫,具有較好的通用性箕憾,主要缺點(diǎn)是訓(xùn)練時(shí)間長(zhǎng)復(fù)雜性高,有時(shí)甚至導(dǎo)致訓(xùn)練代價(jià)難以承受决帖,另外由于需要明確的歸一化計(jì)算厕九,導(dǎo)致開銷比較大。而條件隨機(jī)場(chǎng)為命名實(shí)體識(shí)別提供了一個(gè)特征靈活地回、全局最優(yōu)的標(biāo)注框架扁远,但同時(shí)存在收斂速度慢、訓(xùn)練時(shí)間長(zhǎng)的問題刻像。一般說來畅买,最大熵和支持向量機(jī)在正確率上要比隱馬爾可夫模型高一些,但隱馬爾可夫模型在訓(xùn)練和識(shí)別時(shí)的速度要快一些细睡,主要是由于在利用 Viterbi 算法求解命名實(shí)體類別序列時(shí)的效率較高谷羞。隱馬爾可夫模型更適用于一些對(duì)實(shí)時(shí)性有要求以及像信息檢索這樣需要處理大量文本的應(yīng)用,如短文本命名實(shí)體識(shí)別。

基于統(tǒng)計(jì)的方法對(duì)特征選取的要求較高湃缎,需要從文本中選擇對(duì)該項(xiàng)任務(wù)有影響的各種特征犀填,并將這些特征加入到特征向量中。依據(jù)特定命名實(shí)體識(shí)別所面臨的主要困難和所表現(xiàn)出的特性嗓违,考慮選擇能有效反映該類實(shí)體特性的特征集合九巡。主要做法是通過對(duì)訓(xùn)練語料所包含的語言信息進(jìn)行統(tǒng)計(jì)和分析,從訓(xùn)練語料中挖掘出特征蹂季。有關(guān)特征可以分為具體的單詞特征冕广、上下文特征、詞典及詞性特征偿洁、停用詞特征撒汉、核心詞特征以及語義特征等。

基于統(tǒng)計(jì)的方法對(duì)語料庫的依賴也比較大涕滋,而可以用來建設(shè)和評(píng)估命名實(shí)體識(shí)別系統(tǒng)的大規(guī)模通用語料庫又比較少睬辐。

3.混合方法。

自然語言處理并不完全是一個(gè)隨機(jī)過程宾肺,單獨(dú)使用基于統(tǒng)計(jì)的方法使?fàn)顟B(tài)搜索空間非常龐大溉委,必須借助規(guī)則知識(shí)提前進(jìn)行過濾修剪處理。目前幾乎沒有單純使用統(tǒng)計(jì)模型而不使用規(guī)則知識(shí)的命名實(shí)體識(shí)別系統(tǒng)爱榕,在很多情況下是使用混合方法:

  1. 統(tǒng)計(jì)學(xué)習(xí)方法之間或內(nèi)部層疊融合。
  2. 規(guī)則坡慌、詞典和機(jī)器學(xué)習(xí)方法之間的融合黔酥,其核心是融合方法技術(shù)。在基于統(tǒng)計(jì)的學(xué)習(xí)方法中引入部分規(guī)則洪橘,將機(jī)器學(xué)習(xí)和人工知識(shí)結(jié)合起來跪者。
  3. 將各類模型、算法結(jié)合起來熄求,將前一級(jí)模型的結(jié)果作為下一級(jí)的訓(xùn)練數(shù)據(jù)渣玲,并用這些訓(xùn)練數(shù)據(jù)對(duì)模型進(jìn)行訓(xùn)練,得到下一級(jí)模型弟晚。

命名實(shí)體識(shí)別的一般流程

如下圖所示忘衍,一般的命名實(shí)體流程主要分為四個(gè)步驟:

  1. 對(duì)需要進(jìn)行提取的文本語料進(jìn)行分詞;
  2. 獲取需要識(shí)別的領(lǐng)域標(biāo)簽卿城,并對(duì)分詞結(jié)果進(jìn)行標(biāo)簽標(biāo)注枚钓;
  3. 對(duì)標(biāo)簽標(biāo)注的分詞進(jìn)行抽取瑟押;
  4. 將抽取的分詞組成需要的領(lǐng)域的命名實(shí)體搀捷。
enter image description here

動(dòng)手實(shí)戰(zhàn)命名實(shí)體識(shí)別

命名實(shí)體的類別,我們?cè)诘?1課中已經(jīng)給出了多望,這里不再贅述嫩舟,下面通過 jieba 分詞包和 pyhanlp 來實(shí)戰(zhàn)命名實(shí)體識(shí)別和提取氢烘。

1.jieba 進(jìn)行命名實(shí)體識(shí)別和提取。

第一步家厌,引入 jieba 包:

    import jieba
    import jieba.analyse
    import jieba.posseg as posg

第二步播玖,使用 jieba 進(jìn)行詞性切分,allowPOS 指定允許的詞性像街,這里選擇名詞 n 和地名 ns:

    sentence=u'''上線三年就成功上市,拼多多上演了互聯(lián)網(wǎng)企業(yè)的上市奇跡,卻也放大平臺(tái)上存在的諸多問題黎棠,拼多多在美國(guó)上市。'''
    kw=jieba.analyse.extract_tags(sentence,topK=10,withWeight=True,allowPOS=('n','ns'))
    for item in kw:
        print(item[0],item[1])

在這里镰绎,我們可以得到打印出來的結(jié)果:

上市 1.437080435586

上線 0.820694551317

奇跡 0.775434839431

互聯(lián)網(wǎng) 0.712189275429

平臺(tái) 0.6244340485550001

企業(yè) 0.422177218495

美國(guó) 0.415659623166

問題 0.39635135730800003
可以看得出脓斩,上市和上線應(yīng)該是動(dòng)詞,這里給出的結(jié)果不是很準(zhǔn)確畴栖。接下來随静,我們使用 textrank 算法來試試:

    kw=jieba.analyse.textrank(sentence,topK=20,withWeight=True,allowPOS=('ns','n'))
    for item in kw:
        print(item[0],item[1])

這次得到的結(jié)果如下,可見吗讶,兩次給出的結(jié)果還是不一樣的燎猛。

上市 1.0

奇跡 0.572687398431635

企業(yè) 0.5710407272273452

互聯(lián)網(wǎng) 0.5692560484441649

上線 0.23481844682115297

美國(guó) 0.23481844682115297
2.pyhanlp 進(jìn)行命名實(shí)體識(shí)別和提取。

第一步照皆,引入pyhanlp包:

   from pyhanlp import *

第二步重绷,進(jìn)行詞性切分:

    sentence=u'''上線三年就成功上市,拼多多上演了互聯(lián)網(wǎng)企業(yè)的上市奇跡,卻也放大平臺(tái)上存在的諸多問題,拼多多在美國(guó)上市膜毁。'''
    analyzer = PerceptronLexicalAnalyzer()
    segs = analyzer.analyze(sentence)
    arr = str(segs).split(" ")

第三步昭卓,定義一個(gè)函數(shù),從得到的結(jié)果中瘟滨,根據(jù)詞性獲取指定詞性的詞:

    def get_result(arr):
        re_list = []
        ner = ['n','ns']
        for x in arr:
            temp = x.split("/")
            if(temp[1] in ner):
                re_list.append(temp[0])
        return re_list

第四步候醒,我們獲取結(jié)果:

    result = get_result(arr)
    print(result)

得到的結(jié)果如下,可見比 jieba 更準(zhǔn)確:

['互聯(lián)網(wǎng)', '企業(yè)', '奇跡', '平臺(tái)', '問題', '美國(guó)']
總結(jié)

本文對(duì)命名實(shí)體識(shí)別的方法進(jìn)行了總結(jié)杂瘸,并給出一般的處理流程倒淫,最后通過簡(jiǎn)單的 jieba 分詞和 pyhanlp 分詞根據(jù)詞性獲取實(shí)體對(duì)象,后續(xù)大家也可以嘗試通過哈工大和斯坦福的包來處理败玉,下篇我們通過條件隨機(jī)場(chǎng) CRF 來訓(xùn)練一個(gè)命名實(shí)體識(shí)別模型敌土。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市绒怨,隨后出現(xiàn)的幾起案子纯赎,更是在濱河造成了極大的恐慌,老刑警劉巖南蹂,帶你破解...
    沈念sama閱讀 217,406評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件犬金,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)晚顷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門峰伙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人该默,你說我怎么就攤上這事瞳氓。” “怎么了栓袖?”我有些...
    開封第一講書人閱讀 163,711評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵匣摘,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我裹刮,道長(zhǎng)音榜,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,380評(píng)論 1 293
  • 正文 為了忘掉前任捧弃,我火速辦了婚禮赠叼,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘违霞。我一直安慰自己嘴办,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評(píng)論 6 392
  • 文/花漫 我一把揭開白布买鸽。 她就那樣靜靜地躺著涧郊,像睡著了一般。 火紅的嫁衣襯著肌膚如雪眼五。 梳的紋絲不亂的頭發(fā)上底燎,一...
    開封第一講書人閱讀 51,301評(píng)論 1 301
  • 那天,我揣著相機(jī)與錄音弹砚,去河邊找鬼。 笑死枢希,一個(gè)胖子當(dāng)著我的面吹牛桌吃,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播苞轿,決...
    沈念sama閱讀 40,145評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼茅诱,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了搬卒?” 一聲冷哼從身側(cè)響起瑟俭,我...
    開封第一講書人閱讀 39,008評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎契邀,沒想到半個(gè)月后摆寄,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,443評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評(píng)論 3 334
  • 正文 我和宋清朗相戀三年微饥,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了逗扒。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,795評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡欠橘,死狀恐怖矩肩,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情肃续,我是刑警寧澤黍檩,帶...
    沈念sama閱讀 35,501評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站始锚,受9級(jí)特大地震影響刽酱,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜疼蛾,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評(píng)論 3 328
  • 文/蒙蒙 一肛跌、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧察郁,春花似錦衍慎、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至麦轰,卻和暖如春乔夯,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背款侵。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工末荐, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人新锈。 一個(gè)月前我還...
    沈念sama閱讀 47,899評(píng)論 2 370
  • 正文 我出身青樓甲脏,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親妹笆。 傳聞我的和親對(duì)象是個(gè)殘疾皇子块请,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評(píng)論 2 354

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