1. 程式人生 > >一文讀懂自然語言處理NLP

一文讀懂自然語言處理NLP

前言

自然語言處理是文字挖掘的研究領域之一,是人工智慧和語言學領域的分支學科。在此領域中探討如何處理及運用自然語言。

對於自然語言處理的發展歷程,可以從哲學中的經驗主義理性主義說起。基於統計的自然語言處理是哲學中的經驗主義,基於規則的自然語言處理是哲學中的理性主義。在哲學領域中經驗主義理性主義的鬥爭一直是此消彼長,這種矛盾與鬥爭也反映在具體科學上,如自然語言處理。

早期的自然語言處理具有鮮明的經驗主義色彩。如 1913 年馬爾科夫提出馬爾科夫隨機過程與馬爾科夫模型的基礎就是“手工查頻”,具體說就是統計了《歐根·奧涅金》長詩中母音與子音出現的頻度;1948 年夏農把離散馬爾科夫的概率模型應用於語言的自動機,同時採用手工方法統計英語字母的頻率。

然而這種經驗主義到了喬姆斯基時出現了轉變。

1956 年喬姆斯基借鑑夏農的工作,把有限狀態機用作刻畫語法的工具,建立了自然語言的有限狀態模型,具體來說就是用“代數”和“集合”將語言轉化為符號序列,建立了一大堆有關語法的數學模型。這些工作非常偉大,為自然語言和形式語言找到了一種統一的數學描述理論,一個叫做“形式語言理論”的新領域誕生了。這個時代,“經驗主義”被全盤否定,“理性主義”算是完勝。

然而在 20 世紀 50 年代末到 60 年代中期,經驗主義東山再起了。多數學者普遍認為只有詳盡的歷史語料才能帶來靠譜的結論。於是一些比較著名的理論與演算法就誕生了,如貝葉斯方法(Bayesian Method)、隱馬爾可夫、最大熵、Viterbi 演算法、支援向量機之類。世界上第一個聯機語料庫也是在那個時候的 Brown University 誕生的。

但是總的來說,這個時代依然是基於規則的理性主義的天下,經驗主義雖然取得了不俗的成就,卻依然沒有受到太大的重視。但是金子總會發光的。

90 年代以來,基於統計的自然語言處理就開始大放異彩了。首先是在機器翻譯領域取得了突破,因為引入了許多基於語料庫的方法(哈欽斯,英國著名學者)。1990 年在芬蘭赫爾辛基舉辦的第 13 屆國際計算語言學會議確定的主題是“處理大規模真實文字的理論、方法與工具”,大家的重心開始轉向大規模真實文字了,傳統的僅僅基於規則的自然語言處理顯然力不從心了。學者們認為,大規模語料至少是對基於規則方法有效的補充。

到了 1994~1999 年,經驗主義就開始空前繁榮了

。如句法剖析、詞類標註、參照消解、話語處理的演算法幾乎把“概率”與“資料”作為標準方法,成為了自然語言處理的主流。 

總之,理性主義在自然語言處理的發展史上是有重要地位的,也輝煌了幾十年,歷史事物常常是此消彼長的,至於誰好誰壞,不是固定的,取決於不同時代的不同歷史任務。總的來說,基於規則的理性主義在這個時代被提及得比較少,用的也比較少,主要是由於以下幾個缺陷:

• 魯棒性差,過於嚴格的規則導致對非本質錯誤的零容忍(這一點在最近的一些新的剖析技術上有所改善);

• 研究強度大,泛化能力差。一個研究要語言學家、語音學家和各種領域的專家配合,在當前大規模文字處理的時間、資源要求下太不划算。且機器學習的方法很難應用,難以普及;

• 實踐性差。基於統計的經驗主義方法可以根據資料集不斷對引數進行優化,而基於規則的方法就不可以,這在當前資料量巨大的情況下,影響是致命的,因為前者常常可以通過增大訓練集來獲得更好的效果,後者則死板許多,結果往往不盡人意。

但理性主義還是有很多優點的,同樣經驗主義也有很多缺陷,算是各有所長、各有所短。不同學科有不同學科的研究角度,只能說某些角度在某個特定的歷史時期對提高生產力“更有用”,所以重視的人更多。但“有用”不代表勝利,暫時的“無用”更不能說是科學層面上的“失敗”。尤其是在當前中文自然語言處理髮展還不甚成熟的時期,私以為基於統計的方法在很多方面並不完美,“理性主義”的作用空間還很大,需要更多的人去關注、助力。

——《統計自然語言處理》宗成慶

自然語言處理涉及的範疇如下(維基百科):

• 中文自動分詞(Chinese word segmentation)

• 詞性標註(Part-of-speech tagging)

• 句法分析(Parsing)

• 自然語言生成(Natural language generation)

• 文字分類(Text categorization)

• 資訊檢索(Information retrieval)

• 資訊抽取(Information extraction)

• 文字校對(Text-proofing)

• 問答系統(Question answering)

• 機器翻譯(Machine translation)

• 自動摘要(Automatic summarization)

本文針對其中幾個主要領域的研究現狀和進展,通過論文、部落格等資料,結合自身的學習和實踐經歷進行淺顯地介紹。由於個人實踐經驗不足,除中文分詞、自動文摘、文字分類、情感分析和話題模型方面進行過實際業務的實踐,其他方面經驗欠缺,若有不當之處,歡迎童鞋們批評指正!

目錄

一. 中文分詞

中文分詞主要包括詞的歧義切分和未登入詞識別,主要可以分為基於詞典和基於統計的方法,最新的方法是多種方法的混合。從目前漢語分詞研究的總體水平看,F1 值已經達到 95% 左右,主要分詞錯誤是由新詞造成的,尤其對領域的適應性較差。下面主要介紹一下中文分詞存在的主要問題和分詞方法。

1. 問題

1.1 歧義切分

切分歧義處理包括兩部分內容:

• 切分歧義的檢測;

• 切分歧義的消解。

這兩部分在邏輯關係上可分成兩個相對獨立的步驟。

• 切分歧義的檢測。“最大匹配法”(精確的說法應該叫“最長詞優先匹配法”) 是最早出現、同時也是最基本的漢語自動分詞方法。依掃描句子的方向,又分正向最大匹配 MM(從左向右)和逆向最大匹配 RMM(從右向左)兩種。

最大匹配法實際上將切分歧義檢測與消解這兩個過程合二為一,對輸入句子給出唯一的切分可能性,並以之為解。從最大匹配法出發匯出了“雙向最大匹配法”,即 MM+ RMM。雙向最大匹配法存在著切分歧義檢測盲區。

針對切分歧義檢測,另外兩個有價值的工作是“最少分詞法”,這種方法歧義檢測能力較雙向最大匹配法要強些,產生的可能切分個數僅略有增加;和“全切分法”,這種方法窮舉所有可能的切分,實現了無盲區的切分歧義檢測,但代價是導致大量的切分“垃圾”。

• 切分歧義的消解。典型的方法包括句法統計和基於記憶的模型。句法統計將自動分詞和基於 Markov 鏈的詞性自動標註技術結合起來,利用從人工標註語料庫中提取出的詞性二元統計規律來消解切分歧義,基於記憶的模型對偽歧義型高頻交集型歧義切分,可以把它們的正確(唯一)切分形式預先記錄在一張表中,其歧義消解通過直接查表即可實現。

1.2 未登入詞識別

未登入詞大致包含兩大類:

• 新湧現的通用詞或專業術語等;

• 專有名詞。如中國人名、外國譯名、地名、機構名(泛指機關、團體和其它企事業單位)等。

前一種未登入詞理論上是可預期的,能夠人工預先新增到詞表中(但這也只是理想狀態,在真實環境下並不易做到);後一種未登入詞則完全不可預期,無論詞表多麼龐大,也無法囊括。

真實文字中(即便是大眾通用領域),未登入詞對分詞精度的影響超過了歧義切分。未登入詞處理在實用型分詞系統中佔的份量舉足輕重。

• 新湧現的通用詞或專業術語。對這類未登入詞的處理,一般是在大規模語料庫的支援下,先由機器根據某種演算法自動生成一張候選詞表(無監督的機器學習策略),再人工篩選出其中的新詞並補充到詞表中。

鑑於經過精加工的千萬字、甚至億字級的漢語分詞語料庫目前還是水月鏡花,所以這個方向上現有的研究無一不以從極大規模生語料庫中提煉出的 n 元漢字串之分佈(n≥2)為基礎。其中漢字之間的結合力通過全域性統計量包括互資訊、t- 測試差、卡方統計量、字串頻等來表示。

• 專有名詞。對專有名詞的未登入詞的處理,首先依據從各類專有名詞庫中總結出的統計知識 (如姓氏用字及其頻度)和人工歸納出的專有名詞的某些結構規則,在輸入句子中猜測可能成為專有名詞的漢字串並給出其置信度,之後利用對該類專有名詞有標識意義的緊鄰上下文資訊(如稱謂),以及全域性統計量和區域性統計量(區域性統計量是相對全域性統計量而言的,是指從當前文章得到且其有效範圍一般僅限於該文章的統計量,通常為字串頻),進行進一步的鑑定。

已有的工作涉及了四種常見的專有名詞:中國人名的識別、外國譯名的識別、中國地名的識別及機構名的識別。

從各家報告的實驗結果來看,外國譯名的識別效果最好,中國人名次之,中國地名再次之,機構名最差。而任務本身的難度實質上也是遵循這個順序由小增大。 沈達陽、孫茂松等(1997b)特別強調了區域性統計量在未登入詞處理中的價值。

2. 方法

2.1 基於詞典的方法

在基於詞典的方法中,對於給定的詞,只有詞典中存在的詞語能夠被識別,其中最受歡迎的方法是最大匹配法(MM),這種方法的效果取決於詞典的覆蓋度,因此隨著新詞不斷出現,這種方法存在明顯的缺點。

2.2 基於統計的方法

基於統計的方法由於使用了概率或評分機制而非詞典對文字進行分詞而被廣泛應用。這種方法主要有三個缺點:

一是這種方法只能識別 OOV(out-of-vocabulary)詞而不能識別詞的型別,比如只能識別為一串字串而不能識別出是人名;二是統計方法很難將語言知識融入分詞系統,因此對於不符合語言規範的結果需要額外的人工解析;三是在許多現在分詞系統中,OOV 詞識別通常獨立於分詞過程。

二. 詞性標註

詞性標註是指為給定句子中的每個詞賦予正確的詞法標記,給定一個切好詞的句子,詞性標註的目的是為每一個詞賦予一個類別,這個類別稱為詞性標記(part-of-speech tag),比如,名詞(noun)、動詞(verb)、形容詞(adjective)等。

它是自然語言處理中重要的和基礎的研究課題之一,也是其他許多智慧資訊處理技術的基礎,已被廣泛的應用於機器翻譯、文字識別、語音識別和資訊檢索等領域。

詞性標註對於後續的自然語言處理工作是一個非常有用的預處理過程,它的準確程度將直接影響到後續的一系列分析處理任務的效果。 

長期以來,兼類詞的詞性歧義消解和未知詞的詞性識別一直是詞性標註領域需要解決的熱點問題。當兼類詞的詞性歧義消解變得困難時,詞性的標註就出現了不確定性的問題。而對那些超出了詞典收錄範圍的詞語或者新湧現的詞語的詞性推測,也是一個完整的標註系統所應具備的能力。

1. 詞性標註方法

詞性標註是一個非常典型的序列標註問題。最初採用的方法是隱馬爾科夫生成式模型, 然後是判別式的最大熵模型、支援向量機模型,目前學術界通常採用結構感知器模型和條件隨機場模型。

近年來,隨著深度學習技術的發展,研究者們也提出了很多有效的基於深層神經網路的詞性標註方法。

迄今為止,詞性標註主要分為基於規則的和基於統計的方法。

• 規則方法能準確地描述詞性搭配之間的確定現象,但是規則的語言覆蓋面有限,龐大的規則庫的編寫和維護工作則顯得過於繁重,並且規則之間的優先順序和衝突問題也不容易得到滿意的解決。

• 統計方法從巨集觀上考慮了詞性之間的依存關係,可以覆蓋大部分的語言現象,整體上具有較高的正確率和穩定性,不過其對詞性搭配確定現象的描述精度卻不如規則方法。

針對這樣的情況,如何更好地結合利用統計方法和規則處理手段,使詞性標註任務既能夠有效地利用語言學家總結的語言規則,又可以充分地發揮統計處理的優勢成為了詞性標註研究的焦點。

2. 詞性標註研究進展

• 詞性標註和句法分析聯合建模:研究者們發現,由於詞性標註和句法分析緊密相關,詞性標註和句法分析聯合建模可以同時顯著提高兩個任務準確率。

• 異構資料融合:漢語資料目前存在多個人工標註資料,然而不同資料遵守不同的標註規範,因此稱為多源異構資料。近年來,學者們就如何利用多源異構資料提高模型準確率,提出了很多有效的方法,如基於指導特徵的方法、基於雙序列標註的方法、以及基於神經網路共享表示的方法。

• 基於深度學習的方法:傳統詞性標註方法的特徵抽取過程主要是將固定上下文視窗的詞進行人工組合,而深度學習方法能夠自動利用非線性啟用函式完成這一目標。進一步,如果結合迴圈神經網路如雙向 LSTM,則抽取到的資訊不再受到固定視窗的約束,而是考慮整個句子。

除此之外,深度學習的另一個優勢是初始詞向量輸入本身已經刻畫了詞語之間的相似度資訊,這對詞性標註非常重要。

三. 句法分析

語言語法的研究有非常悠久的歷史,可以追溯到公元前語言學家的研究。不同型別的句法分析體現在句法結構的表示形式不同,實現過程的複雜程度也有所不同。因此,科研人員採用不同的方法構建符合各個語法特點的句法分析系統。其主要分類如下圖所示:

下文主要對句法分析技術方法和研究現狀進行總結分析:

1. 依存句法分析

依存語法存在一個共同的基本假設:句法結構本質上包含詞和詞之間的依存(修飾)關係。一個依存關係連線兩個詞,分別是核心詞(head)和依存詞(dependent)。依存關係可以細分為不同的型別,表示兩個詞之間的具體句法關係。

目前研究主要集中在資料驅動的依存句法分析方法,即在訓練例項集合上學習得到依存句法分析器,而不涉及依存語法理論的研究。資料驅動的方法的主要優勢在於給定較大規模的訓練資料,不需要過多的人工干預,就可以得到比較好的模型。因此,這類方法很容易應用到新領域和新語言環境。

資料驅動的依存句法分析方法主要有兩種主流方法:基於圖( graph-based)的分析方法基於轉移( transition-based)的分析方法。

2.1 基於圖的依存句法分析方法

基於圖的方法將依存句法分析問題看成從完全有向圖中尋找最大生成樹的問題。一棵依存樹的分值由構成依存樹的幾種子樹的分值累加得到。

根據依存樹分值中包含的子樹的複雜度,基於圖的依存分析模型可以簡單區分為一階和高階模型。高階模型可以使用更加複雜的子樹特徵,因此分析準確率更高,但是解碼演算法的效率也會下降。

基於圖的方法通常採用基於動態規劃的解碼演算法,也有一些學者採用柱搜尋(beam search)來提高效率。學習特徵權重時,通常採用線上訓練演算法,如平均感知器(averaged perceptron)。

2.2 基於轉移的依存句法分析方法

基於轉移的方法將依存樹的構成過程建模為一個動作序列,將依存分析問題轉化為尋找最優動作序列的問題。早期,研究者們使用區域性分類器(如支援向量機等)決定下一個動作。近年來,研究者們採用全域性線性模型來決定下一個動作,一個依存樹的分值由其對應的動作序列中每一個動作的分值累加得到。

特徵表示方面,基於轉移的方法可以充分利用已形成的子樹資訊,從而形成豐富的特徵,以指導模型決策下一個動作。模型通過貪心搜尋或者柱搜尋等解碼演算法找到近似最優的依存樹。和基於圖的方法類似,基於轉移的方法通常也採用線上訓練演算法學習特徵權重。

2.3 多模型融合的依存句法分析方法

相關推薦

自然語言處理NLP

前言 自然語言處理是文字挖掘的研究領域之一,是人工智慧和語言學領域的分支學科。在此領域中探討如何處理及運用自然語言。 對於自然語言處理的發展歷程,可以從哲學中的經驗主義和理性主義說起。基於統計的自然語言處理是哲學中的經驗主義,基於規

了解自然語言處理神經史

摘要:越來越火的NLP到底經歷了什麼?本文擴充套件了HermanKamper和我在2018年深度學習Indaba組織的自然語言處理前沿課程。整個課程的幻燈片都可以在這裡找到,這篇文章將主要討論NLP中基於神經網路方法的近期進展。 免責

JAVA 異常處理

jdk 如何 堆棧溢出 細節 fileread 空指針 note handle 優雅 JAVA 異常類型結構Error 和 Exeption受查異常和非受查異常異常的拋出與捕獲直接拋出異常封裝異常並拋出捕獲異常自定義異常try-catch-finallytry-with-r

[轉]機器學習科普文章:“機器學習,大資料/自然語言處理/演算法全有了”

       在本篇文章中,我將對機器學習做個概要的介紹。本文的目的是能讓即便完全不瞭解機器學習的人也能瞭解機器學習,並且上手相關的實 踐。這篇文件也算是EasyPR開發的番外篇,從這裡開始,必須對機器學習瞭解才能進一步介紹EasyPR的核心。當然,本文也面對一般讀者,不會對

機器學習,大資料/自然語言處理/演算法全有了……

作者注:本文生動形象,深入淺出的方式介紹了機器學習及其它演算法,適合新人和想更加了解機器學習的讀者閱讀,此文屬於轉載,下面連結是原文出處,我們尊重原作者的版權保護。https://www.cnblogs.com/donaldlee2008/p/5224325.html  在本

自然語言處理NLP

rac 控制臺 分析 arm ont 正則表達 stop python none NLP 自然語言:指一種隨著社會發展而自然演化的語言,即人們日常交流所使用的語言; 自然語言處理:通過技術手段,使用計算機對自然語言進行各種操作的一個學科; NLP研究的內容

斯坦福CS224N_自然語言處理NLP深度學習DL課程筆記(

Lecture 1: Introduction pdf 本節課是對自然語言處理的定義介紹和應用介紹,還順帶說了NLP的難點; 本節課使用深度學習作為NLP的主要處理工具。 傳統的機器學習技術,需要人為地去做特徵工程,將這些的特徵餵給機器學期演算法;然後機器學習演

自然語言處理(NLP) : 分詞、分句、詞幹提取

需要安裝nltk自然語言處理包,anaconda預設已經安裝了 還需要安裝nltk語料庫:http://www.nltk.org/data.html 自然語言基礎知識: 1、分詞 魚香肉絲裡面多放點辣椒 對稱加密需要DES處理引擎 天兒冷了多穿點

Android TouchEvent 事件分發、攔截、處理過程

什麼是事件?事件是使用者觸控手機螢幕,引起的一系列TouchEvent,包括ACTION_DOWN、ACTION_MOVE、ACTION_UP、ACTION_CANCEL等,這些action組合後變成點選事件、長按事件等。 在這篇文章中,用打Log測試的方法來了解Android TouchEvent 事件分發

大數據計算框架與平臺

ddr 不同 失敗 克服 可定制 同時 數據庫引擎 後處理 alc  1.前言   計算機的基本工作就是處理數據,包括磁盤文件中的數據,通過網絡傳輸的數據流或數據包,數據庫中的結構化數據等。隨著互聯網、物聯網等技術得到越來越廣泛的應用,數據規模不斷增加,TB、PB量級成為常

超簡單的 structured stream 源碼解讀

ket exec res exce bus sin imp += work 為了讓大家理解structured stream的運行流程,我將根據一個代碼例子,講述structured stream的基本運行流程和原理。 下面是一段簡單的代碼: 1 val spark =

Spring Boot、微服務架構和大數據治理之間的故事

Springboot微服務架構 微服務的誕生並非偶然,它是在互聯網高速發展,技術日新月異的變化以及傳統架構無法適應快速變化等多重因素的推動下誕生的產物。互聯網時代的產品通常有兩類特點:需求變化快和用戶群體龐大,在這種情況下,如何從系統架構的角度出發,構建靈活、易擴展的系統,快速應對需求的變化;同時,隨著用戶的

阻塞、非阻塞、同步、異步IO

UC max register class 掃描 基本 角度 cloud 問題: 介紹 在談及網絡IO的時候總避不開阻塞、非阻塞、同步、異步、IO多路復用、select、poll、epoll等這幾個詞語。在面試的時候也會被經常問到這幾個的區別。本文就來講一下這幾個詞

架構師都不知道的isinstance檢查機制

Python起步通過內建方法 isinstance(object, classinfo) 可以判斷一個對象是否是某個類的實例。但你是否想過關於鴨子協議的對象是如何進行判斷的呢? 比如 list 類的父類是繼 object 類的,但通過 isinstance([], typing.Iterable) 返回的卻是

【深度學習】機器學習常用損失函數(Loss Function)

back and 們的 wiki 導出 歐氏距離 classes 自變量 關於 最近太忙已經好久沒有寫博客了,今天整理分享一篇關於損失函數的文章吧,以前對損失函數的理解不夠深入,沒有真正理解每個損失函數的特點以及應用範圍,如果文中有任何錯誤,請各位朋友指教,謝謝~

從HTTP/0.9到HTTP/2:HTTP協議的歷史演變和設計思路

eight 結果 key 視頻 this sso單點登陸 會有 研究 patch 本文原作者阮一峰,作者博客:ruanyifeng.com。 1、引言 HTTP 協議是最重要的互聯網基礎協議之一,它從最初的僅為瀏覽網頁的目的進化到現在,已經是短連接通信的事實工業標準,最新版

以太坊代幣合約

規則 sta ini class 2015年 交易 存在 部分 生活 本文首發自 https://www.secpulse.com/archives/73696.html ,轉載請註明出處。 工欲善其事,必先利其器。要想挖掘和分析智能合約的漏洞,你必須要先學會看

什麽是音視頻直播雲服務 ?

type 限制 推流 數據 優缺點 視頻通訊系統 最終 通訊 地理 說到音視頻雲服務,大多數人可能聯想到的是網絡直播應用場景,實際上,硬件對音視頻雲服務的需求也在逐漸提升。而這樣的市場需求也推動了整個行業的發展,目前,阿裏雲、騰訊雲和網易雲等巨頭都已入局,除此之外還有即構科

機器學習大殺器XGBoost原理

結構 近似算法 機器 form con gin fff .cn tran http://blog.itpub.net/31542119/viewspace-2199549/ XGBoost是boosting算法的其中一種。Boosting算法的思想是將許多弱分類器集成在

什麽是Java中的自動拆裝箱

.com 空指針異常 http har 三目運算 容器 ava eof 關系 基本數據類型 基本類型,或者叫做內置類型,是Java中不同於類(Class)的特殊類型。它們是我們編程中使用最頻繁的類型。 Java是一種強類型語言,第一次申明變量必須說明數據類型,第一次變量