1. 程式人生 > >深度學習與中文短文本分析總結與梳理

深度學習與中文短文本分析總結與梳理

load 可擴展 繁體 登錄 規模 大學 中英文 科技 -c

感謝原著,原文出處:https://www.cnblogs.com/wangyaning/p/7853879.html

1.緒論

過去幾年,深度神經網絡在模式識別中占絕對主流。它們在許多計算機視覺任務中完爆之前的頂尖算法。在語音識別上也有這個趨勢了。而中文文本處理,以及中文自然語言處理上,似乎沒有太厲害的成果?尤其是中文短文本處理的問題上,尚且沒有太成功的應用於分布式條件下的深度處理模型?(大公司或許有,但沒有開源)本文暫且梳理一下,嘗試圍繞深度學習和 短文本處理的方方面面就最簡單的概念進行一次梳理,並且試圖思考一個問題:

深度學習處理中文短文本的最終效果是什麽?

我思考後的答案是:

答:是一種模型,可以無需任何語言學知識或手工特征設計,就可被用於中文分詞、詞性標註以及命名實體識別等多種中文自然語言處理任務,甚至直接改造為分布式大數據可以使用的框架。


2.短文本

姑且認為200字以內的都叫短文本

2.1 短文本的研究範圍

- 搜索引擎的搜索結果
- 錨文本
- 互聯網聊天信息
- 電子郵件主題
- 論壇評論信息
- 商品描述信息
- 圖片描述
- 微博
- 手機短息
- 文檔文獻摘要

2.2 短文本特點

短文本具有特征稀疏性、奇異性、動態性、交錯性等特點

①稀疏性。每條短文本形式信息的長度都比較短,都在 200 字以內,因此所包含的有效信息也就非常少,造成樣本的特征非常稀疏,並且特征集的維數非常高,很難從中抽取到準確而關鍵的樣本特征用於分類學習。

②實時性。在互聯網上出現的短文本形式的信息,大部分都是實時更新的,刷新速度非常快,聊天信息、微博信息、評論信息等,並且文本數量非常龐大。

③不規則性。短文本形式的信息用語不規範,包含流行詞匯較多,造成了噪聲特征非常多,如“94”代表“就是”,“88”代表“再見”,“童鞋”代表“同學”,而且更新很快,如流行詞“傷不起”、“有沒有”、“坑爹” “屌絲”、等等。


3.中文分詞

中文分詞就是將連續的字序列按照一定的規範重新組合成詞序列的過程。眾所周知,英文單詞是用空格來進行分隔的,在中文的字與字之間、句子與句子之間、段落與段落之間也都能找到分界符。另外,在中英文中都存在短語劃分這個問題,但是詞與詞之間卻找不到形式上的分界符。詞是最小的能夠獨立活動的有意義的語言成分,因而,中文在詞的劃分這個問題上是個非常巧雜而關鍵的問題。

現有的分詞算法可分為3大類:

3.1 基於字符串匹配和規則的分詞方法

基於字符串匹配的分詞方法又稱為機械分詞方法,它是按照一定的策略將待分析的漢字與一個"足夠大的"詞典中詞條進行匹配,若在詞典中找到某個字符串,則匹配成功。按照掃描方向的不同,串匹配分詞方法可分為正向匹配和逆向匹配;按照不同長度優先匹配的倩況,可分為最大(最長)匹配和最小(最短)匹配;按照是否與詞性標註過程相姐合,又可分為單純分詞方法和分詞與標註相結合的一體化方法。

常用的基於字符串匹配的分詞方法有:

A )正向最大匹配法,按照文字的閱讀順序進行匹配;
B )逆向最大匹配法,按照文字的閱讀順序反向進行匹配;
C )最小切分法,使每一句中切出的詞數量最少。由於漢語單字成詞的特點,正向最小匹配和逆向最小匹配一般很少使用。


技術分享圖片
正向最大匹配法

逆向匹配的切分精度略髙於正向匹配,遇到的歧義現象也較少。統計結果顯示,單純使用正向最大匹配的錯誤率為1/169,單純使用逆向最大匹配的錯誤率為1/245。但這種精度還遠遠不能滿足實際的需要。

實際使用的分詞系統,都是把機械分詞作為一種初分手段,還需要通過利用各種其它的語言信息來進一步提高切分的準確率。上述方法雖然實現簡單、速度快,但處理分詞歧義能力較差,嚴重依賴於詞表,不能識別新詞語,即未登錄詞。為了解決分詞歧義與未登錄詞的問題,90年代初期出現了基於規則的分詞系統,包括專家系統、短語結構文法等。基於規則的"演澤推理"方法,能較好的解決有規律的分詞歧義和未登錄詞,具有一定的領域適應性、效率很髙。但中文語言現象非常復雜,存在很多無規律的分詞歧義和未登錄詞。因此 一般采用其他算法如:動態規劃等相結合提高準確率。

3.2 基於統計的分詞方法

基於統計的分詞方法只需對語料中的字信息進行統計,不需要切分詞典,因而又稱為無詞典分詞法或統計取詞法。從形式上看,詞是穩定的字的組合,在上下文中,相鄰的字同時出現的次數越多,就越有可能構成一個詞。因此字與字相鄰共現的頻率或概率能夠較好的反映成詞的可信度。因而可對語料中相鄰共現的各個字的組合的頻度進行統計,計算它們的相關度,計算兩個漢字A、B的相鄰共現的概率。可對語料中相鄰共現的各個字的組合的頻率進行統計。

這種方法首先切分與詞典能匹酷成功的所有可能的詞,即找出所有候選詞條,然後運用統計語言模型和決策算法得出最優的切分結果。

由於純粹從統計的角度出發,因此在統計意義上某些經常出現在一起的字並不能構成完整的詞語,例如"上的"、"有的"、"這一"等在文本中會大量的互鄰同現,但它們卻分屬於不同的詞;並且統計語言模型和決策算法在很大程度上決定了解決歧義的方法,需要大量的標註語料,並且分詞速度也因搜索空間的増大而有所減慢。基於統計的分詞方法所應用的主要的統計量或統計模型有:互信息、隱馬爾可夫模型和最大熵模型等。這些統計模型主要是利用詞與詞之間的聯合出現概率作為分詞判斷的信息。

3.3 基於理解的分詞方法

這種分詞方法是通過讓計算機模擬人對句子的理解,達到識別詞的效果。其基本思想就是在分詞的同時進行句法、語義分析,利用句法信息和語義信息來處理歧義現象。它通常包括幾個部分:分詞子系統、句法語義子系統、總控部分。

在總控部分的協調下,分詞子系統可獲得有關詞、句子等的句法和語義信息來對分詞歧義進行判斷,即它模擬了人對句子的理解過程。這種分詞方法需要使用大量的語言知識和信息。由於漢語語言知識的籠統、復雜性,難W將各種語言信息組織成機器可直接讀取的形式,因此目前基於機器學習理解的分詞系統還處在實驗階段。

  1. 基於隱馬爾可夫模型的字標註中文分詞方法。

  2. 基於層疊隱馬爾可夫模型的漢語詞法分析方法,該方法引入角色隱馬爾可夫模型識別未登錄詞。然而,傳統機器學習方法往往依賴於人工設計的特征,而一個特征是否有效需要多嘗試與選擇,因此人工設計一系列好的特征既費時又費力。

  3. 神經網絡方法。

  4. 深度學習的方法,對中文語料進行中文分詞和詞性標註。這些方法僅接近與目前最好結果,並沒有超越。


4. 基於深度學習的短文本分析 參考2

深度學習(Deep Learning)是一種表示學習方法,它通過對數據進行多層級的建模來獲得關於數據特征的層次結構以及數據的分布式表示。由於深度學習可以避免繁瑣的人工特征抽取,有效地利用無監督數據,並且具有優秀的泛化能力,因此成為了最近幾年機器學習領域的一個熱點。

深度學習的發展與應用使得圖像處理、語音識別等多個具體的應用領域都取得了突破式的進展。深度學習非常適用於解決自然語言處理領域的一系列難題。

首先,由於語言本身的高維特性,傳統的自然語言處理系統往往需要復雜的語言學知識以便手工構造出可供分類器使用的特征。而利用深度學習,則可以通過構造模型來自動學習用於解決自然語言處理領域的問題所需的特征。

其次,在自然語言處理領域,無標簽數據可以被輕易地大量獲得,然而有標簽數據則相對稀少且昂貴,深度學習則剛好可以利用大量無標簽數據來獲取特征。再次,自然語言處理領域的許多問題往往相互之間具有非常強的關聯性,例如對分詞、詞性標註和命名實體識別,傳統的方法往往將這幾個問題分開解決,忽略了它們之間的關系。使用深度學習則可以在特征抽取層面構造統一的模型以同時處理這些問題,並通過多任務學習的方法在模型中對其關聯性進行建模,從而獲得更好的性能。

因此,深度學習的核心思想是通過具有一定“深度”的模型從數據中逐層抽象出特征(即分布式表示),並且在深度學習模型中越高的層級抽取出的特征具有越強的表達能力。據內部的特征信息,對於語言來說,這正是一個可以采納的方式:從大量的文本中學習得到語義,並對語義進行特征表示,從而利用這些特征進行具體的計巧任務。

深度學習模型參考3


技術分享圖片

4.1 自動編碼器

自動編碼器(Auto—Encoder)是一種數據驅動的、非監督地學習數據特征的神經網絡模型。其結構如所示。可W把它看成是一個輸出節點數與輸入節點數相等的多層神經網絡。


技術分享圖片

4.2受限玻爾茲曼機

玻爾茲曼機(Boltzmann Machine)是一種引入了模擬退火思想的無向圖模型,其根據無向圖節點的狀態和節點之間的互聯權重定義整個系統的能量狀態,並指定輸入節點和輸出節點為可見節點,在輸入節點的二值化特征信息不變的情況下對其它節點進行退火,尋找最低的能量狀態,即通過模擬退火的思想學習節點的互聯權重作為模式的表示。

受限玻爾茲曼機(Restricted Boltzmann Machine,RBM)是一種特殊的玻爾茲曼機,是深度置信網(Deep Belief Networks,DBN)的核心組件之一。它規定無向圖節點分為可見層和隱含層兩層,每層內部的節點之間不可互聯,而處於不同層之間的節點為全連接

技術分享圖片

4.3 卷積神經網絡

卷積神經網絡主要包括兩種神經層:卷積層(Convolution)和池化層(又稱下采樣層,Pooling)。這兩層往往搭配出現。如圖2-6所示一個典型的卷積神經網絡模型一般包括數個卷積層與池化層的組合,在此之後的幾層是神經網絡的全連接層

卷積層是卷積神經網絡的主要運算部分。卷積層的輸入是一幅或多幅二維圖像,這些圖像被稱為特征圖像(FeatureMap)。每個輸出特征圖像對應一個卷積核,該卷積核對一幅或多幅輸入圖像進行卷積,卷積的結果取平均得到一幅輸出特征圖像

目前,深度學習在自然語言處理上取得的進展沒有在語音圖像上那麽令人印象深刻。但相比於聲音和圖像,語言是唯一的非自然信號,是完全由人類大腦產生和處理的符號系統。因此,深度學習在自然語言處理領域中的應用研究仍存在諸多的挑戰。


5.為什麽深度學習如此有效?參考1

深度學習中的表征視角是非常有力的,比如單詞嵌入深度學習可以將非常復雜的關系進行近似編碼:


技術分享圖片

原文中這樣說:

這看來是神經網絡的一個非常強大的優點:它們能自動學習更好的數據表征的方法。反過來講,能有效地表示數據對許多機器學習問題的成功都是必不可少的。單詞嵌入僅僅是學習數據表示中一個引人註目的例子而已。

5.1主流深度學習模型對比

概述對比


技術分享圖片

一個開源的深度學習測試框架參考9:對可擴展性(extensibility)、hardware utilization(硬件利用率)以及大家最關心的:速度(speed)上進行了比較

比較結果:


技術分享圖片

tensorflow比較中規中矩,我不認為其他幾個庫在後期能比他強多少,畢竟google出品,哈哈。現在不少企業都已經開始用tensorflow進行一些工程實踐,大勢所趨,同誌們站好隊啊。(歡迎同誌們拍磚)


6.文本分類效果評價

很多時候,文本分析領域需要很多的評價準則,但是我看了不少論文,來回來去也就是基於分類的評價去做,這塊還需要大牛給指點一二。

怎麽能夠客觀的表示我們算法的準確行,分詞,詞性標註,等等

國際上廣泛采用微平均和宏平均相結合的評價準則,並采用準確率P(Precision)和召回率R(Recall)以及F1值來衡量分類系統性能。

對第i個類別,其準確率召回率分別定義如下:li表示分類的結果中被標記為第i類別且標記為正確的文本個數,mi表示結果中表示被標記為第i個類的文本個數,ni表示被分類的文本中實際屬於第i個類別的樣本個數。


技術分享圖片

微平均和宏平均

微平均和宏平均是計算全局的查準率,查全率和F1測試值的兩種方法。其中,微平均用mP、mR、mF1來表示:宏平均用MP、MR、MF1來表示,公式如下:


技術分享圖片

7.短文本相關工具應用

7.1 Word2vector

word2vector由Google開發的一個用於訓練語義向量的工具,其核心的技術是根據詞頻用Huffman編碼使得所有詞頻相似的詞隱藏層激活的巧內容基本一致,出現頻率越高的詞語,其隱藏層數目越少,然後采用一個三層神經網絡對語義單元向量進行表示。具體可參考此說明文檔參考10


技術分享圖片

快速入門:


技術分享圖片

7.2 標簽雲

回頭打算,把自己的csdn博客爬一遍,寫個python生成的標簽雲


技術分享圖片

7.3 傾向性分析

商品論壇評論(開門見山和卒章顯誌是漢語語篇的重要特點)

技術分享圖片

7.4 成熟案例—-微博輿情分析


技術分享圖片

技術分享圖片


8.主流分詞工具對比分析

8.1 總體介紹

主流分詞概況:


技術分享圖片

分詞準確度:


技術分享圖片

在所測試的四個數據集上,BosonNLP和哈工大語言雲都取得了較高的分詞準確率,尤其在新聞數據上。因為庖丁解牛是將所有可能成詞的詞語全部掃描出來(例如:“最不滿意”分為:“最不 不滿 滿意”),與其他系統輸出規範不同,因而不參與準確率統計。為了更直接的比較不同數據源的差別,我們從每個數據源的測試數據中抽取比較典型的示例進行更直觀的對比。

大數據評測結果:jieba(c++)版獨領風騷啊


技術分享圖片

8.2 結巴和清華THULAC 介紹

1.THULAC 清華新推薦的分詞工具 參考8

THULAC(THU Lexical Analyzer for Chinese)由清華大學自然語言處理與社會人文計算實驗室研制推出的一套中文詞法分析工具包,具有中文分詞和詞性標註功能。THULAC具有如下幾個特點:

能力強
利用我們集成的目前世界上規模最大的人工分詞和詞性標註中文語料庫(約含5800萬字)訓練而成,模型標註能力強大。
準確率高
該工具包在標準數據集Chinese Treebank(CTB5)上分詞的F1值可達97.3%,詞性標註的F1值可達到92.9%,與該數據集上最好方法效果相當。
速度較快
分詞速度同時進行分詞和詞性標註速度為300KB/s,每秒可處理約15萬字。只進行分詞速度可達到1.3MB/s。

2.Jieba 參考7

Jieba分詞是中文分詞領域使用非常廣泛的自由軟件,其采用MIT授權協議,支持繁體分詞並且支持自定義詞典。
Jieba分詞支持三種分詞模式:

1. 精確模式,試圖將句子最精確地切開,適合文本分析;

2. 全模式,把句子中所有的可以成詞的詞語都掃描出來, 速度非常快,但是不能解決歧義;

3. 搜索引擎模式,在精確模式的基礎上,對長詞再次切分,提高召回率,適合用於搜索引擎分詞。

基本實現算法

基於前綴詞典實現高效的詞圖掃描,生成句子中漢字所有可能成詞情況所構成的有向無環圖 (DAG)
采用了動態規劃查找最大概率路徑, 找出基於詞頻的最大切分組合
對於未登錄詞,采用了基於漢字成詞能力的 HMM 模型,使用了 Viterbi 算法

分詞速度

1.5 MB / Second in Full Mode
400 KB / Second in Default Mode
測試環境: Intel(R) Core(TM) i7-2600 CPU @ 3.4GHz;《圍城》.txt

參考文獻

[參考1]: http://blog.jobbole.com/77709/
[參考2]: 李巖. 基於深度學習的短文本分析與計算方法研究[D]. 北京科技大學, 2016.
[參考3]: 吳軻. 基於深度學習的中文自然語言處理[D]. 東南大學, 2014.
[參考4]: http://www.52nlp.cn/
[參考5]: http://www.cnblogs.com/softidea/p/5981809.html
[參考6]: http://www.ltp-cloud.com/
[參考7]: https://github.com/fxsjy/jieba/
[參考8]:http://thulac.thunlp.org/
https://github.com/HIT-SCIR/ltp/

資源下載

短文本論文資源打包
http://download.csdn.net/detail/wangyaninglm/9793894

深度學習與中文短文本分析總結與梳理