關鍵短語抽取及使用BERT-CRF的技術實踐

2021-02-08 平安壽險PAI


全文框架概覽



一、關鍵短語抽取簡介

關鍵短語抽取 (keyphrase extraction),指從文章中提取典型的、有代表性的短語,期望能夠表達文章的關鍵內容。


關鍵短語抽取對於文章理解、搜索、分類、聚類都很重要。而高質量的關鍵短語抽取算法,還能有效助力構建知識圖譜。


常見的關鍵短語抽取方法分為有監督 (supervised)和無監督 (unsupervised)。整體抽取流程則分為2個步驟:(1) candidate generation,得到候選短語集合;(2) keyphrase scoring,對候選短語進行打分。


Figure 1  Keyphrase整體流程


 

二、業內方法介紹

無監督方法 

 

無監督的方法由於其不需要數據標註及普適性,得到了大範圍的應用。


Figure 2  無監督方法概覽


1. 基於統計的方法


 

2. 基於圖網絡的方法


 

3. 基於embedding的方法:這類方法,利用embedding來表達文章和短語在各個層次的信息(如:字、語法、語義等)。


Figure 3  典型無監督方法在benchmarks上的效果


有監督方法 

 

雖然需要花費很多精力進行數據標註,但有監督方法在各個特定任務和數據集上,通常能夠取得更好的效果。


Figure 4  有監督方法概覽


1. 傳統的方法


 

2. 基於深度學習的方法


RNN[13]使用了雙層RNN結構,通過兩層hidden layer來表徵信息,並且利用序列標註的 方法,輸出最終的結果。CopyRNN[14]使用encoder-decoder結構進行關鍵短語抽取。首先,訓練數據被轉換為text-keyphrase pairs,然後訓練基於RNN的encoder-decoder網絡,學習從源數據 (sentence)到目標數據 (keyphrase)的映射關係。

CorrRNN[15]同樣適用encoder-decoder結構,但是額外引入了兩種限制條件:

① Keyphrases應該儘量覆蓋文章的多個不同話題;

② Keyphrases應該彼此之間儘量不一樣,保證多樣性。

Figure 5  典型有監督方法在benchmarks上的效果

典型方法詳解 

 

我們分別從有監督和無監督方法中,挑選兩種典型的、效果也很好的方法:SIFRank[16]和BERT-KPE[17],詳細介紹其原理和具體流程。這兩種方法也符合關鍵短語抽取的基本流程,均分為兩個步驟:

 


Figure 6  SIFRank和BERT-KPE流程圖


1.SIFRank – a good baseline

 

傳統的關鍵短語抽取方法,主要利用統計、語法等信息。ExpandRank[4], AutoPhrase[18]等算法被提出,通過引入相關的文章,或者利用外部知識圖譜等不同方式,引入外部信息。

 

近來,預訓練模型的快速發展給關鍵短語抽取也帶來了新的引入外部知識和信息的方法。SIFRank通過引入預訓練模型ELMo[19],對文章和短語得到動態的sentence embedding和phrase embedding,從字、詞、語法、上下文等多層次表達文章和短語,從而實現了高質量的關鍵短語抽取。該方法在不同的數據集上,均能取得很好的表現,可以作為一個不錯的基準模型,應用於各種不同應用下的關鍵短語抽取。

 

 

2.BERT-KPE

 

BERT-KPE是最近由thunlp提出的方法,在OpenKP和KP20K上都達到了state-of-the-art和良好的魯棒性。BERT-KPE使用預訓練模型BERT,採用多任務學習範式,同時訓練chunking network和ranking network,分別完成candidate chunking和ranking兩個任務。此外,該方法也非常靈活,可以根據需要,刪除任意一個子網絡,僅訓練另外一個子網絡。該算法主要分為以下幾步:


三、概念圖譜構建中BERT-CRF的技術實踐

在實際業務中,我們需要建設一個概念圖譜[21, 22]。

 

我們通過概念圖譜,利用概念對文章和內容進行精準的理解,建立概念和上層應用間的圖網絡關係,從而支撐相關的業務應用。概念圖譜本身是另外一個包含很多內容的話題,不在本文中過多闡述。在此,我們主要介紹概念圖譜中用到的關鍵短語抽取技術,特別是使用BERT-CRF進行candidate抽取的實踐。


Figure 8  概念圖譜構建中的BERT-CRF模塊


在該任務下, keyphrase的定義是我們希望獲取的概念,因此具有上面提到的兩個特點:(1) 用戶視角;(2) 精準和泛化。由於這兩個特點,不確定因素被無可避免地引入進來,從而導致keyphrase飄移的問題(keyphrase的標準不固定,與各種變量高度相關):

 

 

這些變化是動態且緩慢的過程。我們會定期更新關鍵短語抽取模塊,確保該環節能適應較大的變化。同時,我們也需要穩定的關鍵短語抽取模塊,從而在一定程度上,緩解keyphrase飄移的問題,提供具有魯棒性的概念抽取能力。

 

BERT[23]是非常優質的預訓練模型,包含了很多預訓練語料中蘊含的外部知識和信息。我們以此為基礎,訓練BERT-CRF模型,作為candidate generation中重要的一路召回。另外的召迴路包括基於模板 (pattern)和基於POS tags的NP抽取系統。CRF[12]是序列標註的經典方法,其核心思想是在進行序列標註時,把序列上的各個點當做一個整體來處理,而不是一個個獨立的點,各個點的標註結果是有一定依賴關係的,以路徑為單位進行訓練。因此,通過訓練,模型能在理解文本以外,還能理解輸出序列的規則性知識,比如,使用BIO標註模式時,O後面不能直接接I。如果直接使用BERT進行序列標註,最後一層的softmax,本質上是n個k分類問題;而BERT-CRF由於CRF layer的存在,本質上是1個k^n分類問題[24]。


Figure 9  BERT與BERT-CRF的對比[24]


為了驗證BERT-CRF確實能夠提供我們需要的魯棒的關鍵短語抽取能力,我們在NER和概念圖譜(抽取該應用下定義的keyphrase)兩個數據集上進行了以下的實驗。

 

 

概念圖譜中的關鍵短語抽取

▫ 來源

▪  自有的標註數據(標準按照前述的兩個特點:用戶視角 & 精準和泛化)

▪  訓練集:來自於sourceA (網絡爬取文章)

▪  測試集:來自於sourceB (平安自有文章)

       ▫ 特點:存在前述的概念飄移問題

 

對於概念圖譜的關鍵短語抽取,我們希望在sourceA上訓練的模型,能夠更好地適應於sourceB(當然,我們最終的系統是在sourceA + sourceB + all other sources訓練得到的)。實驗設定中訓練和測試集採用不同來源,是為了在開發階段,檢驗搭建的模塊是否能夠提供我們需要的魯棒性。

 

NER數據集上的實驗 

 

NER數據集上,通過初版實驗發現,BERT & BERT-CRF效果幾乎一樣,這個結論是與BiLSTM和CNN添加CRF layer的結論是不同的。具體查看模型中的參數,發現transition matrix的值很不合理[24]。BERT是預訓練模型,其中的參數、權重本身就比較合理。經驗上來說,BERT適合的學習率一般都很小,在1e-4和1e-5之間。BERT部分快速收斂,但是CRF layer卻遠未到最佳。但是由於BERT的輸出,已經很合理了,因此即使CRF layer參數還未收斂,也不影響最終輸出比較合理的序列結果。相應地,我們對CRF的learning rate進行了調整,採用BERT learning rate的100倍。代碼實現如下:

 

(https://github.com/macanv/BERT-BiLSTM-CRF-NER/blob/master/bert_base/bert/optimization.py, line: 59-81, crf_lr_multipler default value is 100, 修改如下:)

 

optimizer2 = AdamWeightDecayOptimizer(learning_rate = learning_rate * crf_lr_multiplier, weight_decay_rate = 0.01, beta_1 = 0.9, beta_2 = 0.999, epsilon = 1e-6, exclude_from_weight_decay = [『LayerNorm』, 『layer_norm』, 『bias』]

 

if use_tpu:

optimizer = tf.contrib.tpu.CrossShardOptimizer(optimizer)

tvars = tf.trainable_variables()

tvars1 = tvars[:-1]// all variables except the CRF layer parameters

tvars2 = tvars[-1:]// parameters in CRF layer

grads = tf.gradients(loss, tvars1 + tvars2)

grads1 = grads[:-1]

grads2 = grads[-1:]

train_op1 = optimizer.apply_gradients(zip(grads1, tvars1), global_step = global_step)

train_op2 = optimizer.apply_gradients(zip(grads2, tvars1), global_step = global_step)

new_global_step = global_step + 1

train_op = tf.group(train_op1, train_op2, [global_step.assign(new_global_step)])

return train_op

 

調整學習率之後,發生了如下變化:

 


概念圖譜數據集上的實驗 

 

與NER數據集那樣標準明確不同的是,概念圖譜數據集,由於定義的keyphrase具有兩個特點:(1) 用戶視角; (2) 精準和泛化,存在飄移的問題。在採用BERT-CRF,並且調整learning rate之後,我們發現效果得到了極大的提升:

 



不合理的預測結果(O之後緊跟I-CON這種一定錯誤的結果)大幅減少:66個 => 2個(測試集總共1625條數據)Figure 10  BERT-CRF調整learning rate結果對比實例


四、總結展望

關鍵短語抽取是NLP的一個基礎任務,對於內容理解、搜索、推薦等各種下遊任務,都非常重要。統計學、語法、句法、語義等多來源特徵被引入和使用,用來抽取候選短語和對短語進行打分。隨著預訓練模型的發展,各種知識圖譜的構建,更多外部知識和信息能夠被引入,從而促進關鍵短語抽取算法的效果提升。同時,更好的關鍵短語抽取系統又能反哺各項任務,比如:知識圖譜的構建,以及我們正在進行的概念圖譜構建,最終整體形成閉環,促進各項技術的進步。



引用

1.Awajan, A.A. Unsupervised Approach for Automatic Keyword Extraction from Arabic Documents. in Proceedings of the 26th Conference on Computational Linguistics and Speech Processing (ROCLING 2014). 2014.

2.Mihalcea, R. and P. Tarau. Textrank: Bringing order into text. in Proceedings of the 2004 conference on empirical methods in natural language processing. 2004.

3.Page, L., et al., The pagerank citation ranking: Bringing order to the web. 1999, Stanford InfoLab.

4.Wan, X. and J. Xiao. Single Document Keyphrase Extraction Using Neighborhood Knowledge. 2008.

5.Florescu, C. and C. Caragea. Positionrank: An unsupervised approach to keyphrase extraction from scholarly documents. in Proceedings of the 55th Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers). 2017.

6.Bennani-Smires, K., et al., Embedrank: Unsupervised keyphrase extraction using sentence embeddings. arXiv preprint arXiv:1801.04470, 2018.

7.Witten, I.H., et al., Kea: Practical automated keyphrase extraction, in Design and Usability of Digital Libraries: Case Studies in the Asia Pacific. 2005, IGI global. p. 129-152.

8.Hulth, A. Improved automatic keyword extraction given more linguistic knowledge. in Proceedings of the 2003 conference on Empirical methods in natural language processing. 2003. Association for Computational Linguistics.

9.Caragea, C., et al. Citation-enhanced keyphrase extraction from research papers: A supervised approach. in Proceedings of the 2014 Conference on Empirical Methods in Natural Language Processing (EMNLP). 2014.

10.Jiang, X., Y. Hu, and H. Li. A ranking approach to keyphrase extraction. in Proceedings of the 32nd international ACM SIGIR conference on Research and development in information retrieval. 2009.

11.Bougouin, A., F. Boudin, and B. Daille, Keyphrase annotation with graph co-ranking. arXiv preprint arXiv:1611.02007, 2016.

12.Lafferty, J., A. McCallum, and F.C. Pereira, Conditional random fields: Probabilistic models for segmenting and labeling sequence data. 2001.

13.Zhang, Q., et al. Keyphrase extraction using deep recurrent neural networks on twitter. in Proceedings of the 2016 conference on empirical methods in natural language processing. 2016.

14.Meng, R., et al., Deep keyphrase generation. arXiv preprint arXiv:1704.06879, 2017.

15.Chen, J., et al., Keyphrase generation with correlation constraints. arXiv preprint arXiv:1808.07185, 2018.

16.Sun, Y., et al., SIFRank: A New Baseline for Unsupervised Keyphrase Extraction Based on Pre-Trained Language Model. IEEE Access, 2020. 8: p. 10896-10906.

17.Sun, S., et al., Joint Keyphrase Chunking and Salience Ranking with BERT. arXiv preprint arXiv:2004.13639, 2020.

18.Shang, J., et al., Automated phrase mining from massive text corpora. IEEE Transactions on Knowledge and Data Engineering, 2018. 30(10): p. 1825-1837.

19.Peters, M.E., et al., Deep contextualized word representations. arXiv preprint arXiv:1802.05365, 2018.

20.Arora, S., Y. Liang, and T. Ma, A simple but tough-to-beat baseline for sentence embeddings. 2016.

21.Liu, B., et al. A User-Centered Concept Mining System for Query and Document Understanding at Tencent. in Proceedings of the 25th ACM SIGKDD International Conference on Knowledge Discovery & Data Mining. 2019.

22.Luo, X., et al., AliCoCo: Alibaba E-commerce Cognitive Concept Net. arXiv preprint arXiv:2003.13230, 2020.

23.Devlin, J., et al., Bert: Pre-training of deep bidirectional transformers for language understanding. arXiv preprint arXiv:1810.04805, 2018.

24.蘇劍林. 你的 CRF 層的學習率可能不夠大. 2020-02-07; Available from: https://kexue.fm/archives/7196.




相關焦點

  • 流水的NLP鐵打的NER:命名實體識別實踐與探索
    ,可能是某個字,某個詞,或者某個短語為什麼說流水的NLP鐵打的NER?NER結合一下,比如結合強化學習的NER、結合 few-shot learning 的NER、結合多模態信息的NER、結合跨語種學習的NER等等的,具體就不提了所以沿著上述思路,就在一個中文NER任務上做一些實踐,寫一些模型。
  • 【NLP】流水的NLP鐵打的NER:命名實體識別實踐與探索
    ,可能是某個字,某個詞,或者某個短語為什麼說流水的NLP鐵打的NER?NER結合一下,比如結合強化學習的NER、結合 few-shot learning 的NER、結合多模態信息的NER、結合跨語種學習的NER等等的,具體就不提了所以沿著上述思路,就在一個中文NER任務上做一些實踐,寫一些模型。
  • NER信息抽取在OCR中的應用
    在許多場景中,只有OCR識別結果是不夠的,因為往往關心的是結構化的一些關鍵欄位信息。對於欄位信息較為固定的備件,例如身份證等,可以使用模版匹配等技術,但是對於版式不固定的備件,信息難以提取,例如簡歷,合同的信息。這時候,就需要NER登場了。 NER全稱:Named Entity Recognition,命名實體識別。
  • 【BERT】如何訓練並使用Bert【持續更新】
    和GPT的結構很像,但是應用了雙向,並且想出了怎麼用,這個是關鍵。雙向的transformer。本身transformer是一個很有力的特徵提取器。(三層,語義信息,位置信息,句子信息)。應用方法:使用MLM 「Masked language model」 作為與訓練的objevtive, 說是被Cloze task任務inspired的【BOW也是類似的方法】。
  • 抽取式摘要:TextRank和BertSum
    生成式摘要可以產生原文中沒有的單詞和短語,給人耳目一新之感,但是容易野馬脫韁,返回不符合語法和事實的結果。抽取式摘要的方法,包括傳統的聚類法和圖方法,以及基於深度學習的序列標註法或句子排序法。本文主要關注以下三個問題:如何用聚類法做抽取式摘要?
  • 基於Bert-NER構建特定領域的中文信息抽取框架(上)
    更多優質內容請關注微信公眾號「AI 前線」(ID:ai-front) 信息抽取和知識圖譜命名實體識別(Name Entity Recognition)是獲取三元組中的實體的關鍵。命名實體 指的是文本中具有特定意義或者指代性強的實體,常見的包括人名、地名、組織名、時間、專有名詞等。
  • 文本挖掘從小白到精通(十六)--- 像使用scikit-learn一樣玩轉BERT
    為此,我們要不厭其煩的嘗試各種文本特徵抽取方法:TF-IDF、n-gram、word2vec、將其連結到外部知識庫、詞幹化、歸一化乃至分詞。。。自從有了BERT,文本特徵抽取的手工活就少多了!但是,總覺得少了些啥~本教程的目的是用BERT和Sci-kit Learn建立一個最簡單的句子級分類的例子。
  • 乾貨| BERT fine-tune 終極實踐教程
    以下是奇點機智技術團隊對BERT在中文數據集上的fine tune終極實踐教程。在自己的數據集上運行 BERTBERT的代碼同論文裡描述的一致,主要分為兩個部分。一個是訓練語言模型(language model)的預訓練(pretrain)部分。
  • 用 Keras+LSTM+CRF 的實踐命名實體識別NER
    文本分詞、詞性標註和命名實體識別都是自然語言處理領域裡面很基礎的任務,他們的精度決定了下遊任務的精度,其實在這之前我並沒有真正意義上接觸過命名實體識別這項工作,雖然說讀研期間斷斷續續也參與了這樣的項目,但是畢業之後始終覺得一知半解的感覺,最近想重新撿起來,以實踐為學習的主要手段來比較系統地對命名實體識別這類任務進行理解、學習和實踐應用。
  • BERT4Rec:使用Bert進行序列推薦
    我們進行了一項消融分析,分析了模型中關鍵部件的貢獻。3.最後,是對模型結構的一些對比實驗,主要有是否使用PE(positional embedding),是否使用PFFN(position-wise feed-forward network),是否使用LN(layer normalization),是否使用RC(即Add操作,residual connection),是否使用Dropout,以及Transformer Layer的層數和Multi-head
  • BERT詳解:開創性自然語言處理框架的全面指南
    GPT還強調了Transformer框架的重要性,該框架具有更簡單的體系結構,其訓練速度比基於LSTM的模型更快,還能夠通過使用注意機制來學習數據中的複雜模式。OpenAI的GPT通過實現多種先進技術證實了Transformer框架的強大和實用性。
  • CRF用過了,不妨再了解下更快的MEMM?
    用 12 層 bert base 模型作為編碼模型時,Bi-MEMM 比 CRF 快 25%;用 2 層 bert base 模型作為編碼模型時,Bi-MEMM 比 CRF 快 1.5 倍。註:由於筆者發現 Bi-MEMM 效果總比 MEMM 略好,並且兩者的訓練時間基本無異,所以 bert4keras 裡邊的 MaximumEntropyMarkovModel 默認就是 Bi-MEMM。
  • tensorflow中crf源碼解析
    剛學習lstm+crf時,就閱讀過crf層的源碼,發現時間一久,就忘了。這次準備重新閱讀一下,順便做個筆記。主要的目的是深入理解代碼細節,提高自己編寫模型的能力。本文假定大家對lstm+crf的基本原理基本清楚。
  • 百分點認知智能實驗室:信息抽取在知識圖譜構建中的實踐與應用
    百分點認知智能實驗室在實踐探索中,通過利用自然語言處理技術獲取結構化的信息抽取能力,探索出了一套行業知識圖譜構建流程方法。尤其是基於深度遷移學習,幫助構建法律百科詞條、公安文本知識圖譜等行業項目中,在實體抽取、關係抽取、事件抽取等方面都取得了理想的實踐效果。本文將從概念辨析、技術路徑、實踐總結,由虛到實、由淺入深引導大家理性看待知識圖譜技術的能與不能,以更好地在實踐中運籌帷幄。
  • 今日Paper | 聯合抽取;流式語音識別;差異學習;Skip-Thought向量等
    在序列標註模型中使用位置注意力進行抽取實體與重疊關係的聯合抽取將混合CTC/Attention方法嵌入到Transformer結構中實現在線端到端的流式語音識別架構基於人工反向修正數據的差異學習利用一種基於多屬性鄰近度的方法從可比較的新聞語料庫中挖掘事件Skip-Thought向量  在序列標註模型中使用位置注意力進行抽取實體與重疊關係的聯合抽取
  • 今日Paper|聯合抽取;流式語音識別;差異學習;Skip-Thought向量等
    目錄在序列標註模型中使用位置注意力進行抽取實體與重疊關係的聯合抽取將混合CTC/Attention方法嵌入到Transformer結構中實現在線端到端的流式語音識別架構基於人工反向修正數據的差異學習利用一種基於多屬性鄰近度的方法從可比較的新聞語料庫中挖掘事件
  • 【計算機系統應用】 (第五十五期)基於BERT-BiLSTM-CRF模型的中文實體識別
    命名實體識別(Named Entity Recognition, NER)是自然語言處理的關鍵技術之一, 同時也是作為知識抽取的一項子任務, 其主要作用就是從海量文本中識別出特定類別的實體
  • 谷歌搜索:幾乎所有的英文搜索都用上BERT了
    2019 年 9 月,谷歌宣布將 BERT 用到搜尋引擎中,但僅有 10% 的英文搜索結果得到改善;2019 年 12 月,谷歌將 BERT 在搜尋引擎中的使用擴展到 70 多種語言。如今,這家搜索巨頭終於宣布:幾乎所有英文搜索都能用上 BERT 了。BERT 對於搜尋引擎意味著什麼?
  • 中文最佳,哈工大訊飛聯合發布全詞覆蓋中文BERT預訓練模型
    模型使用了中文維基百科(包括簡體和繁體)進行訓練,並且使用了哈工大語言技術平臺 LTP(http://ltp.ai)作為分詞工具。和原版 BERT 中文模型,以及百度開源中文預訓練模型 ERNIE 相比,全詞覆蓋的中文 BERT 預訓練模型 BERT-wwm 在多個中文任務中取得了較好的表現。