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