中文NER的一些探索

1.初識(shí)NER

NER(命名實(shí)體識(shí)別)其實(shí)是一個(gè)非趁槐觯基礎(chǔ)且古老的問題隆箩,關(guān)系抽取毡庆,事件抽取都是建立在其之上的庸推,簡而言之疼阔,NER任務(wù)是從一段文本中識(shí)別固定類型的實(shí)體枕赵,如時(shí)間剿吻,地點(diǎn)譬猫,人名拾弃,組織名等值桩。其實(shí)就是一個(gè)序列標(biāo)注問題。在傳統(tǒng)機(jī)器學(xué)習(xí)時(shí)代豪椿,這個(gè)問題是由HMM奔坟,CRF解決的,其中HMM僅考慮了前一個(gè)word的影響搭盾,而CRF在所有特征進(jìn)行全局歸一化咳秉,因此可以求得全局的最優(yōu)值,因而可以容納任意的上下文信息鸯隅,特征設(shè)計(jì)靈活澜建。使用維特比算法,計(jì)算整個(gè)標(biāo)記序列的聯(lián)合概率分布蝌以。

在深度學(xué)習(xí)時(shí)代炕舵,出現(xiàn)了BiLSTM+CRF的方法,在Bert時(shí)代出現(xiàn)了Bert+LSTM+CRF的方法跟畅。

2.BERT+LSTM+CRF

https://github.com/macanv/BERT-BiLSTM-CRF-NER

先放github幕侠,再講解一下使用過程。


Bert+lstm+crf代碼

①下載bert-lstm-crf代碼(https://github.com/macanv/BERT-BiLSTM-CRF-NER)

②下載預(yù)訓(xùn)練的中文BERT模型
https://storage.googleapis.com/bert_models/2018_11_03/chinese_L-12_H-768_A-12.zip(里面包含了BERT的中文預(yù)訓(xùn)練模型以及詞匯列表txt)

③修改bert_base/train/train_helper.py文件(設(shè)置路徑碍彭,也可以修改超參晤硕,其中bert_path與root_path是必須要提供的)

紅框windows系統(tǒng),紫框linux系統(tǒng)

bert_path改成②中下載的目錄

root_path下有兩個(gè)文件output(存放訓(xùn)練好的模型庇忌,以及中間過程的產(chǎn)出)舞箍,NERdata(訓(xùn)練集)


root_path

其中NERdata下的文件為 train.txt 、dev.txt 皆疹、 test.txt(即為我們要訓(xùn)練模型的數(shù)據(jù)集)

需要注意的是疏橄,訓(xùn)練集中,每個(gè)句子與每個(gè)句子之間需要有一個(gè)空行。標(biāo)簽格式大致為 B-PER I-PER(B/I在前)


訓(xùn)練集捎迫,一行一個(gè)字以及與之對應(yīng)的標(biāo)簽晃酒,句與句之前有空行

④運(yùn)行run.py開始訓(xùn)練代碼,訓(xùn)練完后會(huì)自動(dòng)輸出精確度等信息

⑤訓(xùn)練完成后使用terminal_predict.py使用模型窄绒,注意贝次,也需要更改代碼中的模型路徑。


model_dir路徑為之前訓(xùn)練出的模型的路徑彰导,bert_dir為預(yù)訓(xùn)練模型的路徑


測試效果如圖

具體的過程也可以參考:https://blog.csdn.net/macanv/article/details/85684284

但實(shí)際上BERT并不太適用于NER任務(wù)蛔翅。

雖然Transformer模型在其它NLP任務(wù)中取得了很大成功,并且在并行性和長程依賴方面有巨大優(yōu)勢位谋,但其在NER中表現(xiàn)不佳山析。我們分析了Transformer的注意力機(jī)制,發(fā)現(xiàn)其在方向性掏父、相對位置笋轨、稀疏性方面不太適合NER任務(wù)∩奘纾——邱錫鵬?


BERT+CRF并不是很適合NER任務(wù)

解釋一下實(shí)體邊界錯(cuò)誤爵政,比如我們希望識(shí)別出來的地名是“蘇州市姑蘇區(qū)”,而BERT+CRF訓(xùn)練出的模型有可能識(shí)別結(jié)果是“州市姑蘇”膏燃、“州市姑蘇區(qū)X”茂卦。


識(shí)別賽事所出現(xiàn)的邊界錯(cuò)誤問題

之后我們將探索兩個(gè)解決方法

3.解決方法1:

TENER: Adapting Transformer Encoder for Named Entity Recognition

paper地址:https://arxiv.org/abs/1911.04474

代碼地址:https://github.com/fastnlp/TENER

該模型通過對注意力打分函數(shù)的簡單改進(jìn)何什,使得Transformer結(jié)構(gòu)在NER任務(wù)上性能大幅提升组哩。

3.1論文筆記

paper首先分析了為什么BERT再NER任務(wù)上的表現(xiàn)沒有其在其他NLP任務(wù)上的表現(xiàn)好:

①transformer encoder中的position embedding主要到了距離,但忽略了方向性处渣。在BERT出現(xiàn)之前伶贰,應(yīng)用最廣泛的BiLSTM+CRF模型中的LSTM可以區(qū)分地從其左右兩側(cè)收集token的上下文信息,但transformer卻不具備這個(gè)能力罐栈,它只能反映距離黍衙,無法反映方向。為了解決這個(gè)問題荠诬,作者提出了distance-aware使transformer在一定程度上具備方向性琅翻。

②transformer encoder中的 scale dot-product attention比較平滑,NER需要的是一個(gè)不那么平滑的attention柑贞,因?yàn)橐痪湓捴兄挥猩倭康膚ord需要被標(biāo)注方椎。為了解決這個(gè)問題,作者采用un-scale dot-product attention钧嘶。


TENER模型結(jié)構(gòu)

3.1.1 TENER——embedding module

本層用于得到word embedding( = extracted character feature? concat? pre-trained word embedding)

字符級(jí)別的特征提取用的是transformer棠众,大多數(shù)NER模型通過使用CNN character encoder去緩解數(shù)據(jù)稀疏性以及OOV問題,而作者選擇transformer是因?yàn)槠?b>能夠提取到不同n-grams的模式以及一些非連續(xù)的word的字符模式,例如"unhappily"和"uneasily"中的“un..ily"模式(CNN的kernel通常設(shè)置為3闸拿,提取不到這種模式空盼。 )

3.1.2 TENER——Encoding Layer with Adapted Transformer

該層算是模型的核心了,再回顧一下之前提到的transformer encoder對于方向性的無奈新荤,在本層中作者使用了 relative positional encoding揽趾,而不是transformer encoder原先的固定position embedding。


relative positional encoding

relative positional encoding是由Peter Shaw提出的(Self-Attention with Relative Position Representations)(2018 NAACL)之后也有一系列改進(jìn)工作例如transformer-XL(2019 ACL)


本篇中使用的relative positional encoding正是前人們的成果

除了relative positional encoding之外迟隅,作者采用un-scale dot-product attention


transformer encoder中的scale dot-product attention

作者分析原先的attention中但骨,除以\sqrt{dk} 會(huì)使得softmax函數(shù)的輸出更加平滑,而直接將分母\sqrt{dk} 去除智袭,會(huì)使softmax的輸出變得陡峭(sharper)奔缠,而NER任務(wù)中sharper更好(一個(gè)句子中只有少量的字需要被標(biāo)注)

3.1.3 TENER——CRF Layerd

條件隨機(jī)場,懂得都懂吼野,不多說了校哎,為了利用不同tag之間的依賴關(guān)系,例如形容詞后面基本是名詞而不是動(dòng)詞瞳步。

3.2代碼實(shí)戰(zhàn)

4.解決方法2:

BERT-EntityNameEmbedding 模型 (來自CCKS&百度 2019中文短文本的實(shí)體鏈指 第一名解決方案

代碼地址:https://github.com/panchunguang/ccks_baidu_entity_link(readme有詳細(xì)介紹)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末闷哆,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子单起,更是在濱河造成了極大的恐慌抱怔,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,188評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件嘀倒,死亡現(xiàn)場離奇詭異屈留,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)测蘑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評論 3 395
  • 文/潘曉璐 我一進(jìn)店門灌危,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人碳胳,你說我怎么就攤上這事勇蝙。” “怎么了挨约?”我有些...
    開封第一講書人閱讀 165,562評論 0 356
  • 文/不壞的土叔 我叫張陵味混,是天一觀的道長。 經(jīng)常有香客問我诫惭,道長翁锡,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,893評論 1 295
  • 正文 為了忘掉前任贝攒,我火速辦了婚禮盗誊,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己哈踱,他們只是感情好荒适,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,917評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著开镣,像睡著了一般刀诬。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上邪财,一...
    開封第一講書人閱讀 51,708評論 1 305
  • 那天陕壹,我揣著相機(jī)與錄音,去河邊找鬼树埠。 笑死糠馆,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的怎憋。 我是一名探鬼主播又碌,決...
    沈念sama閱讀 40,430評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼绊袋!你這毒婦竟也來了毕匀?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,342評論 0 276
  • 序言:老撾萬榮一對情侶失蹤癌别,失蹤者是張志新(化名)和其女友劉穎皂岔,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體展姐,經(jīng)...
    沈念sama閱讀 45,801評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡躁垛,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,976評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了诞仓。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片缤苫。...
    茶點(diǎn)故事閱讀 40,115評論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡速兔,死狀恐怖墅拭,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情涣狗,我是刑警寧澤谍婉,帶...
    沈念sama閱讀 35,804評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站镀钓,受9級(jí)特大地震影響穗熬,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜丁溅,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,458評論 3 331
  • 文/蒙蒙 一唤蔗、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦妓柜、人聲如沸箱季。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽藏雏。三九已至,卻和暖如春作煌,著一層夾襖步出監(jiān)牢的瞬間掘殴,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評論 1 272
  • 我被黑心中介騙來泰國打工粟誓, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留奏寨,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,365評論 3 373
  • 正文 我出身青樓鹰服,卻偏偏與公主長得像服爷,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子获诈,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,055評論 2 355

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