背景
圖1. 猜你喜歡推薦結果展示圖以及商品詳情頁截圖(目前猜你喜歡同時存在一行以及兩行標題情況)。商品原始標題往往過長(平均長度30字左右),在結果頁中無法完整顯示,只能點選進入商品詳情頁才能看到商品完整標題。
當前淘系商品(C2C)標題主要由商家撰寫,而商家為了SEO,往往會在標題中堆砌大量冗餘詞彙,甚至許多與商品並不直接相關的詞彙,以提高被搜尋召回的機率,以及吸引使用者點選。這引起兩方面的問題:
這些標題往往過長,以往pc時代這並不是一個嚴重問題。但現在已經全面進入移動網際網路時代,手淘使用者也幾乎都是移動端使用者,這些冗長的商品標題由於螢幕尺寸限制,往往顯示不全,只能截斷處理,嚴重影響使用者體驗。如圖1所示,在推薦的展示頁中,標題往往顯示不全,影響體驗。使用者若想獲取完整標題,還需進一步點選進入商品詳情頁。
另一方面,這些原始長標題是為了搜尋做的SEO,對於推薦的match階段,其實並無幫助。甚至,其中許多無關冗餘詞彙還會起到噪聲作用,並且也會對使用者的瀏覽決策起到干擾作用。
因此,使用盡可能短的文字體現商品的核心屬性,引起使用者的點選和瀏覽興趣,提高轉化率,是值得深入研究的問題。
問題形式化
商品短標題的生成或者壓縮,可以看作一種特殊的文字摘要任務。類似於Alexander Rush等人提出的sentence summarization任務[1,2]。但相比普通的sentence summarization任務,作為特定電商領域且跟使用者消費密切相關的一個任務,商品短標題的生成具有一些更顯式且嚴格的限制。此工作中,我們主要將其抽象為兩點:
不能引入無關資訊。商品的短標題儘量保留原始標題中的用詞,避免引入其他資訊。一方面這是因為原始標題中的詞語往往都是賣家為了點選率等考慮精挑細選的,已經足夠優秀;另一方面,引入其他資訊雖然能夠帶來更多的變化,但也增加了犯錯的可能。如為Nike的鞋子標題生成了Adidas關鍵字,這類事實性的錯誤在wiki style類的文字摘要中經常發生,已引起研究人員的重視[3],但在新聞之類的摘要中,人們往往還能忍受。對於電商平臺來說,這類錯誤是不能容忍的。
需要保留商品的關鍵資訊(如,品牌,品類詞)。商品的短標題如果丟失了品牌或者品類詞,一方面對使用者來說非常費解,影響體驗;另一方面也容易引起賣家的不滿投訴。
這兩個約束,在普通的句子摘要任務中,同樣也成立,但他們並沒有電商領域中如此嚴格。
針對這些問題,我們基於Pointer Netowrk [4],提出Multi-Source Pointer Network (MS-Pointer)來顯式建模這兩個約束,生成商品短標題。
首先,對於約束1,我們使用Pointer Network框架將商品短標題摘要建模成一個extractive summarization(抽取式摘要)問題(Pointer Network是一種特殊的Seq2Seq模型結構,具體下一小節介紹)。對於約束2,我們嘗試在原有的標題encoder之外,引入關於商品背景知識資訊的另一個encoder (knowledge encoder),這個encoder編碼了關於商品的品牌以及品類詞資訊,其作用一方面在於告訴模型商品的品牌和品類詞資訊,另一方面在於pointer mechanism可以直接從這個encoder中提取商品的品牌等資訊。
最終,MS-Pointer可以使用data-driven的方式學習從這多個encoder中提取相應的資訊來生成商品的短標題,比如從knowledge encoder中選擇品牌資訊,而從title encoder中選擇豐富的描述資訊。
這裡需要說明兩個問題。
對於抽取式摘要,基於刪除的方法(Deletion Based)一樣可以使用。比如Filippova等人[5]便基於seq2seq提出了在decode端輸出原始title每個詞保留與否的label,這是一個特殊的seq2seq模型,與普通的seq2seq模型decoder輸入是summarization不同,這個模型的decoder的輸入還是原始標題,輸出並不是生成詞,而是輸入詞保留與否二分類的label。然而,為了讓摘要結果更加通順易讀,摘要中經常存在word reordering現象[6],Deletion Based方法並不能很好地處理這問題。在我們收集的訓練資料中,就發現有超過50%的資料有word reordering現象。
另一個問題在於title中品牌、品類詞資訊的處理使用。顯然,我們可以引入NER模型,構建一個end2end的模型,從title中自動識別商品的品牌和品類詞等資訊,來完成這個任務。但是,首先NER模組本身就尤其精度限制,會有錯誤累積問題,且需要額外的entity標註資料。另外,許多標題中存在多個品牌,多個品類詞,這種情況下,正確識別錯商品自身的品牌和品類詞資訊,對NER模組來說是個更大的挑戰。而商品的品牌和品類資訊,可以輕易地從資料庫中商品meta資訊中獲取,直接給模型輸入這些背景知識,顯然是更加簡單直接的選擇。
模型
Pointer Network
Pointer Network框架圖
與普通的seq2seq從一個預先定義好的vocabulary中選擇詞語生成摘要不同,pointer network使用attention機制,從encoder中選擇詞語來生成摘要。如圖2所示,在decode的每一步t,使用decoder的隱狀態dtdt去attention encoder的隱狀態[h1,…,hi,…,hn][h1,…,hi,…,hn],然而以此attention的權重作為分佈,去選擇對應位置上的詞來生成摘要。
相比傳統的seq2seq,Pointer Network能夠更好地處理NLP中常遇到的OOV問題。這是因為它能夠動態地從輸入中選擇單詞,而不是從一個預定義好的vocabulary中選擇,這使得它可以生成vocabulary中沒有的單詞。這對於商品短標題生成是一個非常好的特性,因為商品標題中存在大量的型號類的詞語,都可能未出現在訓練語料中。當然最重要的是,Pointer Network提供了一種extractive地摘要生成建模思路。短標題中所有的單詞都是從輸入的原始標題中獲取的,這樣可以大大降低普通seq2seq的abstractive摘要那樣出錯的機率。但是Pointer Network並沒有機制保障decoder保留原標題中的品牌與品類資訊,而這對電商平臺而言是至關重要的。
Multi-Sources Pointer Network
使用兩個encoder的Multi-Sources Pointer Network框架圖
最顯著的區別在於,MS-Pointer可以從多個encoders中選擇單詞。在decode的每一步t,首先計算一個soft gating weight λ,這個機率權衡著decoder從兩個encoder中選擇單詞的機率。最終生成單詞的機率為兩個encoder上的attention分佈的加權和。這裡為了簡單處理,使用了sigmoid函式,根據decoder當前輸入、狀態以及encoder的狀態來計算選擇不同encoder的機率。更一般地,可以使用softmax函式來建模大於兩個encoder的情況。這裡λ所起的作用類似於一個分類器,如根據當前狀態,去選擇是否從background knowledge encoder中選擇品牌資訊。
最終,模型的loss可定義為為:
實驗效果
資料集構造
對於本文的模型,我們除了常見的訓練seq2seq模型需要的輸入輸出seq pair 樣本,還需要商品的品牌、品類背景知識資訊。對於品牌等資訊,可以容易地從odps資料庫中獲取。對於商品原始標題與短標題對,我們從手淘有好貨欄目中收集了這樣的資料。有好貨是手淘首頁一個推薦場景,其中包含了大量達人生產的優質內容資料。這其中,就包含了商品的短標題。如下圖所示,有好貨中推薦結果的展示頁面包含了達人所寫的商品短標題。
但是這些短標題並不適合所有都拿來訓練模型。其中一部分標題類似於創意文案,已經與商品本書關聯較弱,屬於噪聲資料需要去掉;另一部分雖然也是商品短標題,但是由達人重新延伸重寫了,這可以認為是abstractive的短標題,也需要去除,原因見上文說明,因我們的模型是一個extractive模型;還有一些雖然是extractive的短標題,但是存在品牌缺失類的情況,也需要清除。所以,最終我們嚴格使用extractive,短標題長度(10個字,推薦頁一行能顯示的長度),以及必須保留品牌資訊,來過濾了有好貨的訓練資料。在第一期論文研究階段,共收集了超過40w訓練資料,統計資訊見下表:
後期,我們擴充了資料來源,包括有好貨以及從其他資訊源手機的資料,最終構成了一個超過500萬樣本的訓練語料。
資料處理
在此工作中,我們儘量減少了對於資料的預處理操作:
大部分標點符號均做了保留。許多品牌,型號等資訊包含標點,如Coca-Cola, J.crew.
凡是出現在品牌等關鍵資訊中的數字,都保留。這是因為許多品牌、型號中會帶有資料,如 7 for all mankind, 360,PS4等。數字在NLP中是比較難處理的一類問題,首先數字是無窮的,難以學習可靠的表示,且生成時候很容易會生成一個新的錯誤的數字出來。因此凡是每次短標題中出現過的數字,都被過濾掉了。當然還有很多50ml、100%這樣的處理細節,這裡不做過細描述(前面的兩個case,在此工作中不做切分,作為一個整體處理)。
不分詞,按字處理。seq2seq很多時候效能已經足夠強,可以學出如何組合出合適的詞語,這樣也可以規避分詞錯誤引起的問題。另外,詞的長度不定,也難以控制生成的短標題長度。
資料按照80%,10%,10%,以類目層次地隨機劃分為訓練集、驗證集以及測試集。
Baseline & 模型設定
這個工作中,簡單起見,我們使用了基於LSTM的encoder和decoder,模型以及最佳化超引數設定如下:
baseline包括:
Truncation (Trunc.) 阿里、Amazon.com以及eBay等網站線上所使用的方案,直接截斷,保留前n個詞。
TextRank [7] 一種類似於pagerank的關鍵詞提取演算法,可以用於生成摘要。
Seq2Seq-Del [5] 如上文介紹,基於seq2seq的deletion based的抽取式摘要演算法。
LSTM-Del 與Seq2Seq-Del的不同在於直接在encoder的輸出預測單詞保留與否。
Pointer network (Ptr-Net) [4] 見模型部分介紹。
Ptr-Concat 將background knowledge與title拼接後,使用Ptr-Net。
Vanilla sequence-to-sequence (Seq2Seq-Gen) 傳統的seq2seq普通,abstractive的方法。
Pointer-Generator(Ptr-Gen) Ptr-Net與Seq2Seq-Gen的結合。
評價標準
跟大多數文字生成任務一樣,文字摘要評測一直是一個困難的任務,常見評測方法包括人工評測和自動評測。對於自動評測方法,我們使用了BLUE、ROUGE和METEOR三個指標。我們使用nlg-eval包計算 BLEU [8]和METEOR [10];pythonrouge計算ROUGE F1 [9]。此外,我們也人工評測了模型生成的短標題的質量。
自動評測
可以發現直接截斷和TextRank的結果最差,因為這兩個方法都沒有考慮標題中單詞的語義資訊。同時,基於seq2seq框架的模型均取得了很高的得分,這說明seq2seq這個框架強大的擬合能力,在這個簡單任務上優異效能。相比abstractive模型,extractive模型在各項指標上表現的更加優異。相比Ptr-Net和Ptr-Concat,MS-Pointer在各項指標上均有明顯提升。
品牌保留實驗
如前文所述,對於電商領域的商品短標題生成,品牌、品類詞這類關鍵資訊的保留是一個至關重要的指標。但由於品類詞是一個比較籠統的概念,很多時候類似於類目,他在商品的標題中未必原封不動地出現,所以難以自動地評價。所幸,我們可以很容易地自動化測試模型是否完整地保留下了商品的品牌資訊。錯誤率結果如下表:
容易看出MS-Pointer顯著優於其他模型,在測試集上的錯誤率降低到了接近千分之一。這裡online資料集指的是從線上隨機取樣的140166個商品標題。值得說明的是線上上的online資料集中存在大量訓練語料中沒有出現過的品牌,當輸入標題中存在多個oov單詞時,模型難以從這些相同的oov embedding中選擇出正確的詞。針對這個問題,我們嘗試在這些oov賦以不同的embedding加以區分,在此情況下online資料集上的錯誤率可以降低到0.56%.
人工評測
此外,我們隨機取樣了300條短標題進行了人工評測,主要考慮了四個維度, 核心產品詞識別準確率Accuracy(0/1),品類詞完整性Comm. (0/1),可讀性 Readability(1~5)以及資訊完整性 Info.(1~5),結果如下:
人工評測結果同樣說明了MS-Pointer方法相對其他方法的優勢,並且可以發現與人工寫的短標題得分非常相近。
線上實驗
除了前文的離線實驗,我們同樣進行了線上實驗對比。兩個分桶的差異只有結果展示標題不同:一個分桶是線上原油方案截斷的兩行標題;另一個是模型產生的8~10個字的短標題。因此展示標題的不同,直接影響使用者點選與否,因此這裡選用CTR作為實驗指標。試驗持續了一週時間,結果如下圖:
這裡統計的是分桶內部,pv>20以上商品的平均CTR。可以發現,使用生成的短標題可以明顯提升。更進一步地分析發現,不同類目下商品的CTR變化非常不一樣。如電子產品類商品的CTR提升甚至可以達到10%;而女性使用者更加關注的類目如女裝、化妝品類目CTR提升則較小。這是因為女性使用者在瀏覽這些類目的推薦結果時,對於修飾形容詞彙(如衣服的款式、材質,化妝品的功效等)會比較關注,而10個字以內的短標題畢竟有損,往往難以包含所有這些資訊。而電子產品這些類目,往往品牌型號加上品類詞就已足夠包含所有資訊,過多的冗餘資訊反而帶來干擾。這也說明個性化的短標題生成以及如何引入CTR指標,是一個值得探索的方向。當然更加複雜的knowledge的引入,也是一個值得探索的方向。
Reference:
[1] Alexander M. Rush, Sumit Chopra, and Jason Weston. 2015. A Neural Attention Model for Abstractive Sentence Summarization. In Proceedings of EMNLP. Association for Computational Linguistics, Lisbon, Portugal, 379–389.
[2] Sumit Chopra, Michael Auli, and Alexander M. Rush. 2016. Abstractive Sentence Summarization with Attentive Recurrent Neural Networks. In Proceedings of NAACL. Association for Computational Linguistics, San Diego, California, 93– 98.
[3] Abigail See, Peter J. Liu, and Christopher D. Manning. 2017. Get To The Point: Summarization with Pointer-Generator Networks. In Proceedings of ACL. Association for Computational Linguistics, Vancouver, Canada, 1073–1083.
[4] Oriol Vinyals, Meire Fortunato, and Navdeep Jaitly. 2015. Pointer Networks. In Proceedings of NIPS, C. Cortes, N. D. Lawrence, D. D. Lee, M. Sugiyama, and R. Garnett (Eds.). Curran Associates, Inc., 2692–2700.
[5] Katja Filippova, Enrique Alfonseca, Carlos A. Colmenares, Lukasz Kaiser, and Oriol Vinyals. 2015. Sentence Compression by Deletion with LSTMs. In Proceedings of EMNLP. Association for Computational Linguistics, Lisbon, Portugal, 360–368.
[6] Hongyan Jing. 2002. Using Hidden Markov Modeling to Decompose Human-written Summaries. Comput. Linguist. 28, 4 (Dec. 2002), 527–543.
[7] Rada Mihalcea and Paul Tarau. 2004. TextRank: Bringing Order into Texts. In Proceedings of EMNLP 2004. Association for Computational Linguistics, Barcelona, Spain, 404–411.
[8] Kishore Papineni, Salim Roukos, Todd Ward, and Wei-Jing Zhu. 2002. Bleu: a Method for Automatic Evaluation of Machine Translation. In Proceedings of ACL. Association for Computational Linguistics, Philadelphia, Pennsylvania, USA, 311–318. https://doi.org/10.3115/1073083.1073135
[9] Chin-Yew Lin. 2004. ROUGE: A Package for Automatic Evaluation of Summaries. In Text Summarization Branches Out: Proceedings of the ACL-04 Workshop.
[10] Satanjeev Banerjee and Alon Lavie. 2005. METEOR: An Automatic Metricfor MT Evaluation with Improved Correlation with Human Judgments. In Proceedings of the ACL Workshop on Intrinsic and Extrinsic Evaluation Measures for Machine Translation and/or Summarization. Association for Computational Linguistics, Michigan, 65–72.