1、自然語言處理概述
自然語言處理(Natural Language Processing,NLP)是計算機科學領域與人工智能領域中的一個重要方向。它研究人與計算機之間用自然語言進行有效通信的理論和方法。融語言學、計算機科學、數學等于一體的科學。旨在從文本數據中提取信息。目的是讓計算機處理或“理解”自然語言,以執行自動翻譯、文本分類和情感分析等。自然語言處理是人工智能中最為困難的問題之一。
2、自然語言處理入門基礎
2.1 數學基礎
(1)線性代數
向量、 矩陣、距離計算(余弦距離、歐式距離、曼哈頓距離、明可夫斯基距離、切比雪夫距離、杰卡德距離、漢明距離、標準歐式距離、皮爾遜相關系數)
(2)概率論
隨機試驗、條件概率、全概率、貝葉斯定理、信息論
(3)統計學
圖形可視化(餅圖、條形圖、熱力圖、折線圖、箱線圖、散點圖、雷達圖、儀表盤)
數據度量標準(平均數、中位數、眾數、期望、方差、標準差)
概率分布(幾何分布、二項分布、正態分布、泊松分布)
統計假設檢驗
2.2 語言學基礎
語音、詞匯、語法
2.3 Python基礎
廖雪峰教程,Python從入門到實踐
2.4 機器學習基礎
統計學習方法、機器學習周志華、機器學習實戰
2.5 深度學習基礎
CNN、RNN、LSTM
2.6 自然語言處理的理論基礎
統計自然語言處理(宗成慶第二版)、Python自然語言處理、數學之美(第二版)
3、自然語言處理的主要技術范疇
3.1 語義文本相似度分析
語義文本相似度分析是對兩段文本的意義和本質之間的相似度進行分析的過程。
3.2 信息檢索(Information Retrieval, IR)
信息檢索是指將信息按一定的方式加以組織,并通過信息查找滿足用戶的信息需求的過程和技術。
3.3 信息抽取(Information Extraction)
信息抽取是指從非結構化/半結構化文本(如網頁、新聞、 論文文獻、微博等)中提取指定類型的信息(如實體、屬性、關系、事件、商品記錄等),并通過信息歸并、冗余消除和沖突消解等手段將非結構化文本轉換為結構化信息的一項綜合技術。
3.4 文本分類(Text Categorization)
文本分類的任務是根據給定文檔的內容或主題,自動分配預先定義的類別標簽。
3.5 文本挖掘(Text Mining)
文本挖掘是信息挖掘的一個研究分支,用于基于文本信息的知識發現。文本挖掘的準備工作由文本收集、文本分析和特征修剪三個步驟組成。目前研究和應用最多的幾種文本挖掘技術有:文檔聚類、文檔分類和摘要抽取。
3.6 文本情感分析(Textual Affective Analysis)
情感分析是一種廣泛的主觀分析,它使用自然語言處理技術來識別客戶評論的語義情感,語句表達的情緒正負面以及通過語音分析或書面文字判斷其表達的情感等。
3.7 問答系統(Question Answering, QA)
自動問答是指利用計算機自動回答用戶所提出的問題以滿足用戶知識需求的任務。不同于現有搜索引擎,問答系統是信息服務的一種高級形式,系統返回用戶的不再是基于關鍵詞匹配排序的文檔列表,而是精準的自然語言答案。
3.8 機器翻譯(Machine Translation,MT)
機器翻譯是指利用計算機實現從一種自然語言到另外一種自然語言的自動翻譯。被翻譯的語言稱為源語言(source language),翻譯到的語言稱作目標語言(target language)。
機器翻譯研究的目標就是建立有效的自動翻譯方法、模型和系統,打破語言壁壘,最終實現任意時間、任意地點和任意語言的自動翻譯,完成人們無障礙自由交流的夢想。
3.9 自動摘要(Automatic Summarization)
自動文摘(又稱自動文檔摘要)是指通過自動分析給定的一篇文檔或多篇文檔,提煉、總結其中的要點信息,最終輸出一篇長度較短、可讀性良好的摘要(通常包含幾句話或數百字),該摘要中的句子可直接出自原文,也可重新撰寫所得。
3.10 語音識別(Speech Recognition)
語言識別指的是將不同語言的文本區分出來。其利用語言的統計和語法屬性來執行此任務。語言識別也可以被認為是文本分類的特殊情況
4、自然語言處理基本點
4.1 語料庫(Corpus)
語料庫中存放的是在語言的實際使用中真實出現過的語言材料;語料庫是以電子計算機為載體承載語言知識的基礎資源;真實語料需要經過加工(分析和處理),才能成為有用的資源。
4.2 中文分詞(Chinese Word egmentation)
(1)中文分詞指的是將一個漢字序列切分成一個一個單獨的詞。分詞就是將連續的字序列按照一定的規范重新組合成詞序列的過程。
(2)現有的分詞方法可分為三大類:基于字符串匹配的分詞方法、基于理解的分詞方法、基于統計的分詞方法和基于深度學習的中文分詞。推薦
(3)比較流行的中文分詞工具:jieba、StanfordNLP、HanLP、SnowNLP、THULAC、NLPIR
4.3 詞性標注(Part-of-speech tagging)
(1)詞性標注是指為給定句子中的每個詞賦予正確的詞法標記,給定一個切好詞的句子,詞性標注的目的是為每一個詞賦予一個類別,這個類別稱為詞性標記(part-of-speech tag),比如,名詞(noun)、動詞(verb)、形容詞(adjective)等。
(2)詞性標注是一個非常典型的序列標注問題。最初采用的方法是隱馬爾科夫生成式模型, 然后是判別式的最大熵模型、支持向量機模型,目前學術界通常采用的結構是感知器模型和條件隨機場模型。近年來,隨著深度學習技術的發展,研究者們也提出了很多有效的基于深層神經網絡的詞性標注方法。
4.4 句法分析(Parsing)
(1)基于規則的句法結構分析
(2)基于統計的語法結構分析
4.5 詞干提取(Stemming)
詞干提取是將詞語去除變化或衍生形式,轉換為詞干或原型形式的過程。詞干提取的目標是將相關詞語還原為同樣的詞干。
4.6 詞形還原(Lemmatization)
詞形還原是將一組詞語還原為詞源或詞典的詞目形式的過程。
4.7 停用詞過濾
停用詞過濾是指在文本中頻繁出現且對文本信息的內容或分類類別貢獻不大甚至無貢獻的詞語,如常見的介詞、冠詞、助詞、情態動詞、代詞以及連詞等。
4.8 詞向量化(Word Vector)
詞向量化是用一組實數構成的向量代表自然語言的叫法。這種技術非常實用,因為電腦無法處理自然語言。詞向量化可以捕捉到自然語言和實數間的本質關系。通過詞向量化,一個詞語或者一段短語可以用一個定維的向量表示。(word2vec)
from gensim.models import Word2Vec
4.9 命名實體消歧(Named Entity Disambiguation)
命名實體消岐是對句子中的提到的實體識別的過程。
例如,對句子“Apple earned a revenue of 200 Billion USD in 2016”,命名實體消岐會推斷出句子中的Apple是蘋果公司而不是指一種水果。一般來說,命名實體要求有一個實體知識庫,能夠將句子中提到的實體和知識庫聯系起來。
4.10 命名實體識別(named entity recognition)
命名實體識別是識別一個句子中有特定意義的實體并將其區分為人名,機構名,日期,地名,時間等類別的任務。
5、特征處理
5.1 特征提取(Feature Extraction)
特征提取是指將機器學習算法不能識別的原始數據轉化為算法可以識別的特征的過程。
舉例(文本分類特征提取步驟):
(1)對訓練數據集的每篇文章,我們進行詞語的統計,以形成一個詞典向量。詞典向量里包含了訓練數據里的所有詞語(假設停用詞已去除),且每個詞語代表詞典向量中的一個元素。
(2)在經過第一步的處理后,每篇文章都可以用詞典向量來表示。這樣一來,每篇文章都可以被看作是元素相同且長度相同的向量,不同的文章具有不同的向量值。這也就是表示文本的詞袋模型(bag of words)。
(3)針對于特定的文章,如何給表示它的向量的每一個元素賦值呢?最簡單直接的辦法就是0-1法了。簡單來說,對于每一篇文章,我們掃描它的詞語集合,如果某一個詞語出現在了詞典中,那么該詞語在詞典向量中對應的元素置為1,否則為0。
5.2 特征選擇( Feature Selection)
當數據預處理完成后,我們需要選擇有意義的特征輸入機器學習的算法和模型進行訓練。特征選擇是指去掉無關特征,保留相關特征的過程,也可以認為是從所有的特征中選擇一個最好的特征子集。特征選擇本質上可以認為是降維的過程。
from sklearn.feature_extraction.text import TfidfVectorizer
5.3 降維(Dimension Reduction)
6、模型選擇
6.1 馬爾可夫模型、隱馬爾可夫模型、層次化隱馬爾可夫模型、馬爾可夫網絡
(1)應用:詞類標注、語音識別、局部句法剖析、語塊分析、命名實體識別、信息抽取等。應用于自然科學、工程技術、生物科技、公用事業、信道編碼等多個領域。
(2)馬爾可夫鏈:在隨機過程中,每個語言符號的出現概率不相互獨立,每個隨機試驗的當前狀態依賴于此前狀態,這種鏈就是馬爾可夫鏈。
(3)多元馬爾科夫鏈:考慮前一個語言符號對后一個語言符號出現概率的影響,這樣得出的語言成分的鏈叫做一重馬爾可夫鏈,也是二元語法。二重馬爾可夫鏈,也是三元語法,三重馬爾可夫鏈,也是四元語法
6.2 條件隨機場(CRF)
(1)條件隨機場用于序列標注,中文分詞、中文人名識別和歧義消解等自然語言處理中,表現出很好的效果。原理是:對給定的觀察序列和標注序列,建立條件概率模型。條件隨機場可用于不同預測問題,其學習方法通常是極大似然估計。
(2)條件隨機場模型也需要解決三個基本問題:特征的選擇、參數訓練和解碼。
6.3 貝葉斯網絡
貝葉斯網絡又稱為信度網絡或信念網絡(belief networks),是一種基于概率推理的數學模型,其理論基礎是貝葉斯公式。
6.4 最大熵模型
7、NLP常用工具
(1)Anaconda
Anaconda是一個用于科學計算的Python開發平臺,支持 Linux,Mac和Windows系統,提供了包管理與環境管理的功能,可以很方便地解決多版本Python并存、切換以及各種第三方包安裝問題。Anaconda利用conda命令來進行package和environment的管理,并且已經包含了Python和相關的配套工具。Anaconda集成了大量的機器學習庫以及數據處理必不可少的第三方庫,比如NumPy,SciPy,Scikit-Learn以及TensorFlow等。
(2)Scikit-learn
Scikit-learn是廣受歡迎的入門級機器學習庫,包含大量的機器學習算法和特征提取實現,使用非常簡便。Scikit-learn實現的是淺層學習算法,神經網絡僅實現了多層感知機。
(3)TensorFlow
TensorFlow是谷歌基于DistBelief進行研發的第二代人工智能學習系統,可被用于語音識別或圖像識別等多項機器學習和深度學習領域。
(4)Keras
Keras是一個高級別的Python神經網絡框架,能在TensorFlow或者 Theano 上運行。Keras的作者、谷歌AI研究員Francois Chollet宣布了一條激動人心的消息,Keras將會成為第一個被添加到TensorFlow核心中的高級別框架,這將會讓Keras變成Tensorflow的默認API。
(5)Gensim
Gensim是一款開源的第三方Python工具包,用于從原始的非結構化的文本中,無監督地學習到文本隱層的主題向量表達。它支持包括TF-IDF,LSA,LDA,和word2vec在內的多種主題模型算法,支持流式訓練,并提供了諸如相似度計算,信息檢索等一些常用任務的API接口。
(6)NLTK
在NLP領域中,NLTK是最常使用的一個Python庫。
(7)Jieba. Jieba,結巴分詞是最受歡迎的中文分詞工具。
8、NLP語言模型
(1)詞的獨熱表示(one-hot representation)
(2)Bag of Words
(3)Bi-gram 和 N-gram
(4)詞的分布式表示(distributed representation)
(5)共現矩陣(Cocurrence martrix)
(6)神經網絡語言模型(Neural Networ Language model,NNLM)
(7)word2vec
連續詞袋模型(Continuous Bag of Words,CBOW)Skip-Gram模型
9、快速入門NLP方法
(1)認真看完一本NLP相關的書,堅持看完一部視頻。
(2)看這兩年相關方向的綜述論文,然后看一些經典的論文和最新論文。
(3)獨立實現一個小型的自然語言處理項目。
(4)可以在Github上找到很多相關的開源代碼,選一個自己感興趣的方向進行研究。
10、自然語言處理學習資料
(1)我愛自然語言處理
(2)一文讀懂自然語言NLP
(3)中文分詞原理與工具
(4)自然語言處理項目資源庫匯總
-
人工智能
+關注
關注
1787文章
46032瀏覽量
234866 -
自然語言
+關注
關注
1文章
279瀏覽量
13295 -
nlp
+關注
關注
1文章
481瀏覽量
21932
發布評論請先 登錄
相關推薦
評論