信息抽取和知識圖譜
命名實體識別(Name Entity Recognition)是獲取三元組中的實體的關鍵。命名實體 指的是文本中具有特定意義或者指代性強的實體,常見的包括人名、地名、組織名、時間、專有名詞等。就目前來說,使用 序列標註 的方法能夠在 NER 任務中獲得比較優異的效果,相對來說比較成熟。
NER 發展趨勢圖
序列標註任務,即在給定的文本序列上預測序列中需要作出標註的標籤。處理方式可簡單概括為:先將 token 從離散 one-hot 表示映射到低維空間中成為稠密的 embedding,隨後將句子的 embedding 序列輸入到 RNN 中,使用神經網絡自動提取特徵以及 Softmax 來預測每個 token 的標籤。
本文對比了基於 Bert 的命名實體識別框架和普通的序列標註框架在模型訓練、實體預測等方面的效果,並對基於小數據集的訓練效果做出實驗驗證。
Word Embedding-BiLSTM-CRF眾多實驗表明,該結構屬於命名實體識別中最主流的模型,代表的工具有:NeuroNER)。它主要由 Embedding 層(主要有詞向量,字向量以及一些額外特徵)、雙向 LSTM 層、以及最後的 CRF 層構成,而本文將分析該模型在中文 NER 任務中的表現。
「詞向量 +BiLSTM+CRF」三層模型構造圖
註:NER 任務需要得到實體詞的輸出,所以使用字向量作為輸入。
隨著 Bert 語言模型在 NLP 領域橫掃了 11 項任務的最優結果,將其在中文命名實體識別中 Fine-tune 必然成為趨勢。它主要是使用 bert 模型替換了原來網絡的 word2vec 部分,從而構成 Embedding 層,同樣使用雙向 LSTM 層以及最後的 CRF 層來完成序列預測。
NeuroNER 和 BertNER 的中文 NER 實驗數據來源: 本文的 NER 實驗數據是來自於 人民網 的將近 7 萬句(250 萬字)中文新聞語料。
CSV 格式的原始數據
數據樣式:
本文選用 BIO 標註法,其中」B「表示實體起始位置,」I「表示實體內容位置,」O「表示非實體。將 7 萬條數據樣本經過清洗後,按字進行分割,使用 BIO 標註形式標註四類命名實體,包括人名(PERSON)、地名(LOCATION)、組織機構名(ORGANIAZATION)以及時間(TIME),構成中文命名實體識別語料庫。數據標註樣式圖
數據劃分:
訓練集、驗證集、測試集以「7:1:2」的比例劃分。其中訓練集達到 49600 條的樣本數,標註實體共 88192 個;驗證集為 7000 條,包含 12420 個標註實體;測試集為 14000 條,標註實體共 25780 個。
實驗結果
註:實驗配置為 11G Nvidia RTX2080Ti、Intel(R) Core(TM) i7-8700K CPU @ 3.70GHz、16G 內存、2T 硬碟
結論
實驗表明,兩者在相同的迭代次數訓練後,測試集的 F1 值上 BertNER 比 NeuroNER 高出超過 4 個百分點。即使 NeuroNER 迭代 epoch 增加到 100,仍然是 BertNER 的識別效果更優。
Bert NER 在訓練時長、模型加載速度、預測速度上都佔據了很大的優勢,達到工業級的水平,更適合應用在生產環境當中。
綜上所述,Bert-BiLSTM-CRF 模型在中文命名實體識別的任務中完成度更高。
從 5 萬句(250 萬字)的中文新聞語料中按文本數據的字數(萬字為單位)劃分出 10W、30W、50W 的小數據集,同樣以「7:1:2」的比例得到對應的訓練集、驗證集、測試集。
命名實體識別結果展示
展示用例: 屠呦呦,女,漢族,中共黨員,藥學家。1930 年 12 月 30 日生於浙江寧波,1951 年考入北京大學,在醫學院藥學系生藥專業學習。1955 年,畢業於北京醫學院(今北京大學醫學部)。展示用例抽取結果:[['PERSON', '屠呦呦'], ['TIME', '1930 年 12 月 30 日'], ['LOCATION', '浙江寧波'], ['TIME', '1951 年'], ['ORGANIZATION', '北京大學'], ['ORGANIZATION', '醫學院藥學'], ['TIME', '1955 年'], ['ORGANIZATION', '北京醫學院'], ['ORGANIZATION', '北京大學醫學部']]實驗結果
實驗結果圖
效能對比表
結論
BertNER 在小數據集甚至極小數據集的情況下,測試集 F1 值均能達到 92 以上的水平,證明其也能在常見的文本命名實體識別任務中達到同樣優秀的效果。實驗結果證明,利用小數據集訓練,可以大大降低人工標註成本的同時,訓練時長也越少,也將極大地提高模型迭代的能力,有利於更多實體類型的 NER 模型構建。經過效能分析可以看出,數據量往上增加的同時,訓練時長以相同的比例增加,而 F1 值提升的幅度在逐漸下降。因此,我們在擴充實體類別的時候,可以參考此效能比例,從而衡量所要投入的資源以及所能達到的模型效果。分詞: 語言通常是需要用詞來描述事物、表達情感、闡述觀點等,可是在詞法結構上中文與英文有較大的區別。其中最大的不同是英文將詞組以空格的形式區分開來,較為容易被自動化抽取出來,而中文的詞組往往需要由兩個以上的字來組成,則需要通過分詞工具來將語句拆分,以便進一步分析內容和意圖。詞性標註: 對分詞後的單詞在用法上進行分類,為句法分析、信息抽取等工作打下基礎。常見的詞性包括名詞、動詞、形容詞、代詞、副詞等。分詞和詞性標註往往是一同完成的。本文選取了主流的四款中文自然語言處理工具包括:Jieba、Pyltp、PkuSeg、 THULAC 。
對比測試了它們分詞和詞性標註上的效果、速度、功能以及集成程度等。其中速度方面的測試,使用了百度百科上 100 位科技人物的首句人物介紹,經過預測得到每句文本的平均計算。
註:實驗配置為 11G Nvidia RTX2080Ti、Intel(R) Core(TM) i7-8700K CPU @ 3.70GHz、16G 內存、2T 硬碟
註:v(動詞)、e(嘆詞)、b(區別詞)、n(名詞)、ns(地名)、nz(其他專名)、q(量詞)、m(數詞)、x(非語素字)
註:nh(人名)、n(名詞)、ns(地名)、nt(時間名詞)、nz(其他專名)、b(區別詞)、wp(標點符號)
註:nr(人名)、ns(地名)、nz(其他專名)、t(時間詞)、b(區別詞)、j(簡稱)、w(標點符號)
註:g(語素詞根)、ns(地名)、nz(其他專名)、t(時間詞)、a(形容詞)、j(簡稱)、w(標點符號)
Jieba 分詞 + Bert-NER + Pyltp 詞性標註:註:nh(人名)、n(名詞)、ns(地名)、nt(時間名詞)、nz(其他專名)、b(區別詞)、wp(標點符號)
經過 NER、分詞、詞性標註的對比測試後發現,Jieba 分詞同時具有速度快和支持用戶自定義詞典的兩大優點,Pyltp 具有單獨使用詞性標註的靈活性。因此,使用 「Jieba 分詞 + BertNER 作自定義詞典 + Pyltp 詞性標註」 的組合策略後,可以彌補 Jieba 分詞在實體識別的缺點,保證較高的準確率和產品速度。PkuSeg 和 THULAC:初始化模型就需要很長時間,導致分詞和詞性標註的模型預測速度慢,同時部分人名的命名實體識別有所缺失。Pyltp:分詞效果太過於細化,而且實際上是無法用到用戶自定義詞典的。因為 LTP 的分詞模塊並非採用詞典匹配的策略,而是 外部詞典以特徵方式加入機器學習算法當中,並不能保證所有的詞都是按照詞典裡的方式進行切分。指代消解(Coreference Resolution),即在文本中確定代詞指向哪個名詞短語,解決多個指稱對應同一實體對象的問題。
常見用於實現指代消解的工具包:NeuralCoref、Stanford coreNLP、AllenNLP 等。
大部分工具包都是基於語義結構中的詞和句的規則來實現指代消解,而且都是在英文的語言結構當中實現了不錯的效果,NeuralCoref 和 AllenNLP 不支持中文,而 Stanford coreNLP 是具有多種語言模型,其中包括了中文模型,但 Stanford coreNLP 的指代消解在中文的表現並不理想。目前而言,基於深度學習的端到端指代消解模型還達不到生產應用的要求。
基於 Stanford coreNLP 的指代消解模型運用 Stanford coreNLP 中文模型的 詞性標註、實體識別 和 句法依存 功能模塊 +規則 來構成一個中文指代消解系統。
主語"屠呦呦"被拆分為兩個元素,這也直接導致了主語識別成了呦呦。最後的結果為:
本文選取 Pyltp 中文工具包中的依存句法分析模塊,結合「Jieba 分詞 + BertNER 作自定義詞典 + Pyltp 詞性標註」的詞性標註和 BertNER 實體識別模塊,以確定輸入文本段落的主語和實體,從而將文本中出現的代詞指代到對應的實體上。並且還實現了對缺失主語的部分文本進行主語補齊。
經過反覆的實驗表明,基於 BertNER 的中文指代消解框架比基於 Stanford coreNLP 的指代消解模型在中文上獲得 更高的準確率和更好的效果,同時實現了主語補齊的功能,有助於抽取更多的有用三元組信息。
以下是基於 Bert-NER 的中文信息抽取系統的最終實驗結果,模型細節請關注我們下一篇:《基於 Bert-NER 構建特定領域的中文信息抽取框架(下)》。
目前的規則配置文檔定義了五類關係:出生於,配偶,畢業於,工作在,父(母)子。
基於 80 條百度百科人物介紹,使用 StanfordCoreNLP 提取三元組的效果如下圖所示。五類的關係抽取三元組準確率為 0.89,抽取率達到 0.69。
基於 80 條百度百科人物介紹,使用本文中文抽取模型,取得較為明顯的改進,五類的關係抽取三元組準確率達到 0.99,抽取率達到 0.96。
測試用例結果展示
本文實驗代碼:
中文命名實體識別:https://github.com/EOA-AILab/NER-Chinese
中文分詞與詞性標註:https://github.com/EOA-AILab/Seg_Pos
原文地址:
https://zhuanlan.zhihu.com/p/74803327
你也「在看」嗎?👇