新聞智能推薦之Tensorflow自動生成標題的研究及應用

2020-12-14 站長之家

新聞智能推薦之Tensorflow自動生成標題的研究及應用

引言:

隨著人工智慧的快速興起,Google發布的深度學習框架TensorFlow在短短兩年內,就成為了當前最流行的深度學習項目。

在圖像處理、音頻處理、自然語言處理和推薦系統等場景中,TensorFlow都有著豐富的應用。雖然開源沒多久,但是TensorFlow正在悄然滲透到我們的工作生活當中。

研究背景:

某新聞企業通過接入極光智能推薦系統,在其APP端增加智能推薦模塊,為其用戶私人訂製感興趣的新聞。極光機器學習雲能夠快速、精準的提取每條新聞的主題,並對新聞進行主題分類,藉助極光自有的用戶標籤,向用戶實時的推薦個性化新聞。

通過TensorFlow深度學習框架,在自然語言處理方向,極光已經通過機器學習算法實現了文章標題、摘要和關鍵詞的自動生成功能。

研究方案:

文本自動總結的模型一直都是深度學習中的研究熱點。有一些諸如 TFIDF和TextRank之類常規算法,其基本原理是直接抽取文本中重要的句子。也有一些較為複雜的算法如重新生成新的句子,但效果不佳。目前常用的模型是seq2seq,它是基於Encoder-Decoder的一個結構,首先將原始文本中的句子encode成一個固定大小的向量,然後通過decoder部分一個字符一個字符生成目標句子。

TensorFlow,也就是Tensor和Flow,這就意味著Tensor和Flow是TensorFlow的基礎要素。Tensor意味著數據,Flow意味著流動、計算和映射,這也體現出數據是有向的流動、計算和映射。TensorFlow的結構由會話(session),圖(graph),節點(operation)和邊(tensor)組成,它使用圖(graph)來表示計算任務,圖在被稱之為會話(Session)的上下文(context)中執行,其狀態是通過變量(Variable)來維護的,使用feed和fetch可以為任意的操作(arbitrary operation)賦值或者從其中獲取數據。

這篇文章中我們將採用基於Tensorflow的Seq2seq+Attention模型,訓練一個新聞標題自動生成模型。 加入Attention注意力分配機制,是為了使Decoder在生成新的目標句子時,可以得到前面Encoder編碼階段每個字符隱藏層的信息向量,提高生成目標序列的準確度。

數據處理:

樣本數據為該企業新聞客戶端 2016 年 11 月份的新聞,超過10M的語料數據,包含新聞標題和新聞正文信息。由於在Encoder編碼階段處理的信息會直接影響到整個模型的效果,所以對新聞數據的預處理工作需要非常細緻。對新聞中的特殊字符、日期、英文、數字以及連結都要進行替換處理。

文本預處理後,就是訓練樣本的準備工作。這裡的Source序列,就是新聞的正文內容,待預測的Target目標序列是新聞標題。為了保證效果,正文部分不能過長,這裡設定分詞後的正文不超過 100 個詞,不足用PAD字符補齊,設定標題不超過 20 個詞。在生成訓練樣本的時候,定義了create_vocabulary()方法來創建詞典,data_to_id()方法把訓練樣本(train_data.txt)轉化為對應的詞ID。

訓練樣本的數據格式如下:

算法解析:

 Seq2Seq是一個基於輸入的sequence,預測一個未知sequence的模型。模型由Encoder編碼階段和Decoder解碼階段兩部分構成。模型編碼階段Encoder的RNN每次會輸入一個字符代表的向量,將輸入序列編碼成一個固定長度的向量;解碼階段的RNN會一個一個字符地解碼,如預測為X。在訓練階段時會強制將上一步解碼的輸出作為下一步解碼的輸入,即X會作為下一步預測Y時的輸入。

當編碼階段輸入的序列過長時,解碼階段LSTM模型將無法針對最早的輸入序列解碼。Attention注意力分配機制,在解碼階段每一步解碼時,都會有一個輸入,對輸入序列所有隱含層的信息進行加權求和,能夠很好的解決這個問題。

將分詞後的新聞文本數據拆分為訓練樣本和測試樣本,共四個文件:train_data.txt,train_title.txt,test_data.txt,test_title.txt 。新聞正文內容和其對應的新聞標題需要分開存放在兩個文件內,一行為一條新聞樣本。

實證效果:

運行腳本,訓練好的模型將被保存下來,部分預測好的Text Summarizaion如下:

總結:

隨著網際網路的迅速發展,網絡中的新聞資源呈指數級增長,通過深度學習自動生成的標題往往能很直觀的體現新聞的主題內容,便於讀者快速的瀏覽新聞,準確選擇自己感興趣的內容,節約時間成本,能夠給讀者帶來很好的體驗感。

智能推薦已經成為一種勢不可擋的趨勢,隨著人工智慧的發展,算法推薦必將成為內容領域的主流之一。極光即將推出一套完整的智能推薦引擎,模型引入極光用戶標籤,將基於Tensorflow的LSTM主題分類的個性化推薦和非個性化推薦相結合,不僅能很好的解決用戶冷啟動問題,而且可以滿足企業的個性化需求和用戶的實時智能推薦。

免責聲明:「站長之家」的傳媒資訊頁面文章、圖片、音頻、視頻等稿件均為自媒體人、第三方機構發布或轉載。如稿件涉及版權等問題,請與我們聯繫刪除或處理。稿件內容僅為傳遞更多信息之目的,不代表本網觀點,亦不代表本網站贊同其觀點或證實其內容的真實性,更不對您的投資構成建議。我們不鼓勵任何形式的投資行為、購買使用行為。

相關焦點

  • 機器學習進階筆記| 利用TensorFlow實現智能數字識別
    編寫第一個Tensorflow項目——Mnist數字識別Mnist數字識別介紹人工智慧技術已經逐漸滲透到大眾生活的方方面面,從大名鼎鼎的AlphaGo,再到貼近實際生活的廣告展示、新聞智能推薦等,人工智慧技術被廣泛運用於各行各業。近年來,人工智慧技術在圖像(物體識別、人臉識別)、自然語言(語音識別、翻譯、對話機器人)、智能醫療、智能推薦(廣告、新聞、視頻)等領域取得了飛速的發展。
  • 開源 | TensorFlow官方工具TF-Coder,自動生成代碼
    項目地址:https://github.com/google-research/tensorflow-coderGoogle Colab 試用地址:https://colab.research.google.com/github/google-research/tensorflow-coder/blob/master/TF-Coder_Colab.ipynb
  • TensorFlow應用實戰 | TensorFlow基礎知識
    名字: MUL0表示索引你是operation產生的第幾個張量shape 就是形狀 dtype 數據類型定義一個有名字的Variablenamed_var = tf.Variable([5,6], name="named_var")named_var自動生成的會以數據類型為名字
  • 基於TensorFlow的深度學習實戰
    為了將環境建在 ~/tensorflow 目錄下, 執行:$ virtualenv --system-site-packages ~/tensorflow接下來激活virtualenv:$ source ~/tensorflow/bin/activate #  with bash $ source ~/tensorflow/bin/activate.csh
  • tensorflow機器學習模型的跨平臺上線
    生成的模型,但是由於tensorflow模型往往較大,使用無法優化的PMML文件大多數時候很笨拙,因此本文我們專門討論下tensorflow機器學習模型的跨平臺上線的方法。這裡唯一的區別是轉化生成PMML文件需要用一個Java庫jpmml-tensorflow來完成,生成PMML文件後,跨語言加載模型和其他PMML模型文件基本類似。tensorflow serving是tensorflow 官方推薦的模型上線預測方式,它需要一個專門的tensorflow伺服器,用來提供預測的API服務。
  • 如何使用TensorFlow Hub的ESRGAN模型來在安卓app中生成超分圖片
    深度學習,尤其是對抗生成網絡 GAN,已經被成功應用在超分任務上,比如 SRGAN 和 ESRGAN 都可以生成比較真實的超分圖片。那麼在本文裡,我們將介紹一下如何使用TensorFlow Hub上的一個預訓練的 ESRGAN 模型來在一個安卓 app 中生成超分圖片。最終的 app 效果如下圖,我們也已經將完整代碼開源給大家參考。
  • TensorFlow 資源大全中文版
    TensorFlow 是一個採用數據流圖(data flow graphs),用於數值計算的開源軟體庫。節點(Nodes)在圖中表示數學操作,圖中的線(edges)則表示在節點間相互聯繫的多維數據數組,即張量(tensor)。它靈活的架構讓你可以在多種平臺上展開計算,例如臺式計算機中的一個或多個CPU(或GPU)、伺服器、行動裝置等等。
  • TensorFlow 安裝詳解
    TensorFlow 最初由 Google 大腦小組(隸屬於 Google 機器智能研究機構)的研究員和工程師們開發出來,用於機器學習和深度神經網絡方面的研究,但這個系統的通用性使其也可廣泛用於其他計算領域。那什麼是數據流圖(Data Flow Graphs)呢?
  • 可能是史上最全的Tensorflow學習資源匯總
    2)從Tensorflow基礎知識到有趣的項目應用:https://github.com/pkmital/tensorflow_tutorials同樣是適合新手的教程,從安裝到項目實戰,教你搭建一個屬於自己的神經網絡。
  • 【官方教程】TensorFlow在圖像識別中的應用
    這一步生成了二進位可執行程序,然後這樣運行:bazel-bin/tensorflow/examples/label_image/label_image它使用了框架自帶的示例圖片,輸出的結果大致是這樣:I tensorflow/examples/label_image
  • TensorFlow極速入門
    最後給出了在 tensorflow 中建立一個機器學習模型步驟,並用一個手寫數字識別的例子進行演示。1、tensorflow是什麼?tensorflow 是 google 開源的機器學習工具,在2015年11月其實現正式開源,開源協議Apache 2.0。
  • tensorflow極速入門
    最後給出了在 tensorflow 中建立一個機器學習模型步驟,並用一個手寫數字識別的例子進行演示。1、 tensorflow是什麼?tensorflow 是 google 開源的機器學習工具,在2015年11月其實現正式開源,開源協議Apache 2.0。下圖是 query 詞頻時序圖,從中可以看出 tensorflow 的火爆程度。
  • TensorFlowSharp入門使用C#編寫TensorFlow人工智慧應用
    可以使用NuGet 安裝TensorFlowSharp,如下:Install-Package TensorFlowSharp 編寫簡單應用使用VS2017新建一個.NET Framework 控制臺應用 tensorflowdemo,接著添加TensorFlowSharp 引用。
  • TensorFlow開發者證書 中文手冊
    如果您通過了考試,但在10個工作日內沒有收到證書,或者如果您想選擇不接受您的證書,請在tensorflow-certificate-team@google.com與我們聯繫。2.0.0 和 tensorflow-datasets,conda install tensorflow==2.0.0,conda install tensorflow-datasets==1.3.2
  • python應用之基於tensorflow的數據擬合:深度學習之預測入門篇
    實驗目的:1、了解python在深度學習領域的應用2、學習安裝python第三方依賴庫實驗環境:已正確安裝python3.5以及依賴庫tensorflow、matplotlib預測過程展示:1、應用領域
  • Tensorflow 全網最全學習資料匯總之Tensorflow 的入門與安裝【2】
    更多關於TensorFlow的深入介紹、應用項目以及各機器學習開源框架之間的對比等內容,請見雷鋒網(公眾號:雷鋒網)的系列文章。《TensorFlow學習筆記1:入門》連結:http://www.jeyzhang.com/tensorflow-learning-notes.html本文與上一篇的行文思路基本一致,首先概括了TensorFlow的特性,然後介紹了graph、session、variable 等基本概念的含義,以具體代碼的形式針對每個概念給出了進一步的解釋
  • 計算機圖形學遇上深度學習,針對3D圖像的TensorFlowGraphics面世
    GitHub 地址:https://github.com/tensorflow/graphics近幾年,一種可以插入神經網絡架構中的新型可微圖形層(differentiable graphics layer)開始興起。從空間變換器(spatial transformer)到可微圖形渲染器,這些新型網絡層利用多年的計算機視覺和圖形學研究知識來構建更高效的新網絡架構。
  • TensorFlow圖像分類教程
    雲棲君導讀:深度學習算法與計算機硬體性能的發展,使研究人員和企業在圖像識別、語音識別、推薦引擎和機器翻譯等領域取得了巨大的進步。
  • TensorFlow發布JavaScript開發者的機器學習框架TensorFlow.js
    發布新的 TensorFlow 官方博客(http://blog.tensorflow.org/)與 TensorFlow YouTube 頻道;2. 面向 JavaScript 開發者的全新機器學習框架 TensorFlow.js;3.
  • 令人困惑的TensorFlow!
    我叫 Jacob,是 Google AI Resident 項目的研究學者。我是在 2017 年夏天加入該項目的,儘管已經擁有了豐富的編程經驗,並且對機器學習的理解也很深刻,但此前我從未使用過 TensorFlow。當時我覺得憑我的能力應該很快就能上手。