當前位置:
首頁 > 最新 > 達觀數據文本挖掘負責人分享文本分類方法和應用案例

達觀數據文本挖掘負責人分享文本分類方法和應用案例

新媒體管家

自然語言處理(NLP)一直是人工智慧領域的重要話題,而人類語言的複雜性也給NLP布下了重重困難等待解決。隨著深度學習(Deep Learning)的熱潮來臨,有許多新方法來到了NLP領域,給相關任務帶來了更多優秀成果,也給大家帶來了更多應用和想像的空間。

近期,達觀數據文本挖掘組負責人張健應邀在雷鋒網AI研習社分享了一些NLP方面的知識和案例。

1

達觀文本挖掘系統整體方案

達觀文本挖掘系統整體方案包含了NLP處理的各個環節,從處理的文本粒度上來分,可以分為篇章級應用、短串級應用和辭彙級應用。

篇章級應用有六個方面,已經有成熟的產品支持企業在不同方面的文本挖掘需求:

垃圾評論:精準識別廣告、不文明用語及低質量文本。

黃反識別:準確定位文本中所含涉黃、涉政及反動內容。

標籤提取:提取文本中的核心詞語生成標籤。

文章分類:依據預設分類體系對文本進行自動歸類。

情感分析:準確分析用戶透過文本表達出的情感傾向。

文章主題模型:抽取出文章的隱含主題。

為了實現這些頂層應用,達觀掌握從詞語短串分析個層面的分析技術,開發了包括中文分詞、專名識別、語義分析和詞串分析等模塊。

達觀數據文本挖掘架構圖

2

文本挖掘任務類型的劃分

文本挖掘任務大致分為四個類型:類別到序列、序列到類別、同步的(每個輸入位置都要產生輸出)序列到序列、非同步的序列到序列。

同步的序列到序列的例子包括中文分詞,命名實體識別和詞性標註。一部的序列到序列包括機器翻譯和自動摘要。序列到類別的例子包括文本分類和情感分析。類別(對象)到序列的例子包括文本生成和形象描述。

3

序列標註應用:中文分詞

同步的序列到序列,其實就是序列標註問題,應該說是自然語言處理中最常見的問題。序列標註的應用包括中文分詞、命名實體識別和詞性標註等。序列標註問題的輸入是一個觀測序列,輸出的是一個標記序列或狀態序列。

舉中文分詞為例,處理「結合成分子」的觀測序列,輸出「結合/成/分子」的分詞標記序列。針對中文分詞的這個應用,有多種處理方法,包括基於詞典的方法、隱馬爾可夫模型 (HMM)、最大熵模型、條件隨機場(CRF)、深度學習模型(雙向LSTM等)和一些無監督學習的方法(基於凝聚度與自由度)。

4

序列標註應用:NER

命名實體識別:Named Entity Recognition,簡稱NER,又稱作「專名識別」,是指識別文本中具有特定意義的實體,主要包括人名、地名、機構名、專有名詞等。通常包括實體邊界識別和確定實體類別。

對與命名實體識別,採取不同的標記方式,常見的標籤方式包括IO、BIO、BMEWO和BMEWO+。其中一些標籤含義是:

B:begin

I:一個詞的後續成分

M:中間

E:結束

W:單個詞作為實體

大部分情況下,標籤體系越複雜準確度也越高,但相應的訓練時間也會增加。因此需要根據實際情況選擇合適的標籤體系。通常我們實際應用過程中,最難解決的還是標註問題。所以在做命名實體識別時,要考慮人工成本問題。

5

英文處理

在NLP領域,中文和英文的處理在大的方面都是相通的,不過在細節方面會有所差別。其中一個方面,就是中文需要解決分詞的問題,而英文天然的就沒有這個煩惱;另外一個方面,英文處理會面臨詞形還原和詞根提取的問題,英文中會有時態變換(made==>make),單複數變換(cats==>cat),詞根提取(arabic==>arab)。

在處理上面的問題過程中,不得不提到的一個工具是WordNet。WordNet是一個由普林斯頓大學認識科學實驗室在心理學教授喬治·A·米勒的指導下建立和維護的英語字典。在WordNet中,名詞、動詞、形容詞和副詞各自被組織成一個同義詞的網路,每個同義詞集合都代表一個基本的語義概念,並且這些集合之間也由各種關係連接。我們可以通過WordNet來獲取同義詞和上位詞。

6

詞嵌入

在處理文本過程中,我們需要將文本轉化成數字可表示的方式。詞向量要做的事就是將語言數學化表示。詞向量有兩種實現方式:One-hot 表示,即通過向量中的一維0/1值來表示某個詞;詞嵌入,將詞轉變為固定維數的向量。

word2vec 是使用淺層和雙層神經網路產生生詞向量的模型,產生的詞嵌入實際上是語言模型的一個副產品,網路以詞表現,並且需猜測相鄰位置的輸入詞。word2vec中詞向量的訓練方式有兩種,cbow(continuous bags of word)和skip-gram。cbow和skip-gram的區別在於,cbow是通過輸入單詞的上下文(周圍的詞的向量和)來預測中間的單詞,而skip-gram是輸入中間的單詞來預測它周圍的詞。

7

文檔建模

要使計算機能夠高效地處理真實文本,就必須找到一種理想的形式化表示方法,這個過程就是文檔建模。文檔建模一方面要能夠真實地反映文檔的內容,另一方面又要對不同文檔具有區分能力。文檔建模比較通用的方法包括布爾模型、向量空間模型(VSM)和概率模型。其中最為廣泛使用的是向量空間模型。

8

利用機器學習進行模型訓練

文本分類的流程如圖 所示,包括訓練、文本語義、文本特徵處理、訓練模型、模型評估和輸出模型等幾個主要環節。其中介紹一下一些主要的概念。

文檔建模:概率模型,布爾模型,VSM;

文本語義:分詞,命名實體識別,詞性標註等;

文本特徵處理:特徵降維,包括使用評估函數(TF-IDF,互信息方法,期望交叉熵,QEMI,統計量方法,遺傳演算法等);特徵向量權值計算;

樣本分類訓練:樸素貝葉斯分類器,SVM,神經網路演算法,決策樹,Ensemble演算法等;

模型評估:召回率,正確率,F-測度值;

輸出模型。

9

向量空間模型

向量空間模型是常用來處理文本挖掘的文檔建模方法。VSM概念非常直觀——把對文本內容的處理簡化為向量空間中的向量運算,並且它以空間上的相似度表達語義的相似度,直觀易懂。

當文檔被表示為文檔空間的向量時,就可以通過計算向量之間的相似性來度量文檔間的相似性。它的一些實現方式包括:

1)N-gram模型:基於一定的語料庫,可以利用N-Gram來預計或者評估一個句子是否合理;

2)TF-IDF模型:若某個詞在一篇文檔中出現頻率TF高,卻在其他文章中很少出現,則認為此詞具有很好的類別區分能力;

3)Paragraph Vector模型:其實是word vector的一種擴展。Gensim中的Doc2Vec 以及Facebook開源的Fasttext工具也是採取了這麼一種思路,它們將文本的詞向量進行相加/求平均的結果作為Paragraph Vector。

10

文本特徵提取演算法

目前大多數中文文本分類系統都採用詞作為特徵項,作為特徵項的詞稱作特徵詞。這些特徵詞作為文檔的中間表示形式,用來實現文檔與文檔、文檔與用戶目標之間的相似度計算 。如果把所有的詞都作為特徵項,那麼特徵向量的維數將過於巨大。有效的特徵提取演算法,不僅能降低運算複雜度,還能提高分類的效率和精度。

文本特徵提取的演算法包含下面三個方面:

1)從原始特徵中挑選出一些最具代表文本信息的特徵,例如詞頻、TF-IDF方法;

2)基於數學方法找出對分類信息共現比較大的特徵,主要例子包括互信息法、信息增益、期望交叉熵和統計量方法;

3)以特徵量分析多元統計分布,例如主成分分析(PCA)。

11

文本權重計算方法

特徵權重用于衡量某個特徵項在文檔表示中的重要程度或區分能力的強弱。選擇合適的權重計算方法,對文本分類系統的分類效果能有較大的提升作用。

特徵權重的計算方法包括:

1) TF-IDF;

2) 詞性;

3)標題;

4)位置;

5)句法結構;

6)專業詞庫;

7)信息熵;

8)文檔、詞語長度;

9)詞語間關聯;

10)詞語直徑;

11)詞語分布偏差。

其中提幾點,詞語直徑是指詞語在文本中首次出現的位置和末次出現的位置之間的距離。詞語分布偏差所考慮的是詞語在文章中的統計分布。在整篇文章中分布均勻的詞語通常是重要的辭彙。

12

分類器設計

由於文本分類本身是一個分類問題,所以一般的模式分類方法都可以用於文本分類應用中。

常用分類演算法的思路包括下面四種:

1)樸素貝葉斯分類器:利用特徵項和類別的聯合概率來估計文本的類別概率;

2)支持向量機分類器:在向量空間中找到一個決策平面,這個平面能夠最好的切割兩個分類的數據點,主要用於解決二分類問題;

3)KNN方法:在訓練集中找到離它最近的k個臨近文本,並根據這些文本的分類來給測試文檔分類;

4)決策樹方法:將文本處理過程看作是一個等級分層且分解完成的複雜任務。

13

分類演算法融合

聚合多個分類器,提高分類準確率稱為Ensemble方法。

利用不同分類器的優勢,取長補短,最後綜合多個分類器的結果。Ensemble可設定目標函數(組合多個分類器),通過訓練得到多個分類器的組合參數(並非簡單的累加或者多數)。

我們這裡提到的ensemble可能跟通常說的ensemble learning有區別。主要應該是指stacking。Stacking是指訓練一個模型用於組合其他各個模型。即首先我們先訓練多個不同的模型,然後再以之前訓練的各個模型的輸出為輸入來訓練一個模型,以得到一個最終的輸出。在處理ensemble方法的時候,需要注意幾個點。基礎模型之間的相關性要儘可能的小,並且它們的性能表現不能差距太大。

多個模型分類結果如果差別不大,那麼疊加效果也不明顯;或者如果單個模型的效果距離其他模型比較差,也是會對整體效果拖後腿。

14

CNN文本分類

採取CNN方法進行文本分類,相比傳統方法會在一些方面有優勢。

基於詞袋模型的文本分類方法,沒有考慮到詞的順序。

基於卷積神經網路(CNN)來做文本分類,可以利用到詞的順序包含的信息。如圖展示了比較基礎的一個用CNN進行文本分類的網路結構。CNN模型把原始文本作為輸入,不需要太多的人工特徵。CNN模型的一個實現,共分四層:

第一層是詞向量層,doc中的每個詞,都將其映射到詞向量空間,假設詞向量為k維,則n個詞映射後,相當於生成一張n*k維的圖像;

第二層是卷積層,多個濾波器作用於詞向量層,不同濾波器生成不同的feature map;

第三層是pooling層,取每個feature map的最大值,這樣操作可以處理變長文檔,因為第三層輸出只依賴於濾波器的個數;

第四層是一個全連接的softmax層,輸出是每個類目的概率,中間一般加個dropout,防止過擬合。

有關CNN的方法一般都圍繞這個基礎模型進行,再加上不同層的創新。

比如第一個模型在輸入層換成RNN,去獲得文本通過rnn處理之後的輸出作為卷積層的輸入。比如說第二個是在pooling層使用了動態kmax pooling,來解決樣本集合文本長度變化較大的問題。比如說第三種是極深網路,在卷積層做多層卷積,以獲得長距離的依賴信息。CNN能夠提取不同長度範圍的特徵,網路的層數越多,意味著能夠提取到不同範圍的特徵越豐富。不過cnn層數太多會有梯度彌散、梯度爆炸或者退化等一系列問題。

為了解決這些問題,極深網路就通過shortcut連接。殘差網路其實是由多種路徑組合的一個網路,殘差網路其實是很多並行子網路的組合,有些點評評書殘差網路就說它其實相當於一個Ensembling。

15

RNN與LSTM文本分類

CNN有個問題是卷積時候是固定 filter_size ,就是無法建模更長的序列信息,雖然這個可以通過多次卷積獲得不同範圍的特徵,不過要付出增加網路深度的代價。

Rnn的出現是解決變長序列信息建模的問題,它會將每一步中產生的信息都傳遞到下一步中。

首先我們在輸入層之上,套上一層雙向LSTM層,LSTM是RNN的改進模型,相比RNN,能夠更有效地處理句子中單詞間的長距離影響;而雙向LSTM就是在隱層同時有一個正向LSTM和反向LSTM,正向LSTM捕獲了上文的特徵信息,而反向LSTM捕獲了下文的特徵信息,這樣相對單向LSTM來說能夠捕獲更多的特徵信息,所以通常情況下雙向LSTM表現比單向LSTM或者單向RNN要好。

如何從物理意義上來理解求平均呢?這其實可以理解為在這一層,兩個句子中每個單詞都對最終分類結果進行投票,因為每個BLSTM的輸出可以理解為這個輸入單詞看到了所有上文和所有下文(包含兩個句子)後作出的兩者是否語義相同的判斷,而通過Mean Pooling層投出自己寶貴的一票。

16

Attention Model與seq2seq

注意力模型Attention Model是傳統自編碼器的一個升級版本。傳統RNN的Encoder-Decoder模型,它的缺點是不管無論之前的context有多長,包含多少信息量,最終都要被壓縮成固定的vector,而且各個維度維度收到每個輸入維度的影響都是一致的。為了解決這個問題,它的idea其實是賦予不同位置的context不同的權重,越大的權重表示對應位置的context更加重要。

現實中,舉一個翻譯問題:jack ma dances very well 翻譯成中文是馬雲跳舞很好。其中,馬雲應該是和jack ma關聯的。

Attention Model是當前的研究熱點,它廣泛地可應用於文本生成、機器翻譯和語言模型等方面。

17

Hierarchical Attention Network

下面介紹層次化注意力網路。

詞編碼層是首先把詞轉化成詞向量,然後用雙向的GRU層,可以將正向和反向的上下文信息結合起來,獲得隱藏層輸出。第二層是word attention層。attention機制的目的是要把一個句子中,對句子的含義最重要,貢獻最大的詞語找出來。

為了衡量單詞的重要性,我們用u_it和一個隨機初始化的上下文向量u_w的相似度來表示,然後經過softmax操作獲得了一個歸一化的attention權重矩陣a_it,代表句子i中第t個詞的權重。結合詞的權重,句子向量s_i看作組成這些句子的詞向量的加權求和。

第三層是句子編碼層,也是通過雙向GRU層,可以將正向和反向的上下文信息結合起來,獲得隱藏層輸出。

到了第四層是句子的注意力層,同詞的注意力層差不多,也是提出了一個句子級別的上下文向量u_s,來衡量句子在文中的重要性。輸出也是結合句子的權重,全文的向量表示看做是句子向量的加權求和。

到了最後,有了全文的向量表示,我們就直接通過全連接softmax來進行分類。

18

NLP應用案例-垃圾廣告過濾

垃圾廣告過濾作為文本分類的一個場景有其特殊之處,那就是它作為一種防攻擊手段,會經常面臨攻擊用戶採取許多變換手段來繞過檢查。

處理這些變換手段有多重方法:

一是對變形詞進行識別還原,包括要處理間雜特殊符號,同音、簡繁變換,和偏旁拆分、形近變換。

二是通過語言模型識別干擾文本,如果識別出文本是段不通順的「胡言亂語」,那麼他很可能是一段用於規避關鍵字審查的垃圾文本。

三是通過計算主題和評論的相關度匹配來鑒別。

四是基於多種表達特徵的分類器模型識別來提高分類的泛化能力。

19

NLP應用案例-情感分析

情感分析的處理辦法包括:

1)基於詞典的情感分析,主要是線設置情感詞典,然後基於規則匹配(情感詞對應的權重進行加權)來識別樣本是否是正負面。

2)基於機器學習的情感分析,主要是採取詞袋模型作為基礎特徵,並且將複雜的情感處理規則命中的結果作為一維或者多維特徵,以一種更為「柔性」的方法融合到情感分析中,擴充我們的詞袋模型。

3)使用dnn模型來進行文本分類,解決傳統詞袋模型難以處理長距離依賴的缺點。

20

NLP其他應用

NLP在達觀的其他一些應用包括:

1)新聞分類;

2)標籤抽取;

3)觀點挖掘;

4)應用於推薦系統;

5)應用於搜索引擎。

標籤抽取有多種方式:基於聚類的方法實現。此外,現在一些深度學習的演算法,通過有監督的手段實現標籤抽取功能。

就觀點挖掘而言,舉例:床很破,睡得不好。我抽取的觀點是「床破」,其中涉及到語法句法分析,將有關聯成本提取出來。

搜索及推薦,使用到NLP的地方也很多,如搜索引擎處理用戶查詢的糾錯,就用到信道雜訊模型實行糾錯處理。


點擊展開全文

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 達觀數據 的精彩文章:

愛卡汽車攜手達觀數據,推薦屬於你的個性化資訊

TAG:達觀數據 |