Author Archive

命名實體識別 – Named-entity recognition | NER

想要了解更多 NLP 相關的內容,請訪問  NLP專題 ,免費提供59頁的NLP文檔下載。

訪問 NLP 專題,下載 59 頁免費 PDF

什麼是命名實體識別?

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

百度百科詳情 | 維基百科詳情

 

命名實體識別的發展歷史

NER一直是NLP領域中的研究熱點,從早期基於詞典和規則的方法,到傳統機器學習的方法,到近年來基於深度學習的方法,NER研究進展的大概趨勢大致如下圖所示。

命名實體識別 NER 的發展史

階段 1:早期的方法,如:基於規則的方法、基於字典的方法

階段 2:傳統機器學習,如:HMM、MEMM、CRF

階段 3:深度學習的方法,如:RNN – CRF、CNN – CRF

階段 4:近期新出現的一些方法,如:注意力模型、遷移學習、半監督學習的方法

 

4類常見的實現方式

早期的命名實體識別方法基本都是基於規則的。之後由於基於大規模的語料庫的統計方法在自然語言處理各個方面取得不錯的效果之後,一大批機器學習的方法也出現在命名實體類識別任務。宗成慶老師在統計自然語言處理一書粗略的將這些基於機器學習的命名實體識別方法劃分為以下幾類:

有監督的學習方法這一類方法需要利用大規模的已標註語料對模型進行參數訓練。目前常用的模型或方法包括隱馬爾可夫模型、語言模型、最大熵模型、支持向量機、決策樹和條件隨機場等。值得一提的是,基於條件隨機場的方法是命名實體識別中最成功的方法。

半監督的學習方法這一類方法利用標註的小數據集(種子數據)自舉學習。

無監督的學習方法這一類方法利用詞彙資源(如WordNet)等進行上下文聚類。

混合方法:幾種模型相結合或利用統計方法和人工總結的知識庫。

值得一提的是,由於深度學習在自然語言的廣泛應用,基於深度學習的命名實體識別方法也展現出不錯的效果,此類方法基本還是把命名實體識別當做序列標註任務來做,比較經典的方法是LSTM+CRF、BiLSTM+CRF。

 

NER 的相關數據集

數據集 簡要說明 訪問地址
電子病例測評 CCKS2017開放的中文的電子病例測評相關的數據 測評1 | 測評2
音樂領域 CCKS2018開放的音樂領域的實體識別任務 CCKS
位置、組織、人… 這是來自GMB語料庫的摘錄,用於訓練分類器以預測命名實體,例如姓名,位置等。 kaggle
口語 NLPCC2018開放的任務型對話系統中的口語理解評測 NLPCC
人名、地名、機構、專有名詞 一家公司提供的數據集,包含人名、地名、機構名、專有名詞 boson

 

相關工具推薦

工具 簡介 訪問地址
Stanford NER 斯坦福大學開發的基於條件隨機場的命名實體識別系統,該系統參數是基於CoNLL、MUC-6、MUC-7和ACE命名實體語料訓練出來的。 官網 | GitHub 地址
MALLET 麻省大學開發的一個統計自然語言處理的開源包,其序列標註工具的應用中能夠實現命名實體識別。 官網
Hanlp HanLP是一系列模型與算法組成的NLP工具包,由大快搜索主導並完全開源,目標是普及自然語言處理在生產環境中的應用。支持命名實體識別。 官網 | GitHub 地址
NLTK NLTK是一個高效的Python構建的平台,用來處理人類自然語言數據。 官網 | GitHub 地址
SpaCy 工業級的自然語言處理工具,遺憾的是不支持中文。 官網 | GitHub 地址
Crfsuite 可以載入自己的數據集去訓練CRF實體識別模型。 文檔 | GitHub 地址

本文轉載自公眾號 AI 小白入門,原文地址

 

自然語言處理-Natural language processing | NLP

一文看懂自然語言處理-NLP

網絡上有海量的文本信息,想要處理這些非結構化的數據就需要利用 NLP 技術。

本文將介紹 NLP 的基本概念,2大任務,4個典型應用和6個實踐步驟。

想要了解更多 NLP 相關的內容,請訪問  NLP專題 ,免費提供59頁的NLP文檔下載。

訪問 NLP 專題,下載 59 頁免費 PDF

 

NLP 為什麼重要?

「語言理解是人工智能領域皇冠上的明珠」

比爾·蓋茨

在人工智能出現之前,機器智能處理結構化的數據(例如 Excel 里的數據)。但是網絡中大部分的數據都是非結構化的,例如:文章、圖片、音頻、視頻…

結構化數據和非結構化數據

在非結構數據中,文本的數量是最多的,他雖然沒有圖片和視頻佔用的空間大,但是他的信息量是最大的。

為了能夠分析和利用這些文本信息,我們就需要利用 NLP 技術,讓機器理解這些文本信息,並加以利用。

 

什麼是自然語言處理 – NLP

每種動物都有自己的語言,機器也是!

自然語言處理(NLP)就是在機器語言和人類語言之間溝通的橋樑,以實現人機交流的目的。

人類通過語言來交流,狗通過汪汪叫來交流。機器也有自己的交流方式,那就是數字信息。

不同物種有自己的溝通方式

不同的語言之間是無法溝通的,比如說人類就無法聽懂狗叫,甚至不同語言的人類之間都無法直接交流,需要翻譯才能交流。

而計算機更是如此,為了讓計算機之間互相交流,人們讓所有計算機都遵守一些規則,計算機的這些規則就是計算機之間的語言。

既然不同人類語言之間可以有翻譯,那麼人類和機器之間是否可以通過「翻譯」的方式來直接交流呢?

NLP 就是人類和機器之間溝通的橋樑!

NLP就是人類和機器之間溝通的橋樑

為什麼是「自然語言」處理?

自然語言就是大家平時在生活中常用的表達方式,大家平時說的「講人話」就是這個意思。

自然語言:我背有點駝(非自然語言:我的背部呈彎曲狀)

自然語言:寶寶的經紀人睡了寶寶的寶寶(微博上這種段子一大把)

 

NLP 的2大核心任務

NLP有2個核心任務:NLU和NLG

NLP 有2個核心的任務:

  1. 自然語言理解 – NLU | NLI
  2. 自然語言生成 – NLG

 

自然語言理解 – NLU|NLI

自然語言理解就是希望機器像人一樣,具備正常人的語言理解能力,由於自然語言在理解上有很多難點(下面詳細說明),所以 NLU 是至今還遠不如人類的表現。

è‡ªç„¶è¯­è¨€ç†è§£å°±æ˜¯å¸Œæœ›æœºå™¨åƒäººä¸€æ ·ï¼Œå…·å¤‡æ­£å¸¸äººçš„è¯­è¨€ç†è§£èƒ½åŠ›

自然語言理解的5個難點:

  1. 語言的多樣性
  2. 語言的歧義性
  3. 語言的魯棒性
  4. 語言的知識依賴
  5. 語言的上下文

想要深入了解NLU,可以看看這篇文章《一文看懂自然語言理解-NLU(基本概念+實際應用+3種實現方式)

 

自然語言生成 – NLG

NLG - 將非語言格式的數據轉換成人類可以理解的語言格式

NLG 是為了跨越人類和機器之間的溝通鴻溝,將非語言格式的數據轉換成人類可以理解的語言格式,如文章、報告等。

NLG 的6個步驟:

  1. 內容確定 – Content Determination
  2. 文本結構 – Text Structuring
  3. 句子聚合 – Sentence Aggregation
  4. 語法化 – Lexicalisation
  5. 參考表達式生成 – Referring Expression Generation|REG
  6. 語言實現 – Linguistic Realisation

想要深入了解NLG,可以看看這篇文章《一文看懂自然語言生成 – NLG(6個實現步驟+3個典型應用)

 

NLP 的5個難點

NLP 的5個難點

  1. 語言是沒有規律的,或者說規律是錯綜複雜的。
  2. 語言是可以自由組合的,可以組合複雜的語言表達。
  3. 語言是一個開放集合,我們可以任意的發明創造一些新的表達方式。
  4. 語言需要聯繫到實踐知識,有一定的知識依賴。
  5. 語言的使用要基於環境和上下文。

 

NLP 的4個典型應用

NLP的4種典型應用

情感分析

互聯網上有大量的文本信息,這些信息想要表達的內容是五花八門的,但是他們抒發的情感是一致的:正面/積極的 – 負面/消極的。

通過情感分析,可以快速了解用戶的輿情情況。

 

聊天機械人

過去只有 Siri、小冰這些機械人,大家使用的動力並不強,只是當做一個娛樂的方式。但是最近幾年智能音箱的快速發展讓大家感受到了聊天機械人的價值。

而且未來隨着智能家居,智能汽車的發展,聊天機械人會有更大的使用價值。

 

語音識別

語音識別已經成為了全民級的引用,微信里可以語音轉文字,汽車中使用導航可以直接說目的地,老年人使用輸入法也可以直接語音而不用學習拼音…

 

機器翻譯

目前的機器翻譯準確率已經很高了,大家使用 Google 翻譯完全可以看懂文章的大意。傳統的人肉翻譯未來很可能會失業。

 

NLP 的 2 種途徑、3 個核心步驟

NLP 可以使用傳統的機器學習方法來處理,也可以使用深度學習的方法來處理。2 種不同的途徑也對應着不同的處理步驟。詳情如下:

方式 1:傳統機器學習的 NLP 流程

傳統機器學習的 NLP 流程

  1. 語料預處理
    1. 中文語料預處理 4 個步驟(下文詳解)
    2. 英文語料預處理的 6 個步驟(下文詳解)
  2. 特徵工程
    1. 特徵提取
    2. 特徵選擇
  3. 選擇分類器

 

方式 2:深度學習的 NLP 流程

深度學習的 NLP 流程

  1. 語料預處理
    1. 中文語料預處理 4 個步驟(下文詳解)
    2. 英文語料預處理的 6 個步驟(下文詳解)
  2. 設計模型
  3. 模型訓練

 

英文 NLP 語料預處理的 6 個步驟

**英文 NLP 語料預處理的 6 個步驟**

  1. 分詞 – Tokenization
  2. 詞幹提取Stemming
  3. 詞形還原 – Lemmatization
  4. 詞性標註 – Parts of Speech
  5. 命名實體識別 – NER
  6. 分塊 – Chunking

 

中文 NLP 語料預處理的 4 個步驟

**中文 NLP 語料預處理的 4 個步驟**

  1. 中文分詞 – Chinese Word Segmentation
  2. 詞性標註 – Parts of Speech
  3. 命名實體識別 – NER
  4. 去除停用詞

 

總結

自然語言處理(NLP)就是在機器語言和人類語言之間溝通的橋樑,以實現人機交流的目的。

 

NLP的2個核心任務:

  1. 自然語言理解 – NLU
  2. 自然語言生成 – NLG

 

NLP 的5個難點:

  1. 語言是沒有規律的,或者說規律是錯綜複雜的。
  2. 語言是可以自由組合的,可以組合複雜的語言表達。
  3. 語言是一個開放集合,我們可以任意的發明創造一些新的表達方式。
  4. 語言需要聯繫到實踐知識,有一定的知識依賴。
  5. 語言的使用要基於環境和上下文。

 

NLP 的4個典型應用:

  1. 情感分析
  2. 聊天機械人
  3. 語音識別
  4. 機器翻譯

 

NLP 的6個實現步驟:

  1. 分詞-tokenization
  2. 次干提取-stemming
  3. 詞形還原-lemmatization
  4. 詞性標註-pos tags
  5. 命名實體識別-ner
  6. 分塊-chunking

百度百科版本+維基百科

百度百科版本

自然語言處理是計算機科學領域與人工智能領域中的一個重要方向。它研究能實現人與計算機之間用自然語言進行有效通信的各種理論和方法。自然語言處理是一門融語言學、計算機科學、數學於一體的科學。因此,這一領域的研究將涉及自然語言,即人們日常使用的語言,所以它與語言學的研究有着密切的聯繫,但又有重要的區別。自然語言處理並不是一般地研究自然語言,而在於研製能有效地實現自然語言通信的計算機系統,特別是其中的軟件系統。因而它是計算機科學的一部分。

自然語言處理(NLP)是計算機科學,人工智能,語言學關注計算機和人類(自然)語言之間的相互作用的領域。

查看詳情

 

維基百科版本

自然語言處理(NLP)是計算機科學,信息工程和人工智能的子領域,涉及計算機與人類(自然)語言之間的交互,特別是如何對計算機進行編程以處理和分析大量自然語言數據。自然語言處理中的挑戰通常涉及語音識別,自然語言理解和自然語言生成。

查看詳情

 

擴展閱讀

 

 

啟發式算法 – Heuristic

百度百科版本

啟發式算法(heuristic)是相對於最優化算法提出的。一個問題的最優算法求得該問題每個實例的最優解。

啟發式算法可以這樣定義:

一個基於直觀或經驗構造的算法,在可接受的花費(指計算時間和空間)下給出待解決組合優化問題每一個實例的一個可行解,該可行解與最優解的偏離程度一般不能被預計。

現階段,啟發式算法以仿自然體算法為主,主要有蟻群算法、模擬退火法、神經網絡等。

查看詳情

 

維基百科版本

在計算機科學,人工智能和數學優化中,啟發式是一種技術,用於在經典方法太慢時更快地解決問題,或者用於在經典方法中找到近似解找不到任何確切的解決方案。這是通過交易速度的最佳性,完整性,準確性或精確度來實現的。

在某種程度上,它可以被認為是一種捷徑。一個啟發式的功能,也簡稱為啟發,是一個功能是居替代搜索算法根據現有的資料,以決定跟隨哪一個分支,在每個分支的一步。例如,它可能接近確切的解決方案。

查看詳情

隨機梯度下降法(Stochastic gradient descent | SGD)

維基百科版本

隨機梯度下降(通常縮短為SGD),也稱為增量梯度下降,是用於優化可微分目標函數的迭代方法,梯度下降優化的隨機近似。

2018年的一篇文章暗示Herbert Robbins和Sutton Monro在其1951年題為「隨機近似方法」的文章中發展SGD。有關更多信息,請參閱隨機近似。它被稱為隨機的 因為樣本是隨機選擇(或混洗)而不是作為單個組(如標準梯度下降)或按訓練集中出現的順序選擇的。

查看詳情

梯度下降法 – Gradient descent

什麼是梯度下降法?

梯度下降法

梯度下降算法的公式非常簡單,」沿着梯度的反方向(坡度最陡)「是我們日常經驗得到的,其本質的原因到底是什麼呢?為什麼局部下降最快的方向就是梯度的負方向呢?也許很多朋友還不太清楚。沒關係,接下來我將以通俗的語言來詳細解釋梯度下降算法公式的數學推導過程。

我們以爬上山頂為例

假設我們位於一座山的山腰處,沒有地圖,並不知道如何到達山頂。於是決定走一步算一步,也就是每次沿着當前位置最陡峭最易上山的方向前進一步,然後繼續沿下一個位置最陡方向前進一小步。這樣一步一步走下去,一直走到覺得我們已經到了山頂。這裡通過最陡峭的路徑上山的方向就是梯度。

 

百度百科

梯度下降法(英語:Gradient descent)是一個一階最優化算法,通常也稱為最速下降法。 要使用梯度下降法找到一個函數的局部極小值,必須向函數上當前點對應梯度(或者是近似梯度)的反方向的規定步長距離點進行迭代搜索。如果相反地向梯度正方向迭代進行搜索,則會接近函數的局部極大值點;這個過程則被稱為梯度上升法。

查看詳情

 

維基百科

梯度下降是用於找到函數最小值的一階 迭代 優化 算法。為了使用梯度下降找到函數的局部最小值,需要採用與當前點處函數的梯度(或近似梯度)的負值成比例的步長。相反,如果採用與梯度的正值成比例的步長,則接近該函數的局部最大值 ; 然後將該過程稱為梯度上升。

梯度下降也稱為最陡下降。但是,梯度下降不應與最速下降的最速下降方法相混淆。

查看詳情

 

簡單的梯度下降算法,你真的懂了嗎?

深度研究自然梯度優化,從入門到放棄 | Deep Reading