當前位置:
首頁 > 最新 > 遊戲文本關鍵詞提取工作的嘗試和探索

遊戲文本關鍵詞提取工作的嘗試和探索

更多騰訊海量技術文章,請關注云加社區:https://cloud.tencent.com/developer/column

作者:騰訊雲語義分析團隊

一、文本關鍵詞提取的前世今生

文章的表示具有不同的層次,由粗到細可分為類型(分類)、事件(主題)、代表詞(關鍵詞)等,關鍵詞是文章表示的重要環節。文本的關鍵詞可以被認為「濃縮」了整篇文章的主旨和要義,是一篇文章高度概括的自然語言表示形式。更加精準的文本關鍵詞,可以為後續推薦系統帶來更精準的文本內容特徵、召回更高質量的同類型文章;同時,高質量的關鍵詞也可以作為分類標籤直接用於內容運營和用戶推薦,提升編輯和運營同事的工作效率。

文本關鍵詞提取問題吸引了大量研究者的關注。從最簡單的TF-IDF計算詞語權重,到TextRank和LDA等無監督的方法,再到目前廣泛使用的Seq2Seq等神經網路模型,無一不在關鍵詞提取領域有著眾多實踐和探索。

二、遊戲文本關鍵詞提取的概況

在公司內部的電競和遊戲中心等綜合類遊戲產品中都沉澱了大量的遊戲攻略、新手指引、晉級指南等多種不同類型的遊戲文本,如何將合適的遊戲文本打上正確的關鍵詞標籤,並將內容推送給恰當的用戶成為一個重要的課題。

我們在遊戲文本關鍵詞提取工作的探索中,嘗試了基於圖的無監督方法TextRank和基於有監督的Seq2Seq神經網路方法,並針對兩種方法的表現做了初步的比較。

基於神經網路的有監督方法通常需要一定數量的標註數據才能學到較好的參數。為滿足神經網路訓練的需求,結合項目和數據的實際情況,我們在手機QQ平台的遊戲中心中收集了約3萬餘條帶分類和標籤的遊戲文本,經過相似文本去重、低質量文本過濾等處理,最終得到了24000條數據樣本。該份語料的文本長度從幾百到一千餘字不等,每個樣本帶有3~6個人工標註的關鍵詞,共有約9萬餘個對;語料包含新手指引、晉級指南、遊戲介紹等不同內容的文本,並涵蓋了王者榮耀、天天炫斗、全民斗戰神、天天快跑等熱門遊戲。實驗將24000餘條文本隨機劃分為20000條的訓練集、2000條的驗證集和2000條的測試集;在預處理過程中,使用jieba工具對文本分詞,並在分詞前導入了遊戲辭彙相關的詞典以提高分詞的精度。

三、兩類文本關鍵詞提取的模型

1、基於TextRank的遊戲文本關鍵詞提取方法

TextRank演算法的思想直接借鑒了PageRank網頁排序演算法,使用在K長度窗口中詞的相鄰關係來代表PR演算法中的鏈接指向關係,與PageRank的迭代公式完全相同,即

。其中,

是i的重要性權重,

是指向該詞的詞集合,

是指向該詞的詞集合,該公式通過迭代完成計算,最後將每個詞的重要性權重逆向排序即為詞的重要性排序。

基於TextRank的方法簡單有效,速度也在可接受的範圍內。但這一方法存在兩個較為明顯的不足:

1、關鍵詞的來源有限,僅為本篇文檔所有辭彙的集合,難以學習到更多的關鍵詞表示,

也無法以「生成」的方式得到文章抽象的關鍵詞表述。

2.、雖然TextRank考慮了關鍵詞在給定距離窗口的共現等信息,但實際上仍然偏向於給高頻詞以更高的權重,所以在實際使用中與TF-IDF這類方法相比沒有太大的優勢。

TextRank思想簡單,容易實現,在各類NLP工具包中都有可以直接調用的模塊,如基於Python的jieba,基於Java的Hanlp等。

2、 Seq2Seq的背景

Seq2Seq模型自被提出後,已經廣泛應用於神經機器翻譯、圖片文字描述生成和文本摘要等領域。關鍵詞提取與文本摘要任務一脈相承,也已有學者使用各類神經網路模型在這一任務中做了各種嘗試。

Seq2Seq模型又常被稱作Encoder-Decoder模型,其中的兩個Sequence分別對應Encoder(編碼器)和Decoder(解碼器)兩個部分,Encoder和Decoder通常為普通的RNN單元構成,或者是LSTM單元和GRU單元。而基於CNN或其他網路結構的Seq2Seq不在本文的討論之列。典型的Seq2Seq模型如下圖1所示。

圖1 Encoder-Decoder模型示意圖

在圖1中,下框部分為Seq2Seq模型的編碼器Encoder,

為源序列的輸入,在關鍵詞抽取中對應為源文本;上框部分為Seq2Seq模型的Decoder解碼器,

為解碼器的輸出,對應關鍵詞的輸出。以關鍵詞提取為例,每個時間步的輸出向量y都將會與一個softmax相連,以計算詞表中每一個詞的概率(由於語料中詞表過大,計算每一個詞通常會有計算複雜度過高的問題,有很多學者提出改進方案著手解決這一問題,如https://arxiv.org/pdf/1412.2007.pdf)。

由上圖Encoder框內部分可以看到,

,即每個時間步計算得到的隱藏層向量

為前一個隱藏層輸出

和當前時間步輸入

共同作用的結果。而Decoder部分接受的輸入向量c(圖1)來自Encoder部分的輸出向量,一般為Encoder最後一個時間步的隱藏層輸出

,在某些工作中也有可能是若干隱藏層向量的組合或者函數變換,即為

。而Decoder部分的隱藏層狀態向量計算方式為

,即對於每一個時間步的隱藏層

,都使用同樣長度的同一個c來計算。Decoder部分輸出向量

的計算同樣依賴於來自Encoder同樣的信息,如圖1所示,這一信息依然是同一個c。

由上述討論可以看出,一般來講,在文本摘要、機器翻譯等工作中,Decoder部分接受的來自源文本的輸入信息僅為一個固定長度的向量c(即便輸入的文本非常長),由一個固定長度的向量去解碼為譯文或者關鍵詞摘要的信息,通常會帶來較大的性能損失。Bahdanau於2014年提出的attention機制便可以較好的解決這一問題,並在隨後的兩三年中,在翻譯、摘要、關鍵詞提取、圖片文本生成乃至情感分析領域都得到了廣泛的應用。

基於attention機制的Seq2Seq模型在Encoder編碼部分與傳統模型並無二致,attention機制的關注點主要集中在Decoder部分,如圖2所示。該圖的下半部分為Seq2Seq的Encoder部分,當然從圖中看,這裡的Encoder與圖1相比,多了一個雙向RNN的部分。這樣做的緣由是使網路能夠從兩個方向共同學到信息,與attention並無關聯。

圖2 帶有attention機制的Seq2Seq模型

與普通Seq2Seq模型相同的是,圖2中的模型也會在Decoder階段讀入來自Encoder的c,但是這個c並不是簡單由Encoder最後一個隱藏層節點的值再做函數變換而來,而是通過讀取Encoder每一個時間步的隱藏層節點狀態並加權求和得到。如下公式所示。

結合公式和圖2可以清晰的看出,

對應Decoder的t時刻中、來自編碼器Encoder

時刻輸入的權重,通過線性加權求和,就可以得到

,即t時刻Decoder中接受Encoder向量的部分。由圖2可知,這時Decoder部分的隱藏層狀態向量

的計算方式為

而公式中的

,由語料經訓練得到,並通過一個歸一化公式將解碼器t時刻來自不同

的權重

之和歸為1。

2、基於Copying機制的Seq2Seq-attention模型

上述基於attention的模型在機器翻譯、智能問答和文本摘要等多項任務中取得了廣泛的應用。然而,對於文本摘要、關鍵詞抽取和智能問答等任務來說,Decoder部分的設計仍然難以避免部分缺憾。

以關鍵詞提取為例,解碼器Decoder部分每一個時間步都會產生一個辭彙,這個辭彙經過softmax計算得出,而辭彙的來源則是一個大小為n的詞表

。從計算時間成本的角度考慮,這個詞表通常不會包含訓練集中所有的辭彙,訓練集中的大量低頻辭彙只能統一用UNK代替;另一方面,測試集中的詞不一定完全在訓練集中出現過,當然也未必會在可預測的詞表V的範圍內。這就帶來了一個問題——在文本摘要、關鍵詞提取中常被稱為OOV(out of vocabulary)問題。由於OOV的這一現象,當新的測試語料中包含一些重要的詞表外(OOV)辭彙時,那麼無論是提取關鍵詞還是生成摘要,這些重要的OOV辭彙只能被預測為UNK。

談完OOV問題給Seq2Seq模型帶來的缺憾,下面說回Copying機制。如果讓人類去做文檔摘要或者關鍵詞的提煉,他不僅會使用自己的背景知識和過去學到的東西來寫這一份摘要,而且會從原文中「照抄」或者「摘錄」一部分重要的文字。我們對照機器的摘要(關鍵詞提取)工作,傳統模型往往僅利用在訓練語料中學到的參數,在生成的時候,逐個預測某一個位置應當選擇詞表中的哪一個詞;若原文中幾個重要的關鍵詞並不在詞表中,那麼很遺憾,這些詞沒有機會生成在關鍵詞列表中。Jiatao gu等人借鑒人類「照抄」、「拷貝」的形式,在Seq2Seq with attention模型中引入了Copying機制,很大程度的改善了OOV問題對關鍵詞抽取和摘要工作帶來的影響。這一網路模型在Encoder部分同樣是一個傳統的形式,並沒有變化;但是在Decoder解碼器部分,增加了很多關於Copying機制的計算,如圖3所示。

圖3 帶有Copying機制的Seq2Seq模型

由圖3可以看出,Decoder部分該模型在隱藏層狀態向量

的更新和

的預測上都與之前的模型有明顯不同。如圖3的右下方所示,State Update的過程可以很明顯的分為這麼幾個部分:第一部分是左側藍色箭頭實線,這是來自attentive read的信息,也就是我們通常說的attention信息

;第二部分是

的部分,也與之前的attention模型相同;但是第三部分

的信息,並不僅僅使用上一時間步產出結果的embedding,還與一個selective read向量拼接,這個向量事實上是通過一個與注意力機制類似的方式計算得到,計算解碼器該位置與編碼器各個時間步隱藏層狀態的位置相關信息,為接下來的Copy-Mode提供信息。

圖3的右上方Generate-Mode和Copy-Mode是生成關鍵詞文本的兩個概率計算公式。左側的Generate-Mode與經典模型的生成方式相同;而Copy-Mode則計算從源序列中生成各個單詞的概率,兩個概率相加即為

位置的目標詞的概率,如公式所示。

注意,公式中的g和c分別代表兩個生成方式。而g和c的計算方式與生成的詞

和兩個詞表V、X(源文本詞表)的關係有關,原文中的Figure2有清晰描述,這裡不再贅述。

四、 Copying機制模型在遊戲文本關鍵詞提取中的意義

由以上的描述可知,一篇文本中的重要關鍵詞如果不是整個訓練集的高頻詞,不在詞表Vocabulary中,那麼在傳統attention-Seq2Seq束手無策的情況下,Copying機制可以通過直接從原文中「拷貝」,較好的解決這個問題。同時,作為經典的生成模型,它與Textrank等方法相比,又增加了很多從成千上萬篇訓練語料中學習的知識,可以很好的平衡「抽取」和「生成」兩種模型的優點。

下面以一個簡單的示例結束這篇文章。

Sample:《王者聯盟》5V5王者峽谷三路推塔激情博弈在《王者聯盟中》,5v5對戰備受眾多玩家喜愛,玩家可自行匹配,也可邀好友一起開黑。在5v5對戰中不是個人秀操作就能掌控全場,更多的需要團隊之間進行默契配合。合理的陣容搭配,明確的戰場分工,玩家對英雄的操作技巧……(節選)

GroundTruth:5v5王者峽谷;王者聯盟;新手

1.王者學院

英雄

2.王者聯盟

2. 敵方

3.5v5王者峽谷

3. 擊殺

4.新手

4. 隊友

5.5v5王者聯盟

5. 發育

經過測試集測試可知,基於DNN的Seq2Seq方法比TextRank的P1@5高出4%,R1@5高出8%,F1@5高出5.4%,初步證明了這一方法的有效性。

接下來,仍需要從數據和模型兩個層面進一步提升關鍵詞提取的表現,也可以考慮從多模型結果ensemble的角度去增加結果的魯棒性。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 雲加社區 的精彩文章:

python3和python2共存
一個基於 Docker 的負載均衡實例

TAG:雲加社區 |