王藝霖
(四川大學計算機學院,成都 610065)
關鍵短語是文本信息的精簡概括,能夠代表文本的主題和核心觀點[1]。高質量的關鍵短語有利于讀者方便、快速地理解文章內容,所以很多學者研究如何從文章中自動抽取和生成關鍵短語。從文章中生成關鍵短語的方法不僅可以生成在文本中出現的關鍵短語,還可以生成在文章中沒有出現的關鍵短語,自動生成關鍵短語任務是自然語言處理和信息檢索的基本任務之一,自動生成關鍵短語的方法有助于文本摘要、文本分類、觀點挖掘、文本索引、文本聚類等[2]下游任務。下面對當前自動生成關鍵短語的任務進行總結。
關鍵短語是能夠代表文章主題的短語,關鍵短語具有以下幾個屬性[3]:
完整性:生成的關鍵短語應該與人工標注的關鍵短語完全相同,而不是生成在人工標注的關鍵短語下部分子串。例如,人工標注的關鍵短語是“機器學習”,生成的關鍵短語也應該是“機器學習”,而不應該生成“機器”或“學習”這種關鍵短語。
主題相關性:生成的關鍵短語應該與文章的主題密切相關,而不是生成與文章無關的關鍵短語。例如,文章的主題是機器學習,生成的關鍵短語應該與機器學習這個主題密切相關,如人工智能等關鍵短語。
覆蓋性:生成的關鍵短語應該能覆蓋文章的主要內容。例如,一篇文章從經濟、政治、科技、文化的角度來介紹成都,生成的關鍵短語需要覆蓋這四個方面,而不是只覆蓋其中幾個方面。
現有工作中把關鍵短語分為在文章中出現的關鍵短語和在文章中沒有出現的關鍵短語。現有的方法可以分為兩種:自動抽取關鍵短語的方法和自動生成關鍵短語的方法。自動抽取關鍵短語的方法可以抽取在文章中出現的關鍵短語,而自動生成關鍵短語的方法不僅可以生成在文章中出現的關鍵短語,還可以生成在文章中沒有出現的關鍵短語,下面對這兩種方法進行總結。
自動抽取關鍵短語的方法是從文章中自動抽取具有重要性和主題性的關鍵短語。自動抽取關鍵短語的方法一般分為兩步:第一步,通過啟發式規則從文章中選出多個候選關鍵短語,例如使用N-Grams[4]或詞性模板匹配的方式[5]從文章中選出候選關鍵短語。第二步,使用有監督或無監督方法對候選關鍵短語進行排序,最后按照分數的高低選出前N個候選關鍵短語作為關鍵短語。具體來說,有監督方法把關鍵短語抽取問題看成二分類問題,通過訓練分類器來判斷候選短語是不是關鍵短語,而無監督方法不僅有使用PageRank算法對文章中每個單詞計算得分,然后把每個單詞得分相加或相乘得到每個候選短語的得分,最后按照候選短語得分從高到低選取前N個作為關鍵短語[6],還有使用主題聚類的方法[7]找到有關文章主題的關鍵短語。有研究學者發現有些關鍵短語不會在文章中出現,而自動抽取關鍵短語的方法不能抽取沒在文章中出現的關鍵短語,所以提出自動生成關鍵短語的方法。
自動關鍵短語生成方法不僅可以生成在文章中出現的關鍵短語,還可以生成在文章中沒有出現的關鍵短語。2017年Meng[8]提出CopyRNN模型使用注意力機制[9]和拷貝機制[10]的序列到序列[11]模型,既可以生成在文章中出現的關鍵短語,還可以生成文章中沒有出現的關鍵短語。訓練的時候輸入是文章摘要,輸出是一個關鍵短語,測試的時候使用beam search來生成過量的候選關鍵短語,最后按照候選關鍵短語的得分從高到低選取前N個候選短語作為關鍵短語。作者分別對在文章中出現的關鍵短語和沒有在文章中出現的關鍵短語進行了實驗,在文章出現的關鍵短語的效果要比沒有在文章出現的關鍵短語好,沒有在文章中出現的關鍵短語只使用召回率查看效果,而且效果不是很好,說明沒有在文章出現的關鍵短語相比在文章出現的關鍵短語很難生成,需要進一步對沒有在文章中出現的關鍵短語建模來提高效果。
自從上述模型提出后,有大量學者進行了改進。下面對這些相關工作進行匯總。
針對上述模型在捕捉語義方面的問題,很多論文提出了改進點,在考慮短語之間關系方面,2018年Chen[12]針對CopyRNN沒有考慮短語之間的關系提出了CorrRNN模型,該模型使用coverage機制考慮已生成短語在文中的語義表達和review機制考慮已生成短語的語義表達避免產生表達相同意思的關鍵短語,提高生成關鍵短語的多樣性以及降低生成短語的冗余度。
在考慮文章標題方面,因為文章標題中含有文章的主題以及部分關鍵短語并且之前工作忽視了文章標題的重要性,所以2018年Chen[13]提出了TG-Net模型通過對文章標題進一步編碼來提升文章標題在編碼端的重要程度,促進模型生成更多與文章標題語義相關的關鍵短語,并且提升了在文章出現的關鍵短語和沒有在文章出現的關鍵短語的效果。
在考慮數據不足方面,2018年Ye[14]考慮到上述關鍵短語生成模型只能在豐富的語料上訓練模型,在語料較少的數據上訓練模型效果較差,因為序列到序列模型參數很多,需要大量標注好關鍵短語的文本,科技類論文有很多標注好關鍵短語的文本,CorrRNN模型就是使用這種數據來訓練模型,但是使用模型應用到其它領域,有可能其他領域有標注關鍵短語的文本很少,很難訓練效果較好的關鍵短語生成模型,所以提出使用半監督的方式充分利用較少有關鍵短語的語料和很多沒有標注關鍵短語的語料來提高生成關鍵短語的效果。
在考慮額外數據方面,2019年Chen[15]提出多任務學習的框架使用關鍵短語抽取模型、額外與輸入文檔相關的短語以及關鍵短語生成模型三種共同提高關鍵短語生成的效果,該模型類似集成的思想,使用有關關鍵短語抽取的特征、關鍵短語生成的特征以及與該文章相似的關鍵短語語義編碼共同決策來生成關鍵短語,雖然這種多任務很新穎,但是效果提升較少、效果不明顯。
2018年Yuan[16]針對之前所有模型在測試時使用beam search生成過量關鍵短語,然后選取固定個數的短語作為關鍵短語的問題,例如選取前5或10個關鍵短語,Yuan認為在測試時需要根據文章語義來生成不同個數的關鍵短語,提出了使用短語序列訓練模型,因為短語序列中有短語分隔符和結束符,所以使用短語序列來訓練模型可以在測試的時候根據結束符來生成任意個數的關鍵短語。進而提出catSeq模型使用注意力機制和拷貝機制的序列到序列模型根據文章的語義來生成任意個數的關鍵短語,提出了適用于測試時不同個數關鍵短語的評價指標來進行評價。
2019年Hou[17]針對catSeq模型生成短語個數較少的缺點提出使用適應性回報的強化學習RL來訓練catSeq模型促進模型生成很多并且準確的關鍵短語。通過在回報上使用召回率來鼓勵模型生成更多的關鍵短語,其中,生成錯的關鍵短語也不會進行懲罰,模型通過一段時間訓練后可以產生大量關鍵短語,但是關鍵短語的準確率很低,作者又再在回報上使用F1值來鼓勵模型生成更加準確的關鍵短語。由于使用召回率和F1值來鼓勵模型生成更加準確以及更多的關鍵短語,該值是不可微的,無法進行求導,所以該作者使用強化學習對模型進行訓練。關鍵短語任務很適合使用強化學習針對關鍵短語生成的問題可以通過修改回報來解決某些問題。
雖然關鍵短語生成任務很適合使用強化學習來訓練模型,但是有以下幾個問題:
動作空間大,該任務動作空間很大,例如詞表大小為5萬個詞,動作空間為5萬,探索空間很大導致模型訓練時間相比有監督訓練時間長很多而且訓練過程中很不穩定。
回報設計難,設計一個很好的回報來鼓勵模型生成關鍵短語是非常重要的,特別是立即回報。
效率低,使用強化學習來訓練關鍵短語模型需要大量探索其他詞以及利用現有的詞,訓練效率相比有監督學習效率太低。
本文對關鍵短語抽取和關鍵短語生成的論文進行了總結,分別介紹了關鍵短語抽取和生成的基本流程,對關鍵短語生成模型的相關工作進行了進一步分析。雖然有很多論文解決關鍵短語生成問題,但是還有很多缺點以及效果需要進一步提高。