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