隨著人工智能的快速興起,Google發(fā)布的深度學(xué)習(xí)框架TensorFlow在短短兩年內(nèi),就成為了當(dāng)前最流行的深度學(xué)習(xí)項(xiàng)目。
在圖像處理、音頻處理、自然語言處理和保舉系統(tǒng)等場(chǎng)景中,TensorFlow都有著豐富的應(yīng)用。雖然開源沒多久,但是TensorFlow正在悄然滲透到我們的工作生活傍邊。
研究配景:
某新聞企業(yè)通過接入極光智能保舉系統(tǒng),在其APP端增加智能保舉模塊,為其用戶私人訂制感興趣的新聞。極光機(jī)器學(xué)習(xí)云能夠快速、精準(zhǔn)的提取每條新聞的主題,并對(duì)新聞進(jìn)行主題分類,借助極光自有的用戶標(biāo)簽,向用戶實(shí)時(shí)的保舉個(gè)性化新聞。
通過TensorFlow深度學(xué)習(xí)框架,,在自然語言處理標(biāo)的目的,極光已經(jīng)通過機(jī)器學(xué)習(xí)算法實(shí)現(xiàn)了文章標(biāo)題、摘要和關(guān)鍵詞的自動(dòng)生成功能。
研究方案:
文本自動(dòng)總結(jié)的模型一直都是深度學(xué)習(xí)中的研究熱點(diǎn)。有一些諸如 TFIDF和TextRank之類常規(guī)算法,其基來源根基理是直接抽取文本中重要的句子。也有一些較為復(fù)雜的算法如重新生成新的句子,但效果欠安。目前常用的模型是seq2seq,它是基于Encoder-Decoder的一個(gè)結(jié)構(gòu),首先將原始文本中的句子encode成一個(gè)固定大小的向量,然后通過decoder部分一個(gè)字符一個(gè)字符生成目標(biāo)句子。
TensorFlow,也就是Tensor和Flow,這就意味著Tensor和Flow是TensorFlow的基礎(chǔ)要素。Tensor意味著數(shù)據(jù),F(xiàn)low意味著流動(dòng)、計(jì)算和映射,這也表現(xiàn)出數(shù)據(jù)是有向的流動(dòng)、計(jì)算和映射。TensorFlow的結(jié)構(gòu)由會(huì)話(session),圖(graph),節(jié)點(diǎn)(operation)和邊(tensor)組成,它使用圖(graph)來體現(xiàn)計(jì)算任務(wù),圖在被稱之為會(huì)話(Session)的上下文(context)中執(zhí)行,其狀態(tài)是通過變量(Variable)來維護(hù)的,使用feed和fetch可以為任意的操作(arbitrary operation)賦值或者從其中獲取數(shù)據(jù)。
這篇文章中我們將采用基于Tensorflow的Seq2seq+Attention模型,訓(xùn)練一個(gè)新聞標(biāo)題自動(dòng)生成模型。 加入Attention注意力分配機(jī)制,是為了使Decoder在生成新的目標(biāo)句子時(shí),可以得到前面Encoder編碼階段每個(gè)字符隱藏層的信息向量,提高生成目標(biāo)序列的準(zhǔn)確度。
數(shù)據(jù)處理:
樣本數(shù)據(jù)為該企業(yè)新聞客戶端 2016 年 11 月份的新聞,超過10M的語料數(shù)據(jù),包羅新聞標(biāo)題和新聞?wù)男畔ⅰS捎谠贓ncoder編碼階段處理的信息會(huì)直接影響到整個(gè)模型的效果,所以對(duì)新聞數(shù)據(jù)的預(yù)處理工作需要非常細(xì)致。對(duì)新聞中的特殊字符、日期、英文、數(shù)字以及鏈接都要進(jìn)行替換處理。
文本預(yù)處理后,就是訓(xùn)練樣本的準(zhǔn)備工作。這里的Source序列,就是新聞的正文內(nèi)容,待預(yù)測(cè)的Target目標(biāo)序列是新聞標(biāo)題。為了保證效果,正文部分不能過長,這里設(shè)定分詞后的正文不超過 100 個(gè)詞,不足用PAD字符補(bǔ)齊,設(shè)定標(biāo)題不超過 20 個(gè)詞。在生成訓(xùn)練樣本的時(shí)候,定義了create_vocabulary()方法來創(chuàng)建詞典,data_to_id()方法把訓(xùn)練樣本(train_data.txt)轉(zhuǎn)化為對(duì)應(yīng)的詞ID。
訓(xùn)練樣本的數(shù)據(jù)格式如下:
算法解析:
Seq2Seq是一個(gè)基于輸入的sequence,預(yù)測(cè)一個(gè)未知sequence的模型。模型由Encoder編碼階段和Decoder解碼階段兩部分構(gòu)成。模型編碼階段Encoder的RNN每次會(huì)輸入一個(gè)字符代表的向量,將輸入序列編碼成一個(gè)固定長度的向量;解碼階段的RNN會(huì)一個(gè)一個(gè)字符地解碼,如預(yù)測(cè)為X。在訓(xùn)練階段時(shí)會(huì)強(qiáng)制將上一步解碼的輸出作為下一步解碼的輸入,即X會(huì)作為下一步預(yù)測(cè)Y時(shí)的輸入。
當(dāng)編碼階段輸入的序列過長時(shí),解碼階段LSTM模型將無法針對(duì)最早的輸入序列解碼。Attention注意力分配機(jī)制,在解碼階段每一步解碼時(shí),都會(huì)有一個(gè)輸入,對(duì)輸入序列所有隱含層的信息進(jìn)行加權(quán)求和,能夠很好的解決這個(gè)問題。
將分詞后的新聞文本數(shù)據(jù)拆分為訓(xùn)練樣本和測(cè)試樣本,共四個(gè)文件:train_data.txt,train_title.txt,test_data.txt,test_title.txt 。新聞?wù)膬?nèi)容和其對(duì)應(yīng)的新聞標(biāo)題需要分開存放在兩個(gè)文件內(nèi),一行為一條新聞樣本。
實(shí)證效果:
運(yùn)行腳本,訓(xùn)練好的模型將被生存下來,部分預(yù)測(cè)好的Text Summarizaion如下:
總結(jié):
隨著互聯(lián)網(wǎng)的迅速發(fā)展,網(wǎng)絡(luò)中的新聞資源呈指數(shù)級(jí)增長,通過深度學(xué)習(xí)自動(dòng)生成的標(biāo)題往往能很直不雅觀的表現(xiàn)新聞的主題內(nèi)容,便于讀者快速的瀏覽新聞,準(zhǔn)確選擇本身感興趣的內(nèi)容,節(jié)約時(shí)間成本,能夠給讀者帶來很好的體驗(yàn)感。