搜狐黨磊:深度學習在短文本分類中的應用

2020-12-15 IT168

【IT168 評論】本文根據【創客168】第12期現場演講嘉賓黨磊老師分享內容整理而成。錄音整理及文字編輯@IT168許真真。

講師介紹

黨磊,搜狐視頻高級工程師。2015年研究生畢業後加入搜狐視頻,曾負責短視頻推薦的召回模型、排序模型、短視頻播放質量評價體系、短視頻分類等項目,目前主要研究方向為將深度學習算法應用到視頻推薦系統中。

正文

大家下午好,我是來自搜狐視頻的黨磊,接下來為大家介紹深度學習在搜狐短視頻、短文本分類上的應用。

我今天的分享主要包括項目需求、可選擇解決方案以及模型訓練部署三部分。

需求及方案

該項目的需求是搜狐視頻會要求出品人上傳新視頻時為視頻綁定一個原生分類,如果出品人分類綁定錯誤,會對後期的個性化推薦造成一定幹擾,以下是反例:

比如第一個,從視頻標題看其本身是一個娛樂性內容,但因為有「傅園慧」三個字被綁定到運動領域。如果靠人工審核,視頻數量較多的情況下,分類效率會非常低下,所以需要訓練一個模型對視頻分類自動識別並進行一定程度的修正。在該項目中,我們抽取視頻標題作為項目的原始數據,下面介紹一下項目最終的整體架構。

首先抽取短視頻標題數據,通過分詞庫對標題進行分詞,分詞訓練完成後會用Word2vec算法對分詞訓練,將分詞轉換成詞向量。一切就緒之後,開始人工篩選分類正確的樣本作為訓練樣本,利用提前訓練好的詞向量將樣本數據(視頻標題關鍵詞集合)轉換成模型需要的數據格式(詞向量矩陣,一個樣本一個小矩陣)進行訓練。如果模型預測準確率較好的話,會將模型保存到分布式系統HDFS上,當線上實時預測的時候,會從HDFS加載模型,最終利用模型對上傳視頻進行預測,從而給出視頻的預測分類。

選擇解決方案

由於短視頻的標題文本信息太少,字數又在三十以內,要實現短視頻分類自動化,可選方案一般是傳統的機器學習:Bag of Words方法將視頻標題轉換成一個向量,選擇SVM/樹模型等分類模型訓練。還有一些深度學習方案:word2ve訓練詞向量,分類模型可選卷積神經網絡CNN,或者長短期記憶網絡LSTM等。

(一)詞向量

首先要說Bag of Words算法。以下表的前兩行--兩個視頻標記分詞完成之後的結果,為例。假如我有AB兩個標題文檔,我需要把這些文檔的非重複詞組成一個詞典,詞典中每個詞有一個對應的索引,索引上對應位置的值是該詞在其對應文檔中出現的次數。在該例子中,最後有九個詞,所以將AB兩個數據各自轉化成一個9維的向量。

我們來看一下A樣本最後轉化成的向量。因為張繼科的索引是1,在A裡面出現的次數是1,所以他的位置上的值是1,其它詞處理方法相同。Bag of words算法實現簡單,該方法的向量容易稀疏存儲,如果向量裡只有一些簡單的非零值,我們只存儲非零值就可以了。這個方法的缺點是它認為文檔裡的詞是完全獨立的,單詞之間沒有語法、句法以及前後關聯,這樣就不能很好的刻畫詞語之間的相似性。例如電腦和筆記本,該方法認為二者是不一樣的,而且差異很大,但實際上它們在語意上是很相似的。另外一個缺點是隨著詞典的擴大,容易造成維度災難。

下面再說Word2vec。Word2vec算法認為處於相同上下文環境的詞語在語意上是相似的。它的優點是相似詞的詞向量在空間上也是接近的,Word2vec另一個優點是在詞向量的維度可指定成固定大小,詞向量維度不受詞典大小的限制。

上圖是轉換以後在向量空間上的典型例子,圖上面的那條線上的兩個字man和woman,下面是king和queen。在空間上,man和king是比較相近的,woman和queen也是相近的,man的詞向量減去woman的詞向量得到的值和king減去queen的詞向量得到的值是相似的。

(二)分類模型

下面是常用的機器學習流程,下圖左邊是全部數據,每一行代表一個視頻標題向量。大家可以這樣理解——全部數據作為一個分類模型輸入,SVM支持向量機是分類模型,訓練完SVM模型可以對每個樣本進行預測,這是傳統機器學習的方式。

下圖是利用深度學習裡面比較經典的神經網絡CNN對短文本(視頻標題)分類的大體流程。圖中最左側矩陣數據代表一個標題,每一行是一個分詞對應的word2vec詞向量。如果一個視頻標題有十個分詞,那最左邊矩陣的行就等於10,矩陣列是分詞詞向量的長度,例如300維。用該小矩陣代表每個視頻,作為CNN模型的一次輸入。

接下來是卷積層和池化層。

卷積層的作用是對視頻標題進行高級特徵提取。一般每個卷積層會有多個不同大小的卷積核(可以理解為一個小矩陣),然後用卷積核對輸入矩陣進行卷積操作,最後會獲得多個新的矩陣,例如下面圖中藍黃綠三個n*1大小的向量。

下面介紹一下池化層。我們最終選擇的池化是max-pooling,把經過卷積操作後獲取的每一個列向量裡的最大值提取出來,這就是最大池化。池化操作可以理解為進一步提取高級特徵,然後將提取的特徵拼接成一個向量,最後用一個Softmax多分類器進行處理。Softmax最後會給出一個樣本屬於每一個類別的概率,這樣我們就可以選擇一個概率最大的類別作為該樣本的預測。這就是用CNN處理短文本分類時的常見思路。當然卷積可以是多層的,每一層可以有多個卷積核,池化層也可以對應多個。

我們還嘗試了另一個模型—循環神經網絡RNN,RNN認為一句話的詞是有先後順序的,訓練的時候能夠更好地捕捉句子單詞的上線文信息,用來進行文本分類也會獲得不錯的效果。

RNN認為標題的詞是有前後序列的,W1可以看作是一個詞,W2是第二個詞。RNN在處理時,模型隱含節點裡的值不僅僅依賴於當前輸入,還依賴於上一時刻隱含節點的值,經過有序列的處理,最後會得到一個向量,然後將這個向量表示這個樣本,最後再把向量給Softmax多分類器,對樣本類別進行預測。

模型訓練和部署

前面選擇了什麼模型對訓練集進行訓練,那麼接下來就是是選擇高效的平臺去驗證,上面這幅圖的內容是一些比較流行的深度學習處理平臺,我們最終選擇的是TensorFlow。感興趣的可以自行到Github上查看。TensorFlow是由谷歌推出的,業界用的比較多,建立模型的時候比較快速,一些底層的算法已經實現,可以理解為模塊化拼裝想要的模型。TensorFlow也支持各種流行的語言比如Java和Python,這是我們最終選擇TensorFlow的原因。

接下來是訓練和部屬。從上面的圖中,可以看出目前tensorflow平臺用的最廣泛,所以我們也選擇TensorFlow。在TensorFlow上,可以選擇Python對模型建模,快速訓練驗證。當訓練好模型後,可用tf.train.Saver()函數將模型保存到本地文件中。但是該函數默認會將模型分開保存,例如下圖中「.data」為後綴的文件保存的是模型訓練好的參數,而以「.meta」為後綴的文件保存的模型的網絡結構和各種常量以及訓練的各種操作。因為目前我們線上的開發環境是java,但是TensorFlow的Java API支持較少,沒有類似於tf.train.Saver()的函數。所以若想將模型順利部署到線上,需要對這個模型進行freeze(固化)操作,該操作會將把變量參數值轉換成常量值,然後融合到模型裡,最終整合成一個文件,例如下圖中的freeze_model.pb。然後我們就可以利用TensorFLow目前支持的JavaAPI—importGraphDef將模型加載成功,最後就可以順利的利用模型實時預測視頻的分類。

下圖是各個模型的預測效果對比。我們當時選擇人工抽查,主觀判斷的方式去檢驗模型對測試樣本的預測是否準確有效。

(1)針對原本綁定分類正確的測試樣本,會以指標「準確率」的高低去判斷模型的好壞。

(2)針對原本綁定分類錯誤的測試樣本,就不能以「準確率」判斷模型的好壞,而是人為主觀判斷預測的分類和視頻的標題所表達的意思是否一致。比如從一個視頻標題上看,這個視頻應該和娛樂有關,但是卻被綁定到運動分類下,那麼假如模型預測的類別是娛樂,我們就可以認為模型的這一次預測是有效正確的,其預測類別是對該視頻類別的一次正確修正。

以修正率指標判斷的話,總體來說SVM模型的優勢不大。

我們最終選擇的是CNN,因為輸入數據快。LSTM訓練的時間長,速度不太快,GRU雖然比LSTM快一點,但是也沒有CNN好,所以我們最終選擇了CNN。LSTM 模型效果最好,GRU次之,但是考慮到模型訓練時間的話,LSTM>GRU>CNN,所以結合我們自己的業務,最終選擇了CNN模型作為預測視頻分類的模型。

前面的內容,就是我們整個項目大體流程:從句子標題分詞,詞向量的表示,再到模型的選擇和訓練、上線部署。今天的分享到此結束,謝謝大家!

相關焦點

  • 乾貨| 深度學習在文本分類中的應用
    文本分類的應用非常廣泛。>更多應用:讓AI當法官: 基於案件事實描述文本的罰金等級分類(多分類)和法條分類(多標籤分類)。因此,往往需要採取一些策略進行降維:人工降維:停用詞過濾,低頻n-gram過濾等自動降維:LDA等值得指出的是,將深度學習中的word2vec,doc2vec作為文本特徵與上文提取的特徵進行融合,常常可以提高模型精度。
  • 一文讀懂深度學習文本分類方法
    最近有很多小夥伴想了解深度學習在文本分類的發展,因此,筆者整理最近幾年比較經典的深度文本分類方法,希望幫助小夥伴們了解深度學習在文本分類中的應用。筆者整理了近些年的相關深度文本分類論文,關注「AI算法之心」,後臺回復「文本分類論文」即可下載。
  • 【深度學習】textCNN論文與原理——短文本分類(基於pytorch)
    前言前文已經介紹了TextCNN的基本原理,如果還不熟悉的建議看看原理:【深度學習】textCNN論文與原理[1]及一個簡單的基於pytorch的圖像分類案例:【深度學習】卷積神經網絡-圖片分類案例(pytorch實現)[2]。
  • 機器不學習:基於深度學習CNN的短文本相似度計算方案
    機器學習深度學習乾貨棧 www.jqbxx.com基於CNN模型的短文本相似度的計算方法可以大致分為兩類:一類是基於Siamese結構的神經網絡模型,先分別學習輸入的文本對兒的句子向量表達,再基於句子向量計算相似度;另一類是直接以詞語粒度的相似度矩陣作為輸入,學習並計算文本相似度。
  • 文本分類中的經典深度學習模型
    眾所周知,文本分類是NLP領域中十分基礎的任務,大部分文本分類模型稍加修改就可以應用到其他任務中。下面介紹幾個經典的文本分類模型。
  • 深度學習用於自然語言處理中的文本分類:工程實踐、三級文本、整體認識
    簡介:深度學習用於自然語言處理中的文本分類:工程實踐、三級文本、整體認識。目錄一、深度學習用於文本分類自然語言處理等(13638字)11文本分類實戰--從TFIDF到深度學習(附代碼)[1](2714字)12文本分類實戰--分詞時加詞性標註,單獨訓練詞向量(附代碼)[2](1705字)83深度學習在三級文本分類中的應用[3](589字)9
  • 深度學習:基於語境的文本分類弱監督學習
    深度學習:基於語境的文本分類弱監督學習 丁磊 發表於 2021-01-18 16:04:27 高成本的人工標籤使得弱監督學習備受關注。seed-driven 是弱監督學習中的一種常見模型。
  • 文本分類在內容安全應用中的數據不平衡問題
    經過幾十年的發展,文本分類在學術界已經是一個比較成熟的技術,目前自然語言處理(NLP)的研究熱點已經不在文本分類上面。然而,作為內容安全檢測的一個重要技術手段,文本分類在實際業務中還是有不少的挑戰。首先,內容安全場景對分類的準確度要求極高,不但要求較低的誤判率,任何一個漏判都有可能給產品方帶來嚴重的後果。
  • 盤點:文本內容安全領域 深度學習的六個主流應用方法
    到2010年,深度學習技術逐漸興起,文本分類領域的技術格局也相應的發生了變化。基於深度學習的文本分類方法打破了上述技術範式,對文本進行簡單預處理後,直接餵給深度學習模型,進行端到端的訓練和推斷。一般性的,用於文本分類的深度學習模型最後一層為softmax層(多標籤問題則為sigmoid),這相當於機器學習分類器中的LR模型。由此可見,模型的其餘部分本質上就是在自動學習文本的特徵表示,因此算法工程師再也不用操心特徵工程的事情了。不過先別高興得太早,文本特徵學得好不好,取決於具體的深度學習模型結構設計和超參數設置,工程師們還是得把省下來的時間花在模型結構和超參數的調整上面。
  • 盤點:文本內容安全領域 深度學習的六個主流應用方法
    到2010年,深度學習技術逐漸興起,文本分類領域的技術格局也相應的發生了變化。基於深度學習的文本分類方法打破了上述技術範式,對文本進行簡單預處理後,直接餵給深度學習模型,進行端到端的訓練和推斷。一般性的,用於文本分類的深度學習模型最後一層為softmax層(多標籤問題則為sigmoid),這相當於機器學習分類器中的LR模型。由此可見,模型的其餘部分本質上就是在自動學習文本的特徵表示,因此算法工程師再也不用操心特徵工程的事情了。不過先別高興得太早,文本特徵學得好不好,取決於具體的深度學習模型結構設計和超參數設置,工程師們還是得把省下來的時間花在模型結構和超參數的調整上面。
  • 用深度學習(CNN RNN Attention)解決大規模文本分類問題 - 綜述和...
    近來在同時做一個應用深度學習解決淘寶商品的類目預測問題的項目,恰好碩士畢業時論文題目便是文本分類問題,趁此機會總結下文本分類領域特別是應用深度學習解決文本分類的相關的思路、做法和部分實踐的經驗。業務問題描述:淘寶商品的一個典型的例子見下圖,圖中商品的標題是「夏裝雪紡條紋短袖t恤女春半袖衣服夏天中長款大碼胖mm顯瘦上衣夏」。
  • 文本分類六十年
    此外,這類方法通常不考慮文本數據中的自然順序結構或上下文信息,這使得模型很難具備學習單詞之間語義信息的能力。2010年代之後,文本分類已逐漸從淺層學習模型轉變為深度學習模型。與基於淺層學習的方法相比,深度學習方法避免了人工設計規則和特徵,可以自動從文本中挖掘出大量且豐富的語義表示。因此,大多數文本分類研究工作都是基於數據驅動且計算複雜度較高的DNNs來進行的。
  • 達觀數據:如何用深度學習做好長文本分類與法律文書智能化處理
    在NLP領域中,文本分類輿情分析等任務相較於文本抽取,和摘要等任務更容易獲得大量標註數據。因此在文本分類領域中深度學習相較於傳統方法更容易獲得比較好的效果。正是有了文本分類模型的快速演進,海量的法律文書可以通過智能化處理來極大地提高效率。我們今天就來分析一下當前state of art的文本分類模型以及他們在法律文書智能化中的應用。
  • 深度學習在自然語言處理上的七大應用
    最有趣的不僅僅是深度學習模型在基準問題上的性能;事實上,一個單一的模型可以學習單詞的意思和執行語言任務,從而避免需要一套專門的和手工的方法。 在這篇文章中,你將發現 7 種有趣的自然語言處理任務,其中深度學習方法正在取得一些進展。 在此文中,我們將看看下面的 7 種自然語言處理問題。
  • 短文本分類常見技術:文本表示
    在chatbot的構建過程中,對用戶的意圖進行識別是其中比較重要的一個部分,而意圖識別的核心問題是如何對短文本進行分類。短文本由於自身內容的長度相較於長文本而言比較短,包含信息量少、容易存在語義歧義,這些都是短文本分類時需要考慮的問題。為了對短文本進行分析,我們首先需要將其轉化為便於計算機處理的數據形式,下面介紹一些常見的建模方法。
  • 自然語言處理深度學習的7個應用
    自然語言中仍有許多具有挑戰性的問題需要解決。然而,深度學習方法在一些特定的語言問題上取得了最新的成果。這不僅僅是深度學習模型在基準問題上的表現,基準問題也是最有趣的;事實上,一個單一的模型可以學習詞義和執行語言任務,從而消除了對專業手工製作方法渠道的需要。
  • 在圖像處理中應用深度學習技術
    工業應用中FPGA 上的神經元網絡(CNN)深度學習應用憑藉其在識別應用中超高的預測準確率儘管圖像預處理、後期處理和信號處理仍採用現有方法進行,但在圖像分類應用中(缺陷、對象以及特徵分類),深度學習變得愈加重要。利用深度學習處理某些任務更簡單,效果更好,甚至某些任務只能用深度學習方法來解決。深度學習正在逐漸威脅傳統圖像處理方法的地位——特別是處理任務中包含有複雜變量時(如反射面、光照不佳的環境、光照變化或移動的對象)。
  • 圖像處理應用中深度學習的重要性分析
    工業應用中FPGA 上的神經元網絡(CNN) 深度學習應用憑藉其在識別應用中超高的預測準確率,在圖像處理領域獲得了極大關注,這勢必將提升現有圖像處理系統的性能並開創新的應用領域。儘管圖像預處理、後期處理和信號處理仍採用現有方法進行,但在圖像分類應用中(缺陷、對象以及特徵分類),深度學習變得愈加重要。 利用深度學習處理某些任務更簡單,效果更好,甚至某些任務只能用深度學習方法來解決。深度學習正在逐漸威脅傳統圖像處理方法的地位——特別是處理任務中包含有複雜變量時(如反射面、光照不佳的環境、光照變化或移動的對象)。
  • 短文本相似度在金融智能客服中的應用 - 專注金融科技與創新 未央網
    短文本相似度,顧名思義是指長度較短文本(在中文中一般小於50個字符)的相似度計算,一般用於搜尋引擎、智能問答、知識檢索、信息流推薦等系統中的召回、排序等階段。1. 短文本相似度基本介紹短文本相似度的計算方式,最基本的分為無監督和有監督兩種方式。
  • 文本分類實戰--從TFIDF到深度學習CNN系列效果對比(附代碼)
    此外,還是用cnn卷積神經網絡實現了中文的文本分類,效果要優於上述算法。完整源碼(包括冠軍源碼) 獲取方式:關注微信公眾號 datayx  然後回復 文本分類 即可獲取。XGBoost算法–文本分類考慮到xgboost算法在各類競賽中都有很好的效果,我也決定使用該算法嘗試一下效果如何,在網上找了一篇博客,直接套用到這裡。