基于預訓練模型的金融事件分析及應用
一、金融事件分析的主要任務
金融事件分析的主要任務可以分為三塊:
① 第一塊為非結構化數(shù)據(jù)智能解析。金融領域的信息與互聯(lián)網(wǎng)信息相比有著其獨特之處。金融領域的信息經(jīng)常是以非結構化的形式存在,并且有一些比較特殊的文件格式,比如 PDF,這對于從文件或數(shù)據(jù)中抽取干凈準確的數(shù)據(jù)提出了比較大的挑戰(zhàn)。PDF 格式是一種排版打印的格式,并不像其他文件類型那樣段落分明。PDF 更多是為了服務排版,所以文件里只存在一些位置信息。要從非結構化數(shù)據(jù)中解析出準確的格式語義清晰的文本是比較有挑戰(zhàn)的。而且當文檔中格式語義不清楚時,對事件分析就會帶來噪音,而這些臟數(shù)據(jù)會對模型的訓練和推理造成很多干擾。所以為了提高模型準確度,應該先做好非結構化數(shù)據(jù)的解析。
② 第二塊是事件語義的理解,這是技術上比較重要的一部分。這里主要涉及到事件的檢測,事件要素的抽取和事件關系的抽取。
③ 在對事件的理解的基礎之上,就引入了任務中比較重要的第三塊模塊,事件的圖譜分析,它包括事件鏈的分析和事件預測。
為了完成上述任務,引入兩個比較重要的體系。首先是金融事件體系,一個金融事件體系包含了金融領域的相關主體,這些主體也有不太一樣的應用場景。為了更好地支持這些主體和場景,需要建立相應的事件體系,這里面涉及到很多領域知識,需要領域?qū)<姨峁┫鄳闹R作為輸入。從而幫助我們把這個體系構建的更完善更科學,能夠覆蓋相應場景。當然除了專家知識外,也會需要技術進行歸納學習,這樣也能夠提供完整的場景化的可擴展的事件體系。
因為引入專家知識主要是針對場景中比較重要的事件。對于一些中長尾的事件,主要還是基于學習的一些技術來解決。有了金融事件圖譜,我們把事件提取技術結合在一起,經(jīng)過事件抽取,事件關系的分類,學習事件的表示后,就可以構造圖來進行分析和預測。
通過明確任務和技術的加持,我們就可以對新聞或文檔進行處理并歸納回答很多問題。比如,哪個公司發(fā)生了什么類型的事件,事件中涉及了哪些要素,例如通用要素時間、地點、人物,或者與事件類型相關的要素,比如,事件“公司股票發(fā)行”,就包含要素發(fā)行價格、發(fā)行量等等。除此之外我們還可以關注這些信息,比如民眾對這個事件的評價(情感分析)。以及發(fā)生了某類事件后,對企業(yè)未來會發(fā)生什么的預測。如果可以回答上述問題,那么對很多場景都是很有價值的。
下面我們來看一個具體例子。
上圖將金融事件體系分為兩級,第一級有五類,主要按照具體對象作區(qū)分,比如企業(yè)類事件,股票類事件,行業(yè)和宏觀類事件,債權類事件和基金類事件。針對不同的事件對象定義了不同的事件類型。這些都是金融領域中最常見的對象。第二級里我們是將每種對象進一步細分。比如一個企業(yè)里面常見的事件類型,比如股東減持等(可參考上圖)。以股東減持這類事件為例,它所包含的事件元素有減持的時間,減持的股東,減持時的交易價格等信息。定義一個完整,對場景有針對性的事件體系是事件分析能達成目標的重要前提,事件體系定義的細致程度將決定最終事件分析能達到的事件信息細粒度的程度。
下面介紹事件圖譜。
事件圖譜屬于圖,包含節(jié)點和邊。在事件圖譜中,事件節(jié)點可以是事件,也可以是事件中的實體,比如公司。邊就是事件和事件的關系,也可以是事件和實體間的關系或?qū)嶓w和實體之間的關系。
我們來看一個例子。上圖是一篇介紹亞馬遜公司收購 iRobot 公司的新聞。這篇新聞報道中一共描述了四個事件,其中兩個是收購事件,分別發(fā)生在不同的時間。另兩個分別為創(chuàng)立公司的事件和合作的事件。這些事件是由其發(fā)生的時間順序連接起來的。除了事件,這篇新聞也包含其他實體和時間,這些實體和時間之間也由相應的關系相連。
這樣看來一個非結構化的網(wǎng)頁信息,通過解析出文檔中的文本和段落、對段落進行語義分析,抽取事件實體和關系,我們就可以構造事件圖譜。也就是將非結構化數(shù)據(jù)轉(zhuǎn)化成結構化的信息。有了結構化的信息,就更容易進行對信息的理解和處理。這樣的信息可以應用于搜索、問答等信息獲取場景,或者是金融領域的風險監(jiān)控、量化投資等業(yè)務場景中。
事件鏈是一種特殊的事件圖譜,是事件圖譜的簡化模式。它主要關注的是一個參與者發(fā)生的一系列事件和事件之間的關系。從上圖可以看出左側的事件圖譜可以簡化成右邊的兩個事件鏈。事件鏈中只包含簡化節(jié)點,其他元素都可看作事件鏈的屬性信息。這種簡化對事件圖譜的落地應用是有幫助的。事件圖譜的關系和節(jié)點簡化后,模型對圖譜的學習和處理都只針對一種節(jié)點,和事件間的一種關系,降低了這種問題的復雜度。雖然有所簡化,但事件中的主要信息還是會保留下來,比如事件類型,事件主體等信息。
下面來看一個事件鏈是如何進行預測。
上圖是一個事件鏈的預測模型。它主要由三部分組成,第一部分是事件表示,這里有當前事件,歷史事件和最終我們想預測的文本中的事件。歷史事件和要預測的事件,它們表示的觸發(fā)詞和事件元素拼接起來之后可以更好的捕捉歷史信息。將事件的上下文表示和歷史表示結合起來就進入到第二部分,事件的序列表示,這里用到了一個 LSTM 的網(wǎng)絡結構,它可以捕捉事件和事件之間的時序關系,將事件先后順序信息融入到事件表示中來。最后包含時間順序關系的事件表示會被輸入給動態(tài)網(wǎng)絡中,這個網(wǎng)路可以用來對候選事件和給定的新聞中的事件進行預測。比如候選事件類型有幾十種,那么我們就根據(jù)當前新聞中已經(jīng)見到的事件類型來預測哪一個事件可能是這個主體未來會發(fā)生的比較大的事件類型。結果是給出事件類型的分布。
這里需要強調(diào)的一點是,這個模型的預測結果并不是預測這個公司未來一定會發(fā)生的事件,而是給出這樣一些輔助信息來為分析、預測、研判提供依據(jù)。
上面所講到的事件鏈和事件預測,是對還沒發(fā)生的情況進行預測和判斷。事件預測其實也能夠?qū)σ呀?jīng)發(fā)生的事件提供一些有用的幫助。
下面我們看另一個例子。這個例子是根據(jù)已經(jīng)發(fā)生的事件提供一些有用的幫助。
這種基于事件庫的事件問答,可以支持自然語言對事件的搜索。我們首先在語料庫進行抽取,建立結構化事件庫,每種類型事件會建立一個表,表中的各個字段表示不同的事件元素,結合 NL2SQL 的技術可以把查詢語句轉(zhuǎn)化成數(shù)據(jù)庫的查詢語句。這樣我們就可以在剛剛建立好的表格中查找到準確的事件類型。這和我們目前市面上通用的搜索引擎來搜索事件的體驗是不一樣的。搜索引擎返回的結果是這個事件類型的很多種新聞,即使找到相關新聞,看到的結果也是一篇完整報道而不是具體事件的具體信息。通過基于事件庫的事件問答,我們可以更精準的針對事件進行問答搜索。
通過上圖的例子可以看到事件分析在具體場景下可以如何進行分析。企業(yè)的股價波動是市場關注的重點?;谑录墓蓛r波動也是事件分析中 NLP 和金融領域結合的一個場景,它可以實現(xiàn)市場信息和股價波動變模。上圖是模型中給出兩個特征,一類是表征具體企業(yè)的,另一類是表征企業(yè)與企業(yè)之間關系。我們引入事件分析可以抽取事件類型以及參與事件的不同公司。抽取出的事件類型和公司可以提供的兩類信息,一個是事件的表示,它可以成為一個特征,與企業(yè)特征融合。企業(yè)與事件的關系可以構造企業(yè)間的關聯(lián)關系模塊。再加入既有的特征,比如針對企業(yè)的技術指標或企業(yè)關系圖譜。將兩者結合我們可以構造出具有企業(yè)信息和關系信息的圖譜。根據(jù)這個圖譜我們運用 Graph Attention Network 捕捉企業(yè)之間的關系對企業(yè)股價波動表現(xiàn)的影響。將股價波動作為模型學習的目標來訓練模型,我們得到的模型網(wǎng)絡結構可以達到對公司從新聞產(chǎn)業(yè)類圖譜、企業(yè)關系圖譜這樣的特征得到企業(yè)未來特征的一個判斷,同時通過 Attention 模型的分析,也可以知道波動主要來自于哪些模塊,是事件類型的模塊還是事件關系的模塊。并且企業(yè)之間關系的建模也可以分析這種影響在相關企業(yè)之間是如何進行傳播的。這在金融領域中也可以叫做動量溢出的效用。
綜合前面我們介紹的各種事件分析的技術和場景。我們總結出了完整的事件分析框架。(如下圖)
它提供了幾大能力:
① 首先,它可以搜索某個事件或某主體的各類事件。
② 其次,它可以提供通過產(chǎn)業(yè)鏈搜索某公司同行業(yè)的相關各類事件,可以是產(chǎn)業(yè)鏈或公司鏈。
③ 這個框架還可以根據(jù)某公司的搜索結果預測未來可能發(fā)生的事件。
這個框架的優(yōu)勢是,它基于預訓練模型,有遷移學習的能力,可以支持 zero-shot/few-shot 訓練,冷啟動快。并且這種體系化的方法能力比較全面,能支持豐富的場景。
不是所有的場景都需要框架中的所有模塊,可以根據(jù)需求將模塊拆分出來單獨使用。
二、金融事件分析技術
金融事件分析技術中比較重要的兩塊內(nèi)容分別為事件檢測和事件抽取。
事件檢測任務的目標是從文本中抽取出事件并進行分類。通常是抽取觸發(fā)詞進行事件檢測,但也有些辦法是無觸發(fā)詞抽取的事件檢測。這類問題的挑戰(zhàn)是觸發(fā)詞的標注,或者發(fā)生語義遷移、事件拆分、事件定義變化等問題時需要我們重新標注數(shù)據(jù)。這類問題在實際場景中經(jīng)常會出現(xiàn)。我們雖然有一套自己的事件檢測方案,但是應用到不同領域或面對不同客戶需求時,它們的事件體系都有很大差別,如何結合已有的模型和數(shù)據(jù)更好的去支持事件體系的變化是我們目前面對的最大挑戰(zhàn)。目前采用的方法是基于提示詞和預訓練模型的事件檢測。根據(jù)事件類型的 Prompt 我們可以更好的去做數(shù)據(jù)遷移或 few-shot 場景的模型訓練。
上圖展示了基于觸發(fā)詞的模型和方法。根據(jù)事件類型的 Prompt,模型的輸入可以進行 token 級別的標注,這樣可以抽取相應事件的觸發(fā)詞。如果根據(jù)當前的 Prompt 進行觸發(fā)詞變換的話,對應的事件類型和觸發(fā)詞可以進行相應的變化。通過在公開數(shù)據(jù)集上的數(shù)據(jù)對比,可以看出在全量數(shù)據(jù)中,我們的模型的表現(xiàn)比以往方法有比較大的提升,即使在 few-shot 情況下,我們的模型表現(xiàn)也要優(yōu)于其他模型。
事件抽取任務是事件檢測任務功能的擴展。它不僅識別出事件類型和觸發(fā)詞,還可以提取出事件中的相應元素。這對事件分析要求信息比較完整的場景有著較大的作用。上圖中的例子,可以抽取出更細粒度的信息。事件抽取的挑戰(zhàn)包括定義完整的事件體系中,事件元素會比較多,數(shù)據(jù)的標注需要領域?qū)<襾硗瓿?,成本比較高,難以擴展到很多的事件類型。我們目前的解決方案是利用預訓練模型和 Prompt,基于生成式的方法在標注數(shù)據(jù)更少的場景下也能有不錯的模型性能,具有更高的數(shù)據(jù)利用率和靈活性,更容易擴展到新的事件類型。
事件抽取任務是事件檢測任務功能的擴展。它不僅識別出事件類型和觸發(fā)詞,還可以提取出事件中的相應元素。這對事件分析要求信息比較完整的場景有著較大的作用。上圖中的例子,可以抽取出更細粒度的信息。事件抽取的挑戰(zhàn)包括定義完整的事件體系中,事件元素會比較多,數(shù)據(jù)的標注需要領域?qū)<襾硗瓿?,成本比較高,難以擴展到很多的事件類型。我們目前的解決方案是利用預訓練模型和 Prompt,基于生成式的方法在標注數(shù)據(jù)更少的場景下也能有不錯的模型性能,具有更高的數(shù)據(jù)利用率和靈活性,更容易擴展到新的事件類型。
上圖中是一個基于模板的生成式事件抽取方法。這個抽取方法定義了幾個重要的概念。首先在抽取前我們要預先定義模板,有了模板后,可以在訓練時提供給模型,在定義新事件時有些元素與之前事件有關聯(lián),這些信息也可以預先提供給模型。通過這種方法,模型可以在少量數(shù)據(jù)下學習新的事件類型。
雖然上面方法可以在一定程度上解決事件抽取問題,但是也還有很多改進的空間。比如目前方法觸發(fā)詞和事件元素的聯(lián)系較弱;推理時需要輪詢所有事件類型,計算量大推理時間長;事件檢測和事件要素抽取模塊采用 Pipeline 組織,存在錯誤傳播。
我們根據(jù)上面提出的問題,改進了模型,提出了另一個基于觸發(fā)詞檢測增強的生成式事件抽取方法 TDE-GTEE。
(Ge Shi, Yunyue Su, Yongliang Ma and Ming Zhou (2023). A Hybrid Detection and Generation Framework with Separate Encoders for Event Extraction. In Proceedings of the 17th Conference of the European Chapter of the Association for Computational Linguistics: Main Volume. Association for Computational Linguistics.)
在這個方法中,事件檢測模塊提供了事件觸發(fā)詞的信息。在輸入中我們會標注觸發(fā)詞,并且根據(jù)事件類型信息選擇相應的模板。這種輸入和事件模板后面組合在一起后,就可以構成事件檢測模塊的表示。這種表示會給入話題模型,最終得到填充后的模板。這個模型和上一個模型的不同是這個模型多了一個觸發(fā)詞的表示,同時也會將上下文信息結合起來。這樣解決剛才說的第一種問題,觸發(fā)詞和觸發(fā)詞抽取元素之間的聯(lián)系不多的問題。這個模型就可以構造兩者之間的顯示關系。同時通過觸發(fā)詞輸入,我們可以得知觸發(fā)詞的相關事件類型。這樣我們可以將不相關的事件類型過濾掉。事件檢測模塊只會針對相關的事件類型進行事件抽取。最后事件檢測模塊和事件抽取模塊可以構成一個端到端的聯(lián)合訓練。這種模型就可以解決前文提到的另外兩個問題。
TDE-GTEE 模型在公開數(shù)據(jù)集 ACE 和 ERE 上都達到了 SOTA 水平。在實驗中我們用了全量數(shù)據(jù)。為了驗證此模型在少量樣本下的表現(xiàn),我們也通過對事件檢測模塊做了一些調(diào)整比如使用基于 Prompt 的方式替換原先的多分類方式。在 zero-shot/few-shot 上模型也可以達到很好的效果。我們相信這個模型可以在實際場景上得到廣泛的應用。
三、總結和展望
事件分析技術在金融領域應用廣泛,場景也很多。一個完善涵蓋事件分析體系框架將為金融領域的信息理解提供強有力的技術支持。
瀾舟科技在金融事件分析領域中提出的 TDE-GTEE 等方法可以達到 SOTA 水平,在少樣本和零樣本場景下也有很好的表現(xiàn)。我們將在金融事件分析領域持續(xù)推進技術進步和落地產(chǎn)品化。
四、問答環(huán)節(jié)
Q1:是否有專門針對事件圖譜的數(shù)據(jù)庫,傳統(tǒng)的圖數(shù)據(jù)庫如 Neo4j 是否適合存儲和管理事件圖譜?
A1:是有專門針對事件圖譜的數(shù)據(jù)庫,有些數(shù)據(jù)的提供商有提供這類數(shù)據(jù)庫。比如瀾舟科技,螞蟻集團等公司,也會在其公司內(nèi)部構建自己的數(shù)據(jù)庫。Neo4j 是可以用來進行事件圖譜的存儲和管理。根據(jù)使用場景不同,在復雜場景下,Neo4j 更適合來進行存儲和管理。如果簡化成事件鏈,事件的表示可以更靈活,我們做的是將數(shù)據(jù)從文本中抽取出來生成事件鏈作為模型的訓練數(shù)據(jù)進行訓練。訓練中不涉及圖譜的運算。
Q2:股票波動分析的效果該如何評估?
A2:主要有兩種方式。我們在具體模型的構造和評估的過程中,更多是依賴于股票市場的信息??梢岳斫鉃榱炕灰字械幕販y,我們運用歷史數(shù)據(jù)進行訓練和評估。另外一種就是在真實場景中,我們會用人工來判斷,比如根據(jù)企業(yè)的新聞和股票量價交易的技術指標預測未來一個月的股價波動。我們會具體去看這一個月是否真的會發(fā)生股價波動。如果波動發(fā)生,會去分析對應的事件類型,對應的股價的量價信息等元素來判斷是否存在強因果關系。