金融市場每時每刻都在發生新的事件,媒體不斷的產生出新聞資訊,在網際網路大資料時代,網路文章鋪天蓋地,如何從中發掘出有價值的資訊一直是學術和工業界研究努力的方向。新聞資訊中隱藏著許多的投資機會,紛繁複雜的資訊文章中及時有效的提取出這些有價值的資訊,將為投資者提供非常有價值的參考決策依據。
事件分析的難點,主要是在語義層面、事件的指向、事件跨句子描述等問題。由於新聞資訊類文字的描述形式與常見語法中主謂賓等形式界定不盡相同,且事件主體依賴於事件定義,事件在文字中的描述形式變化多樣,不能簡單的從詞性和詞集角度定義謂詞論元。此外,金融領域的事件對時態狀態也有要求。時態包括過去現在將來,狀態包括否定轉義成功失敗暫緩延期等等,每一個元素都決定了事件是否成立。
本文所述演算法建模的目標就是在文章中發現公司及其關聯的事件型別,我們將這個問題分成多個步驟進行建模,包括了:命名實體識別(公司名)、指代消解、事件型別和事件主體識別。
一、怎麼才算是一個“事件”?
一個事件通常有幾個核心要素組成:事件型別、事件觸發結構、事件論元和論元角色,
· 事件型別 (Event):業務場景決定了事件型別的劃分方式,可以是多個層級股權類、經營類等,具體事件型別比如經營擴張、產能過剩、資金緊張等。
· 事件觸發結構(Trigger):即代表事件內涵的核心表達詞彙、短語、搭配方式等,多為動詞或名詞等具備具體含義的詞彙組成。
· 論元(Argument):事件的參與者。在語言學中,論元就是指一個句子中帶有名詞性的詞。比如,“證監會對康美藥業責令整改,給予警告,並處60萬元的罰款” 。這裡含有兩個論元,即證監會和康美藥業。
· 論元角色(Role):事件參與者在事件中充當的角色,例如事件的施事者或受事者。即證監會是施事者,康美藥業就是受事者。
二、把事件“抽”出來分幾步?
事件抽取的任務主要是從非結構化資訊中抽取出結構化資訊。根據一個事件的組成要素,我們可以將事件抽取可分解為4個子任務:潛在事件監測、事件型別分類、論元識別、角色分類
潛在事件監測和事件型別分類可合併成事件識別任務。論元識別和角色分類可合併成論元角色分類任務。這兩個任務相互依賴,論元角色分類依賴事件識別的輸出。論元角色分類任務的輸入是識別出的觸發詞和所有候選實體。
按照事件要素在文字涉及的範圍,又可以將任務分為,
· 句子級別的事件抽取:只使用句子內部獲取的特徵;
· 篇章級別的事件抽取:使用跨句、跨文件抽取的特徵資訊。
在特徵工程方面,可以從兩個角度來提取語義資訊,
· 詞法特徵:包括詞性、實體資訊以及形態學特徵。目標是獲取詞語的語義以及詞語背後的知識。例如當前詞以及周邊詞的Uni/Bi-Gram、詞性標籤、同義詞等;
· 上下文特徵:結合上下文資訊,目的在於理解事件在一個大的範圍中是如何被聯絡到一起的。
三、事件抽取的常見方法
1. 基於模式匹配的事件抽取
模式匹配方法基於業務經營預定義抽取模板和規則化表示式,具備較強的業務邏輯性,其優點在於簡單易上手,精確可解釋。缺點在於人工構造規則工作量大,後期維護成本較高,而且模式的可移植性差,缺乏語義泛化能力,召回率普遍較低。
深度神經網路方法,可以自動學習有效特徵。輸入特徵可以採用預訓練的詞向量,而且還融入了單詞的語法和位置資訊,不僅能夠構建語義資訊,還能自動組合構建更上層的特徵。
除了基於CNN的特徵學習模型外,還有采用RNN對文字中的序列資訊進行建模,從而做事件抽取任務。通過基於聯合模型的神經網路做事件抽取,簡單理解為多個任務同時學習,部分引數共享學習。在事件抽取任務中,往往是將事件識別和論元角色分類任務同時聯合學習。
適用於事件抽取的神經網路模型包括:
· LSTM, long short term memory,長短期記憶網路,是一種通過精心設計的RNN,能夠學習長期的依賴關係,能較好解決梯度消失問題。
· BiLSTM,Bi-Direction LSTM, 雙向LSTM,一個向前學習的LSTM和一個向後學習的LSTM,具有同時從上文和下文中提取資訊的能力。
· BiLSTM-CRF模型,序列標註任務中很流行的深度學習模型。CRF(Conditional Random Field) ,條件隨機場是給定一組輸入隨機變數條件下,另外一組輸出隨機變數的條件概率分佈模型,其特點是假設輸出變數構成馬爾可夫隨機場。將詞向量輸入BiLSTM後,學習到上下文特徵資訊,以及長距離依賴資訊,然後輸出到CRF,於是CRF能更好地構造字與字之間的特徵對應關係。
經過實踐驗證,這裡推薦一篇事件分析相關的經典論文: Event Extraction via Dynamic Multi-pooling Convolutional Neural Networks(2015)
· 該論文率先嚐試神經網路方法應用於事件抽取任務,並相對傳統方法取得較好效果。
· 採用預訓練的詞向量作為單詞的初始表示,將事件型別特徵用於角色分類任務。
· 在上層特徵學習模型方面,研究中使用CNN來自動抽取有效特徵進行事件抽取任務。
四、分步打造事件抽取系統
1. 事件主體識別
事件主體識別是從文字中找出在事件中充當的主體角色元素。經過多重經典模型的對比,我們採用了基於指標網路帶注意力機制(PAN,Point Attention Network)的事件主體識別模型,模型結構設計為四層:
第一層是預訓練語言模型層,用BERT來做動態詞向量表示。自Google在2018年10月底釋出BERT(Bidirectional Encoder Representation from Transformers)後,這是第一個真正意義上做到雙向編碼表示學習的深層預訓練語言模型網路,並且在11項NLP任務上有很好表現,為整個NLP研究開啟了全新的視角,徹底改變了預訓練產生詞向量和下游具體NLP任務的關係。正是BERT的優異表現,我們這裡也嘗試用BERT作為詞彙特徵表示。
第二層是編碼層用雙向LSTM。得到BERT向量特徵表示序列後,融合事件型別,我們用BiLSTM做編碼,前向和後向的LSTM能更好的學習到上下文序列特徵。
第三層是注意力匹配層。我們利用Self-Attention機制,它的特點在於無視詞之間的距離直接計算依賴關係,能夠學習一個句子的內部結構,實現也較為簡單,並且可以平行計算,使模型能更多的聚焦到事件對應的主體上。
第四層是序列抽取層。我們利用指標網路(Pointer Networks)做序列抽取,指標網路在計算整個序列之後,選擇概率最大的狀態元素作為輸出。然後將抽取結果和NER識別的公司實體再做距離和字串上的校驗匹配,得到最終的事件主體。
最終在我們積累的數十萬金融領域風險事件樣本中,實際測試效果還是比較理想的,達到了業務可用水平。部分型別事件主體識別評測效果:
2. 事件型別識別模型
金融領域的事件型別是指文字所包含商業資訊的事件,比如經營擴張、產能過剩,資金緊張等。事件型別根據業務場景定義,常用做法是使用正規表示式或關鍵詞做初始積樣本篩選,然後通過人工標註積累訓練樣本,之後利用分類演算法訓練分類模型。
金融事件的特徵相對明顯,業務術語等很大程度上決定了分類的效果,我們直接採用了簡單有效的Fasttext分類模型,在句子級的事件識別任務中達到了95.7%的準確率。
3. 基礎模型的優化
事件抽取任務的優化還涉及到很多具體的細節,抽取效果很大程度上依賴底層基礎模型的效果,包括例如:
· 針對文字描述中事件跨句子段落難以匹配主體的問題,使用指代消解來還原文章中公司名的指代詞,建立跨句子段落的事件與主體之間的聯絡。
· 對於事件的時態和狀態,採用頻繁模式挖掘以及句法分析,找到與事件和主體的修飾關係來解決。如“暴風集團股東擬減持不超0.67%股份”,“擬”表示將來時態,修飾的是“股東減持”這個事件型別。
· 句法分析依賴於分詞和詞性標註的效果。使用大規模的金融領域資訊語料單獨進行分詞器和NER模型的訓練,一步步解決分詞、詞性和實體識別的問題。
· 針對公司名識別,採用bert-bilstm-crf演算法進行命名實體識別,通過序列標記位滑動視窗模型(SW,sliding window),對預測不完整或不準確的部分進行自適應糾正,提升NER識別準確率,優化後F1值從88.2%提高到90.6%。
五、領域事件抽取道阻且長
目前就事件抽取任務的研究大多是基於ACE標準資料集展開,只針對某個特定領域或幾個型別的事件進行研究,並不能夠隨著領域的變化進行快速的移植或擴充套件。
針對金融領域的專業事件,我們嘗試過無監督、半監督、有監督的多種方法,也探索過經典機器學習和深度學習的模型,最終經過實際資料回測對比,我們綜合採取了模式匹配和多種神經網路模型的聯合學習方式,較為有效的兼顧了訓練樣本篩選、精確標註、模型冷啟動以及泛化相容性等問題。
事件抽取任務的研究中涉及了大量的演算法模型及知識圖譜等底層技術的積累和資料沉澱,距離真正做好,能夠支撐事件驅動分析,影響性傳播分析,最終指導投資和風控業務等目標應用場景,還有很長的路要走。
不過在探索過程中,我們發現不知不覺間積累的模型其實不光可以用在事件抽取任務,還可以被廣泛用在金融文字分析的各種業務場景,包括資訊主題標籤、資訊多空分析、問題意圖理解、個股實體消歧、個性化資訊推薦等,都取得了顯著的效果提升。