Kevin:QQ音樂命名實(shí)體識(shí)別技術(shù)|DataFunTalk

導(dǎo)讀:命名實(shí)體識(shí)別(Named Entity Recognition,簡(jiǎn)稱NER)是自然語言處理中的熱點(diǎn)研究方向之一,目的是識(shí)別文本中的命名實(shí)體,并將其歸納到相應(yīng)的實(shí)體類型中。命名實(shí)體識(shí)別也是NLP最重要的底層任務(wù)之一,在學(xué)術(shù)界和工業(yè)界一直都是重點(diǎn)研究的問題。今天主要和大家分享音樂領(lǐng)域的命名實(shí)體識(shí)別技術(shù),包括以下幾方面內(nèi)容:

  • 背景介紹
  • 候選生成與訓(xùn)練數(shù)據(jù)構(gòu)建
  • 用戶Query NER模型
  • 音樂文本NER模型
  • 未來展望

01
背景介紹

  1. NER的定義與應(yīng)用
Kevin:QQ音樂命名實(shí)體識(shí)別技術(shù)|DataFunTalk

NER就是識(shí)別文本中具有特定意義的實(shí)體,在音樂領(lǐng)域中實(shí)體主要包括歌曲名、歌手名、影視、綜藝、版本、音樂流派等,例如:

  • Block B在一周的偶像中挑戰(zhàn)二倍速的Her,rap部分感覺Zico的舌頭都要打結(jié)了
  • 給我來一個(gè)東方紅謝謝

這里有歌曲名(Her、東方紅)、歌手名(Block B、Zico)、綜藝(一周的偶像)。在音樂領(lǐng)域中,NER在多種類型的文本上都有著廣泛的應(yīng)用,這里我們主要分為兩大類:用戶query理解和音樂文本結(jié)構(gòu)化。

① 用戶query理解

用戶的query理解,包括了搜索框內(nèi)的文本搜索以及語音場(chǎng)景下的搜索。比如說這里用戶在搜索框內(nèi)輸入的query是 “周杰倫的七里香”,由于我們庫內(nèi)沒有同名的資源,因此這里我們就需要NER模塊從中來提取出歌手名=周杰倫、歌曲名=七里香,這樣我們才知道用戶想要的其實(shí)是周杰倫唱的七里香這首歌。

② 音樂文本結(jié)構(gòu)化

音樂文本的結(jié)構(gòu)化,主要是從我們庫內(nèi)的視頻標(biāo)題、歌單標(biāo)題、評(píng)論等非結(jié)構(gòu)化文本數(shù)據(jù)中抽取出一些音樂領(lǐng)域的實(shí)體,便于在搜索推薦等任務(wù)中應(yīng)用。

  1. NER的發(fā)展歷程
Kevin:QQ音樂命名實(shí)體識(shí)別技術(shù)|DataFunTalk

NER在早期的時(shí)候主要是基于規(guī)則和詞典,還有統(tǒng)計(jì)機(jī)器學(xué)習(xí)的方法(HMM、CRF、SVM等),這類方法主要的優(yōu)點(diǎn)是速度比較快,精確率比較高,但是召回率通常比較低。目前工業(yè)界主要是在搜索的場(chǎng)景下,采用這類方法來處理一些高頻query,以實(shí)現(xiàn)線上大多數(shù)請(qǐng)求的快速響應(yīng)。

2016~2018年之間隨著深度學(xué)習(xí)的發(fā)展,相關(guān)從業(yè)者也在NER領(lǐng)域做了比較多的研究工作,提出了基于淺層神經(jīng)網(wǎng)絡(luò)的方法。它的基礎(chǔ)結(jié)構(gòu)是通過LSTM或者IDCN這樣的淺層神經(jīng)網(wǎng)絡(luò)去抽取文本的特征,然后通過CRF進(jìn)行解碼,得到對(duì)應(yīng)的實(shí)體序列,在這樣的模型基礎(chǔ)上,融入外部詞典特征和領(lǐng)域內(nèi)信息等外部知識(shí)進(jìn)行模型優(yōu)化。此外還有其他一些研究工作,考慮如何融入多粒度信息,比如LSTM+CHAR-CNN增加一個(gè)字符級(jí)的CNN融入,LATTICE-LSTM通過對(duì)LSTM的結(jié)構(gòu)進(jìn)行修改實(shí)現(xiàn)詞以及短語等不同粒度信息的融入。根據(jù)我們的調(diào)研,這類目前依然是工業(yè)界主流的解決方案,我們?cè)谟脩魆uery NER中就采用了這一類的方法。

2018年后,隨著Bert的興起,基于大規(guī)模預(yù)訓(xùn)練語言模型的方法成為了趨勢(shì),這類方法主要特點(diǎn)是,將淺層的文本抽取器、特征提取器,改成Bert這樣的大規(guī)模訓(xùn)練語言模型,從而獲取質(zhì)量更高的embedding去優(yōu)化下游的任務(wù)。此外在這類方法的基礎(chǔ)上還會(huì)有一些相關(guān)的優(yōu)化,比如說ACL2020的FLAT,基于transformer序列全連接的結(jié)構(gòu),實(shí)現(xiàn)外部詞典信息的引入。目前這類方法是學(xué)術(shù)界的一個(gè)研究重點(diǎn),我們是在音樂文本的命名實(shí)體識(shí)別上采用了這類的解決方案,并針對(duì)場(chǎng)景進(jìn)行了一些優(yōu)化。

  1. 音樂領(lǐng)域NER的難點(diǎn)
Kevin:QQ音樂命名實(shí)體識(shí)別技術(shù)|DataFunTalk

① 領(lǐng)域相關(guān)性強(qiáng)

如果沒有領(lǐng)域內(nèi)的相關(guān)知識(shí),文本中的實(shí)體難以正確地被識(shí)別,比如:張碧晨時(shí)間有淚憂傷的恰如其分,這句話中《時(shí)間有淚》是一首歌曲,如果我們事先不知道它是歌曲名,僅通過文本層面的信息很難正確地切分出它的邊界。

② 實(shí)體名命名不受限且歧義大

這里的歧義主要有兩方面,第一個(gè)是實(shí)體名與自然語言表述的歧義,比如:天后梅艷芳與歌神張學(xué)友同臺(tái)合唱,薛之謙唱過一首歌《天后》,但是在這個(gè)句子中 “天后” 并不是歌曲名,而是對(duì)歌手梅艷芳的一個(gè)稱謂。第二的話是同樣一個(gè)實(shí)體名在不同場(chǎng)景下實(shí)體類型可能不同,比如:“安靜的歌曲”與“歌曲安靜”,前面的 “安靜” 指的是一種歌曲類型,而后面的 “安靜” 指的是周杰倫唱的歌曲《安靜》。

③ 缺乏足夠的上下文信息

這一難點(diǎn)主要是針對(duì)于用戶query,因?yàn)橛脩魆uery通常是一些實(shí)體的堆疊,很多都缺乏上下文信息,并且和正規(guī)的文本相差比較遠(yuǎn),比如:張韶涵夜空中最亮的星鄧紫棋。它是由(張韶涵、夜空中最亮的星、鄧紫棋)三個(gè)實(shí)體堆疊而成的,沒有任何的上下文信息可以利用。

④ 表述具有多樣性

這一難點(diǎn)主要是針對(duì)于音樂文本,音樂文本同開放域文本一樣,也是具有多樣性的。同樣的意思可能有多種表達(dá)方式,并且表達(dá)方式相對(duì)于正規(guī)文本來說更加的不規(guī)范。比如對(duì)這樣一個(gè)視頻標(biāo)題:女歌手彈唱一首恰似你的溫柔,真是好聽。如果我們把彈唱替換成演唱/帶來/創(chuàng)作,甚至其它的表述方式,它都是合理的。

  1. 整體解決方案
Kevin:QQ音樂命名實(shí)體識(shí)別技術(shù)|DataFunTalk

從上述四個(gè)難點(diǎn)可以看出,要想正確識(shí)別文本中的實(shí)體,需要將實(shí)體屬性的建模以及文本信息的建模相互結(jié)合起來。這里介紹一下我們的一個(gè)整體解決方案,主要分為離線和在線兩個(gè)部分。

① 離線模塊

離線分為三個(gè)子模塊:基礎(chǔ)數(shù)據(jù)、中間層數(shù)據(jù)、模型。

基礎(chǔ)數(shù)據(jù)

基礎(chǔ)數(shù)據(jù)包括搜索日志、播放日志、曲庫數(shù)據(jù)等內(nèi)容,其中搜索日志和播放日志主要是對(duì)用戶行為上報(bào)的存儲(chǔ),曲庫數(shù)據(jù)主要是存儲(chǔ)在庫中的結(jié)構(gòu)化資源數(shù)據(jù)。

中間層數(shù)據(jù)

中間層數(shù)據(jù)主要是基于基礎(chǔ)數(shù)據(jù)進(jìn)行計(jì)算和變換所得到的中間層數(shù)據(jù),包括實(shí)體知識(shí)庫、規(guī)則庫、實(shí)體候選集以及訓(xùn)練語料等。

實(shí)體知識(shí)庫是對(duì)結(jié)構(gòu)化資源信息和用戶行為日志進(jìn)行一些整合變換得到的key-value集合,其中key表示的實(shí)體名,value是這個(gè)實(shí)體對(duì)應(yīng)的一些屬性,通過這樣的存儲(chǔ)方式,便于下游工作對(duì)它的利用。

規(guī)則庫主要是對(duì)于用戶query文本,通過Bootstrapping之類的文本挖掘方法,從中挖掘出一些頻繁出現(xiàn)的模式,然后存儲(chǔ)到規(guī)則庫中。

實(shí)體候選集主要是存儲(chǔ)文本中可能是實(shí)體的片段,關(guān)于實(shí)體候選集和訓(xùn)練語料的構(gòu)建,后面會(huì)比較詳細(xì)闡述我們采用的方法。

模型

在前面的難點(diǎn)中提到了,我們這里主要有兩大類的文本,一類是純UGC的文本,比如用戶的query,另外一類就是相對(duì)而言中長(zhǎng)一些的文本,比如標(biāo)題、評(píng)論等。針對(duì)這兩類不同的文本,我們采用兩類不同的模型,因?yàn)橛脩魆uery的上下文信息比較缺乏,我們采用了GRU對(duì)文本進(jìn)行編碼,對(duì)于其他的一些中長(zhǎng)類的文本,我們采用BERT來提取更豐富的上下文信息。在兩類baseline模型的基礎(chǔ)上,我們針對(duì)如何去融入領(lǐng)域內(nèi)的知識(shí)進(jìn)行了一些探索,在下文都會(huì)進(jìn)行詳細(xì)闡述。

② 在線模塊

線上預(yù)測(cè)分為四個(gè)部分:首先經(jīng)過一個(gè)候選生成與初篩模塊,得到文本中存在的候選片段,然后依次通過規(guī)則和模型識(shí)別得到識(shí)別結(jié)果,最后再通過融合模塊進(jìn)行融合,得到最終的識(shí)別結(jié)果。通過這樣的方式,我們可以將規(guī)則的高精確以及模型的高召回結(jié)合起來,得到質(zhì)量比較高的識(shí)別結(jié)果。

02
候選生成與訓(xùn)練數(shù)據(jù)構(gòu)建

  1. 候選生成

候選提取就是從文本中提取出盡可能不重疊的高置信候選實(shí)體。

Kevin:QQ音樂命名實(shí)體識(shí)別技術(shù)|DataFunTalk

在上圖例子中,針對(duì)用戶query“陳小春的歌亂世巨星”,通過與知識(shí)庫匹配,可以得到“陳小春”、“小春”、“小春的歌”等候選實(shí)體。如果直接將這些信息加入到模型中,會(huì)給模型帶來很大的噪聲,因?yàn)檫@些候選在這個(gè)片段中位置上是高度重疊的,因此我們需要通過一個(gè)篩選模塊,從中篩選出一些盡可能不重疊的候選,比如最終我們選擇了陳小春,亂世巨星兩個(gè)候選,然后把他們加入到模型中,就可以提供一個(gè)比較好的外部信息。前面我們提到了音樂領(lǐng)域的NER是有強(qiáng)領(lǐng)域相關(guān)性的,因此候選的效果對(duì)最終的效果有很大的影響。

針對(duì)候選的提取業(yè)界常見的解決方案主要有最大匹配和最小匹配方法:

最大匹配算法貪心地去選擇一個(gè)最長(zhǎng)的候選,它的主要缺點(diǎn)是對(duì)于詞典的質(zhì)量要求比較高,比如對(duì)于這個(gè)句子:請(qǐng)為我播放陳慧琳記事本。由于我們庫內(nèi)有“陳慧琳記事本”這樣一個(gè)同名實(shí)體,因此通過最大匹配我們就會(huì)切出“陳慧琳記事本”這樣一個(gè)候選,顯然這是一個(gè)錯(cuò)誤的候選。

最小匹配算法近似于利用實(shí)體詞典來進(jìn)行切詞,它雖然說解決最大匹配帶來的問題,但是它切分力度太細(xì),很容易將一個(gè)正確的實(shí)體切散,比如對(duì)于這個(gè)句子:鄭中基演唱的晴天陰天雨天。最小匹配可能得到的結(jié)果就是“晴天”、“陰天”、“雨天”三個(gè)候選,本來“晴天陰天雨天”是鄭中基演唱的一首歌,在這里就被切散了。

Kevin:QQ音樂命名實(shí)體識(shí)別技術(shù)|DataFunTalk

針對(duì)最大和最小匹配存在的問題,我們綜合最大和最小匹配的優(yōu)勢(shì),設(shè)計(jì)了一個(gè)適合我們應(yīng)用場(chǎng)景的路徑選擇方法。首先針對(duì)原始的候選實(shí)體,我們抽取出所有可能的候選,然后構(gòu)建出候選的有向圖,比如對(duì)于上面這個(gè)例子:陳小春的歌亂世巨星。我們用一個(gè)有向圖來表示所有可能的候選的路徑,接下來去計(jì)算每一條路徑的分?jǐn)?shù),然后根據(jù)路徑的分?jǐn)?shù)篩選出紅色標(biāo)紅的路徑就是分?jǐn)?shù)最高的路徑,根據(jù)這條路徑選擇最終的候選集合。這里的關(guān)鍵在于如何計(jì)算每條路徑的分?jǐn)?shù),我們從三個(gè)角度來計(jì)算分?jǐn)?shù),首先是候選實(shí)體的置信度,它主要評(píng)估候選本身的置信度,或者說它的熱度;然后是路徑命中規(guī)則情況計(jì)算得到的分?jǐn)?shù),其實(shí)也就是實(shí)體級(jí)別的一個(gè)語言模型分?jǐn)?shù),主要評(píng)估路徑的流暢性;最后我們引入了一個(gè)Root-Link考察候選被其它候選的覆蓋情況,這是音樂領(lǐng)域的一個(gè)特性,如果一個(gè)候選是所有重疊候選中最長(zhǎng)的實(shí)體部分,通常情況下,我們更傾向于認(rèn)為它是一個(gè)正確的實(shí)體,最終將這三類分?jǐn)?shù)綜合加權(quán)得到了每一條路徑的分?jǐn)?shù)。

Kevin:QQ音樂命名實(shí)體識(shí)別技術(shù)|DataFunTalk

在具體計(jì)算的過程中,我們做了一個(gè)優(yōu)化,當(dāng)文本比較長(zhǎng)時(shí),遍歷所有路徑依次計(jì)算分?jǐn)?shù)的開銷過大。因此我們采用了 beam_search的方式,對(duì)于每一個(gè)token只保留以它為結(jié)尾的N條路徑,把整個(gè)有向圖分為多個(gè)部分分開計(jì)算。比如對(duì)于上面的例子,我們對(duì)于”亂”這個(gè)token,就保留以它為結(jié)尾的兩條路徑。當(dāng)我們對(duì)這個(gè)token后面進(jìn)行路徑選擇時(shí),就與前面的路徑無關(guān)了,這樣就可以減少整體的計(jì)算量。

  1. 訓(xùn)練數(shù)據(jù)構(gòu)建
Kevin:QQ音樂命名實(shí)體識(shí)別技術(shù)|DataFunTalk

① 重要性與難點(diǎn)

訓(xùn)練數(shù)據(jù)是模型的燃料,對(duì)模型效果起著決定性的作用。在我們的應(yīng)用場(chǎng)景中,訓(xùn)練數(shù)據(jù)構(gòu)建主要有以下兩個(gè)難點(diǎn),第一個(gè)是缺乏高質(zhì)量的標(biāo)注數(shù)據(jù),在query的場(chǎng)景下,只有用戶query點(diǎn)擊這樣的label,且質(zhì)量通常不是很高;第二個(gè)是人工標(biāo)注的成本高,因?yàn)镹ER通常采用BIO這樣的標(biāo)注體系,每個(gè)token都需要打上標(biāo)記,這種方式逐個(gè)去標(biāo)非常耗費(fèi)人力。

② 解決方案

我們通過主動(dòng)學(xué)習(xí)迭代提升標(biāo)簽質(zhì)量,同時(shí)構(gòu)造弱監(jiān)督數(shù)據(jù)去擴(kuò)充訓(xùn)練數(shù)據(jù)量。首先我們根據(jù)用戶的點(diǎn)擊后驗(yàn)來構(gòu)建一份質(zhì)量不是很高的訓(xùn)練數(shù)據(jù),再通過我們預(yù)制的一些規(guī)則模板對(duì)它進(jìn)行校正,以及對(duì)一些明顯有問題的label進(jìn)行校正,得到一份可以用于訓(xùn)練模型的數(shù)據(jù)1.0。然后通過訓(xùn)練數(shù)據(jù)1.0,我們做一個(gè)交叉驗(yàn)證,從中來篩選出一些低置信度、模型不是很確定的數(shù)據(jù),對(duì)這些數(shù)據(jù)進(jìn)行重標(biāo)。通過這樣的方式,我們使用模型自動(dòng)篩選出可能有問題的數(shù)據(jù),減少人力標(biāo)注的數(shù)量,得到一份經(jīng)過清洗后的訓(xùn)練數(shù)據(jù)2.0。我們?cè)偃ビ糜?xùn)練數(shù)據(jù)2.0訓(xùn)練模型,利用這版模型去預(yù)測(cè)一些未標(biāo)注數(shù)據(jù),把這些外邊數(shù)據(jù)作為一個(gè)弱監(jiān)督的數(shù)據(jù),將其加入到原始的實(shí)驗(yàn)數(shù)據(jù)中,從而構(gòu)建了一個(gè)閉環(huán)的迭代過程,經(jīng)過迭代后,模型訓(xùn)練數(shù)據(jù)的數(shù)量和質(zhì)量上都有提升。

在迭代之外,我們還引入了EDA自動(dòng)擴(kuò)展訓(xùn)練數(shù)據(jù),主要策略有實(shí)體替換、非實(shí)體片段替換、實(shí)體名擾動(dòng)等。比如我們把一首片段中的歌曲名替換成另一首歌曲:來一首七里香→來一首吻別;把非實(shí)體片段替換:來一首七里香→播放七里香;實(shí)體名擾動(dòng):來一首七里香→來一首七七里香,因?yàn)槲覀僋ER在語音場(chǎng)景下也會(huì)有應(yīng)用,而語音場(chǎng)景下有很多用戶可能會(huì)說錯(cuò)歌曲名,通過實(shí)體名擾動(dòng)構(gòu)建類似數(shù)據(jù),可以增加模型整體的魯棒性。

03
用戶Query NER模型

  1. V1版
Kevin:QQ音樂命名實(shí)體識(shí)別技術(shù)|DataFunTalk

① 思路

前面提到了用戶Query通常比較簡(jiǎn)短、信息比較少,因此我們第一版模型考慮對(duì)每一個(gè)候選去抽取出一些特征,然后采用傳統(tǒng)的分類模型去判斷每一個(gè)候選的類型,因?yàn)椴皇撬械暮蜻x都在最終正確結(jié)果中保留,因此不保留也作為一種類型。

② 特征體系

特征體系方面,以Query為例,主要提出以下三類特征,第一類是候選實(shí)體本身的屬性,包括些熱度、覆蓋度、語言類型等;第二類是命中規(guī)則的特征,主要作用是通過人為統(tǒng)計(jì)的方式,給模型提供一些可能存在的上下文層面信息,因?yàn)镼uery沒有顯式引入上下文的信息;第三類是實(shí)體間的關(guān)系,主要包括一些成對(duì)的關(guān)系,因?yàn)樵谝魳奉I(lǐng)域經(jīng)常有一些演唱,可以從中生成一些成對(duì)關(guān)系,比如王菲演唱過約定,我們就將(王菲,約定)這樣的信息也加入到特征中。

③ 效果與分析

在構(gòu)建特征后,我們采用了傳統(tǒng)分類模型xgboost進(jìn)行嘗試,最終整體的precision為0.894,勉強(qiáng)達(dá)到了可用的水平,但是recall僅有0.835,沒有達(dá)到可用的水平。這一版模型的主要意義就是我們通過傳統(tǒng)的特征工程選出了一些對(duì)于NER具有幫助的特征,但我們沒有顯示地去引入候選的上下文信息。雖然Query的上下文信息不多,但還是存在一些的,因此我們后續(xù)的優(yōu)化方案,就是通過深度模型去更好地建模上下文信息。

  1. V2版
Kevin:QQ音樂命名實(shí)體識(shí)別技術(shù)|DataFunTalk

① 思路

V2版我們采用業(yè)界比較常見的思路,首先將NER轉(zhuǎn)化為序列標(biāo)注問題,將實(shí)體按照它所屬的token以及位置來對(duì)實(shí)體的每一部分給出標(biāo)注,比如說對(duì)于上圖的Query,我們得到它對(duì)應(yīng)的一個(gè)標(biāo)注。

② 特征與模型

Kevin:QQ音樂命名實(shí)體識(shí)別技術(shù)|DataFunTalk

特征層面我們?nèi)匀徊捎昧薞1版中得到的特征,只不過加入特征的方式相比V1版有一些區(qū)別,我們將每一類特征對(duì)應(yīng)到token本身,每一類特征都是一個(gè)特定的候選,把每一類特征加到其所屬的圖層中,最終每一個(gè)token會(huì)對(duì)應(yīng)到多個(gè)類別的特征。

模型層面的話,我們采用了一個(gè)比較常用的解決方案,首先得到每個(gè)token對(duì)應(yīng)的token embedding,然后經(jīng)過上圖橘黃色標(biāo)注的Domain Fushion層,將每個(gè)token對(duì)應(yīng)的多個(gè)特征拼接起來,得到token融合領(lǐng)域知識(shí)后的特征,最終經(jīng)過BiLSTM+CRF編碼和解碼得到實(shí)體序列。

② 效果與分析

Kevin:QQ音樂命名實(shí)體識(shí)別技術(shù)|DataFunTalk

V2版的召回率相對(duì)V1版有明顯的提升,我們?nèi)プ隽艘恍ヽase分析,發(fā)現(xiàn)整體也是符合預(yù)期的。good case主要是擴(kuò)召回一些query干擾信息比較多但上下文特征比較強(qiáng)的實(shí)體,比如上圖第一個(gè)例子,在歌曲名“你的淺笑”前有非常多口語化的表述,V1版由于沒有顯示的引入文本層面信息,就無法識(shí)別出這類實(shí)體。對(duì)于第二個(gè)例子:花千骨主題音樂歌曲,因?yàn)閂1版中我們通過模板來引入上下文信息,有一個(gè)模板是影視劇名+主題曲,這里只把“曲”換成“音樂”,模板就失效了,通過深度模型,我們可以學(xué)習(xí)到“曲”和“音樂”是近義詞,這樣就能夠正確地識(shí)別出“花千骨”是影視劇名。

V2版也存在一些問題,最大的問題就是歧義大的實(shí)體識(shí)別不準(zhǔn),舉兩個(gè)例子。

來一個(gè)戀人主題曲鄭穎娟的、幫我找下有沒有東方紅這首歌。第一個(gè)例子模型沒有識(shí)別出“影視劇名=戀人”,主要原因就是因?yàn)椤皯偃恕钡挠耙曇鈭D很弱,我們提到戀人,第一反應(yīng)是認(rèn)為它應(yīng)該是一個(gè)歌曲而不是影視劇。第二個(gè)例子是語音場(chǎng)景下的一個(gè)query,模型錯(cuò)誤地識(shí)別出“歌曲名=有沒有”,主要原因是因?yàn)椤坝袥]有”本身是一個(gè)熱度比較高的歌曲,模型受到熱度特征的干擾導(dǎo)致了誤判。

因此我們需要針對(duì)問題的特點(diǎn)設(shè)計(jì)一個(gè)定制化的領(lǐng)域內(nèi)信息融入模塊來解決歧義的問題。我們首先需要解決候選實(shí)體類型的歧義,然后就是實(shí)體與常用表述之間的歧義,針對(duì)這兩點(diǎn)問題,我們?cè)O(shè)計(jì)了V3版的模型。

  1. V3版
Kevin:QQ音樂命名實(shí)體識(shí)別技術(shù)|DataFunTalk

針對(duì)V2版的問題,V3版主要做了兩個(gè)方面的優(yōu)化。首先在融合外部知識(shí)的Domain Fushion層,我們把多個(gè)特征concat的方式改成采用feature self attention,通過attention機(jī)制去捕捉對(duì)于識(shí)別當(dāng)前token更重要的一些特征。第二個(gè)優(yōu)化點(diǎn),在進(jìn)入BiLSTM進(jìn)行序列編碼前增加了一個(gè)multi view attention層,它主要是基于NLP歧義知識(shí)融合中常用的rethinking機(jī)制的思想,通過目標(biāo)token的臨近上下文,對(duì)目標(biāo)token的多個(gè)輸入特征進(jìn)行重新篩選,這樣可以在一定程度上利用query中歧義較小的片段,對(duì)歧義較大片段信息融合中的錯(cuò)誤進(jìn)行一些校正。

這里我們通過在不同層引入feature self attention(FSA)和multi view attention(MVA),分別從特征值本身,以及鄰近上下文信息兩個(gè)角度,優(yōu)化多特征融合時(shí)的信息選擇,顯著解決了有歧義實(shí)體的誤傷和召回不足的問題。在做了這兩個(gè)方面的優(yōu)化后,V3版整體的precision和recall都有明顯的提升,達(dá)到了一個(gè)比較可用的水平。

04
音樂文本NER模型

  1. 特征抽取優(yōu)化
Kevin:QQ音樂命名實(shí)體識(shí)別技術(shù)|DataFunTalk

我們直接用從query中探索出的NER模型套用在音樂文本識(shí)別任務(wù)上,發(fā)現(xiàn)F1只有84%,分析發(fā)現(xiàn)主要是因?yàn)橐魳肺谋镜纳舷挛南啾萹uery是比較豐富的,和正規(guī)文本更加接近。因此我們采用大規(guī)模訓(xùn)練語言模型(e.g. Bert)對(duì)文本進(jìn)行編碼,Bert是多層transformer結(jié)構(gòu)的疊加,而transformer最重要的結(jié)構(gòu)是self attention,關(guān)于bert的模型結(jié)構(gòu)這里就不做贅述了。Bert通過在大規(guī)模無標(biāo)記語料上進(jìn)行訓(xùn)練,得到一個(gè)比較好的語言模型,不同類型的語言模型(e.g. BERT, ROBERTA, SpanBERT)主要是預(yù)訓(xùn)練任務(wù)的差別,其中最重要的預(yù)訓(xùn)練任務(wù)是MLM,它其實(shí)就是將文本中的一些token改成[MASK]這樣的標(biāo)記,然后通過模型去學(xué)習(xí)[MASK]位置的token,從而去感知語言的一些表達(dá)方式和特性,因此Bert幾乎刷新了所有NLP下游任務(wù)的SOTA。

① 思路

Kevin:QQ音樂命名實(shí)體識(shí)別技術(shù)|DataFunTalk

我們V1版的優(yōu)化其實(shí)是比較簡(jiǎn)單的,就是將我們Query NER中采用的最終模型中的Token Embedding層替換成了ROBERTA,將原本上下文無關(guān)的很弱的Embedding表示替換成由ROBERTA得到的上下文相關(guān)且質(zhì)量非常高的Embedding表示,其余后續(xù)模型結(jié)構(gòu)不做任何改動(dòng),經(jīng)過優(yōu)化效果相比直接采用Query NER模型有一些提升,F(xiàn)1 score由84%提高到88.4%,但是整體未達(dá)到可用效果的要求。

② 問題分析

Kevin:QQ音樂命名實(shí)體識(shí)別技術(shù)|DataFunTalk

我們對(duì)于存在的問題做了一些比較詳細(xì)的分析。首先第一點(diǎn)問題是對(duì)候選間長(zhǎng)距離依賴關(guān)系刻畫不足,比如上圖第一個(gè)例子,《rage of dust》其實(shí)是影視《機(jī)動(dòng)戰(zhàn)士高達(dá)》的主題曲,但是由于兩者在文本中的距離比較遠(yuǎn),導(dǎo)致模型對(duì)于它們之間的關(guān)系沒有很好的捕捉,造成這種情況的原因首先是我們的候選篩選策略難以保證選出的路徑是最優(yōu)的,其次就是知識(shí)融合框架對(duì)候選之間長(zhǎng)距離依賴捕捉支持不足。

第二點(diǎn)是模型過于依賴部分的領(lǐng)域知識(shí),比如實(shí)體間的成對(duì)信息,對(duì)于上圖第二個(gè)例子,因?yàn)檫~克爾杰克遜曾唱過一首歌《History》,它的翻譯名就是歷史,導(dǎo)致模型誤識(shí)別出:歌曲名=歷史,主要是因?yàn)槲覀儧]有顯示地將候選詞間的關(guān)系建模到模型中。

最后一點(diǎn)就是對(duì)于部分實(shí)體上下文說法較長(zhǎng)尾的情況,模型識(shí)別比較依賴書名號(hào)等符號(hào),比如對(duì)于上圖第三個(gè)例子,如果這里我們將書名號(hào)去掉,可能模型就無法正確的識(shí)別出歌曲名為“十面埋伏”,主要原因是相關(guān)的訓(xùn)練數(shù)據(jù)比較少,并且label標(biāo)注不全。

針對(duì)前兩個(gè)問題,我們的優(yōu)化方案是去探索一個(gè)更好的知識(shí)融合方式;對(duì)于第三個(gè)問題,我們主要通過提高訓(xùn)練數(shù)據(jù)利用效率解決。

  1. 知識(shí)融合框架

目前工業(yè)界和學(xué)術(shù)界比較常見的知識(shí)融合框架主要有三大類,下面主要圍繞這三類框架的典型代表,以及在我們?nèi)蝿?wù)上的知識(shí)融合優(yōu)化展開闡述。

Kevin:QQ音樂命名實(shí)體識(shí)別技術(shù)|DataFunTalk

① Lattice LSTM

第一類以Lattice LSTM為代表,它通過對(duì)LSTM或GRU模型的結(jié)構(gòu)進(jìn)行一些修改,實(shí)現(xiàn)詞/短語級(jí)別信息的引入。

② CGN

第二類以CGN為代表,它不修改原本的文本編碼方式,在編碼層后疊加一些圖神經(jīng)網(wǎng)絡(luò),實(shí)現(xiàn)引入更多粒度的信息。

③ FLAT

最后一類以FLAT為代表,這也是我們?cè)谝魳肺谋綨ER任務(wù)中最終選用的知識(shí)融合框架。

Kevin:QQ音樂命名實(shí)體識(shí)別技術(shù)|DataFunTalk

FLAT在transformer模型的基礎(chǔ)上,引入多粒度信息(主要是詞典信息),將文本中存在的一些詞直接拼接到Token后面,得到了一個(gè)包含異質(zhì)信息的序列。通過將詞和token放在一個(gè)序列中,在Self-Attention計(jì)算時(shí),詞級(jí)別的信息就自然而然地融入到整個(gè)模型中,這樣就不需要像CGN這樣的模型,人為構(gòu)建圖表述候選和token之間的關(guān)聯(lián)再通過GNN去編碼,而是對(duì)attention score的計(jì)算進(jìn)行修正,實(shí)現(xiàn)多粒度信息的引入。

Kevin:QQ音樂命名實(shí)體識(shí)別技術(shù)|DataFunTalk

我們嘗試直接將FLAT模型應(yīng)用于音樂文本NER,對(duì)文本部分用ROBERTA來進(jìn)行編碼得到它的Token Embedding,對(duì)候選詞部分采用與Query NER中一樣的Feature Self Attention,對(duì)每個(gè)候選實(shí)體多個(gè)層面的特征組合,得到每個(gè)候選實(shí)體的Embedding,然后將Token Embedding和候選實(shí)體的Embedding拼接到一個(gè)序列中,后面再接一層Flat Self Attention得到融合后的表示,最后通過CRF對(duì)Token進(jìn)行解碼。

觀察效果我們發(fā)現(xiàn)直接應(yīng)用FLAT進(jìn)行知識(shí)融合并沒有明顯的提升,F(xiàn)1 Score相比第一版還有一點(diǎn)下降。我們對(duì)一些case進(jìn)行分析,發(fā)現(xiàn)召回顯著降低,對(duì)于一些連續(xù)的實(shí)體片段,在結(jié)果中出現(xiàn)了很多缺失,比如對(duì)于這個(gè)例子:【洛天依 樂正綾 言和 心華】四小只幼女大合唱,這里其實(shí)有四個(gè)歌手,但是模型只識(shí)別出了其中的兩個(gè)。我們通過一些實(shí)驗(yàn),發(fā)現(xiàn)導(dǎo)致問題的主要原因是模型對(duì)于元素間距離的數(shù)值過于敏感,另外是由于ROBERTA部分輸出的表示與候選實(shí)體的表示屬于異質(zhì)信息,因此我們?cè)贔LAT模型的基礎(chǔ)上,結(jié)合這里的幾個(gè)問題進(jìn)行了一些優(yōu)化。

Kevin:QQ音樂命名實(shí)體識(shí)別技術(shù)|DataFunTalk

我們主要的優(yōu)化點(diǎn)在于Attention Score的計(jì)算方式。原始的FLAT直接通過元素間的位置關(guān)系來建模,一共計(jì)算了四種不同的位置信息,分別是lattice的開始減開始,開始減結(jié)束,結(jié)束減開始,結(jié)束減結(jié)束。我們通過分析發(fā)現(xiàn),當(dāng)我們的訓(xùn)練數(shù)據(jù)質(zhì)量還有數(shù)量都不是很足的時(shí)候,這樣的設(shè)計(jì)方式可能會(huì)導(dǎo)致模型對(duì)于距離本身的一個(gè)具體數(shù)值產(chǎn)生依賴,因此我們對(duì)這種位置關(guān)系的計(jì)算方式進(jìn)行了修改。首先我們顯示地引入token與候選實(shí)體之間關(guān)系,比如依賴、包含、相交等關(guān)系,然后針對(duì)原始的四個(gè)位置信息,把它變成了一個(gè)position,通過它表示兩個(gè)token在序列中最短的位置信息,通過它去建模兩個(gè)元素之間的位置關(guān)系。此外我們還引入了一個(gè)pair的信息,主要目的是將一些非位置信息,比如候選實(shí)體間的成對(duì),包括一些其他的關(guān)系引入到模型中,通過這幾點(diǎn)優(yōu)化,模型的效果有了顯著的提升。除此之外,我們基于異構(gòu)圖網(wǎng)絡(luò)的思想,對(duì)不同類型的節(jié)點(diǎn)先進(jìn)行節(jié)點(diǎn)級(jí)別的信息聚合,再對(duì)不同類型作語義級(jí)別聚合。

  1. 提高訓(xùn)練數(shù)據(jù)利用效率
Kevin:QQ音樂命名實(shí)體識(shí)別技術(shù)|DataFunTalk

關(guān)于如何去提升訓(xùn)練數(shù)據(jù)的利用效率,業(yè)界比較常見的解決方案是從訓(xùn)練數(shù)據(jù)的角度出發(fā),基于不確定性的方法去訓(xùn)練模型。整體思想是認(rèn)為label本身存在漏標(biāo)的可能,通過針對(duì)label來進(jìn)行探索,把沒有標(biāo)注為實(shí)體部分改標(biāo)為實(shí)體,然后進(jìn)行模型的迭代訓(xùn)練。

在我們音樂文本NER的應(yīng)用中,我們發(fā)現(xiàn)基于不確定性訓(xùn)練的方法主要有兩個(gè)缺點(diǎn),第一個(gè)是它需要進(jìn)行多次的迭代訓(xùn)練,整體效率會(huì)比較低;第二點(diǎn)是因?yàn)橐魳奉I(lǐng)域本身名稱歧義非常大,這里可能會(huì)有一些不太合適的探索,會(huì)導(dǎo)致模型整體產(chǎn)生偏差,后面的修正也無法讓它回到原來正確的方向上。因此在音樂文本NER任務(wù)中我們從模型的角度出發(fā),通過領(lǐng)域和任務(wù)數(shù)據(jù)上post train來實(shí)現(xiàn)訓(xùn)練數(shù)據(jù)的利用效率。在得到預(yù)訓(xùn)練模型基礎(chǔ)上,對(duì)領(lǐng)域和任務(wù)相關(guān)的一些數(shù)據(jù)進(jìn)行一輪post train,得到一個(gè)領(lǐng)域內(nèi)的預(yù)訓(xùn)練模型,再去做下游的NER任務(wù),這個(gè)流程其實(shí)也是目前NLP任務(wù)整體的一個(gè)范式。

Kevin:QQ音樂命名實(shí)體識(shí)別技術(shù)|DataFunTalk

在post train任務(wù)設(shè)計(jì)的探索中,我們首先采用的是標(biāo)準(zhǔn)的MLM,即對(duì)于每一個(gè)token,以15%的概率把它制成mask,以85%的概率保留原token。我們選取了庫內(nèi)的一些視頻標(biāo)題,然后采用標(biāo)準(zhǔn)的MLM作為post train任務(wù),結(jié)果發(fā)現(xiàn)它提升很小,基本上沒有解決什么長(zhǎng)尾case。

因此我們對(duì)原始的MLM進(jìn)行了一些改動(dòng),做了一個(gè)強(qiáng)化實(shí)體邊界的MLM任務(wù),它的思想是去優(yōu)化MLM任務(wù)中的mask策略,迫使模型重點(diǎn)關(guān)注與實(shí)體識(shí)別相token。比如看上圖中的例子,我們已知實(shí)體屬性:馮提莫=歌手、單身情歌=歌曲,可以在已知的實(shí)體前后根據(jù)類型插入不同的模式,比如在單身情歌前后插入書名號(hào),在馮提莫前面插入歌手或者網(wǎng)紅這樣的標(biāo)記,然后在構(gòu)造MLM數(shù)據(jù)時(shí),以更大的概率將我們?nèi)藶樘砑拥臉?biāo)記作為mask,對(duì)于每個(gè)部分,首先來判斷它是否是我們添加的標(biāo)記,如果是就用一個(gè)較大的概率P1來執(zhí)行mask,否則以一個(gè)比較小的概率P2來執(zhí)行mask,通過這樣使得被mask的大部分都是我們?nèi)藶樘砑拥臉?biāo)記,這樣也迫使得模型更加關(guān)注于實(shí)體的邊界信息。通過這種方式,可以擴(kuò)招回一些中文長(zhǎng)尾case,模型對(duì)于實(shí)體邊界的感知能力也會(huì)更強(qiáng),此外還可以用它來補(bǔ)充一些label。

Kevin:QQ音樂命名實(shí)體識(shí)別技術(shù)|DataFunTalk

最終,在加入優(yōu)化后的FLAT,以及加入領(lǐng)域內(nèi)相關(guān)的post train之后,整體的F1 score可以達(dá)到比較可用的水平。

05
未來展望

我們?cè)贜ER任務(wù)上主要考慮以下三個(gè)方面的優(yōu)化:

首先,我們可能去學(xué)習(xí)實(shí)體的知識(shí)圖譜表示,將它融入到模型的候選實(shí)體表征中,這樣可以得到候選實(shí)體更深層次的語義表示。

第二就是針對(duì)候選可能導(dǎo)致錯(cuò)誤傳導(dǎo)的問題,聯(lián)合優(yōu)化候選生成與最終結(jié)果預(yù)測(cè)。

最后,考慮通過優(yōu)化現(xiàn)有的模型范式來更好地支持嵌套NER以及不連續(xù)NER,以支持到更多的業(yè)務(wù)場(chǎng)景。

今天的分享就到這里,謝謝大家。

Kevin:QQ音樂命名實(shí)體識(shí)別技術(shù)|DataFunTalk

本文經(jīng)授權(quán)發(fā)布,不代表增長(zhǎng)黑客立場(chǎng),如若轉(zhuǎn)載,請(qǐng)注明出處:http://gptmaths.com/cgo/product/59689.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
上一篇 2022-03-04 15:19
下一篇 2022-03-04 21:31

增長(zhǎng)黑客Growthhk.cn薦讀更多>>

發(fā)表回復(fù)

登錄后才能評(píng)論