NLP學習基礎入門(上)

NLP (Natural Langunge Possns,自然語言處理)是計算機科學領域以及人工智能領域的一個重要的研究方向,它研究用計算機來處理、理解以及運用人類語言(如中文、英文等),達到人與計算機之間進行有效通訊。所謂“自然”乃是寓意自然進化形成,是爲了區分一些人造語言,類似C++、Java 等人爲設計的語言。

二、內容
2.1 NLP技術點
接下來通過分析對象和分析內容兩個不同的維度來進行表達,NLP 所包含的技術知識點如圖2.1所示:
 在這裏插入圖片描述

圖2.1 NLP 技術知識點彙總
2.2 NLP處理過程
中文自然語言處理的過程和機器學習過程大體一致,但又存在很多細節上的不同點,下面我們就來看看中文自然語言處理的基本過程有哪些呢?

2.2.1 獲取語料
語料,即語言材料。語料是語言學研究的內容。語料是構成語料庫的基本單元。所以,人們簡單地用文本作爲替代,並把文本中的上下文關係作爲現實世界中語言的上下文關係的替代品。我們把一個文本集合稱爲語料庫(Corpus),當有幾個這樣的文本集合的時候,我們稱之爲語料庫集合(Corpora)。(定義來源:百度百科)按語料來源,我們將語料分爲以下兩種:

1.已有語料
很多業務部門、公司等組織隨着業務發展都會積累有大量的紙質或者電子文本資料。那麼,對於這些資料,在允許的條件下我們稍加整合,把紙質的文本全部電子化就可以作爲我們的語料庫。
2.網上下載、抓取語料
如果現在個人手裏沒有數據怎麼辦呢?這個時候,我們可以選擇獲取國內外標準開放數據集,比如國內的中文漢語有搜狗語料、人民日報語料。國外的因爲大都是英文或者外文,這裏暫時用不到。也可以選擇通過爬蟲自己去抓取一些數據,然後來進行後續內容。
2.2.2 語料預處理
在一個完整的中文自然語言處理工程應用中,語料預處理大概會佔到整個50%-70%的工作量,所以開發人員大部分時間就在進行語料預處理。下面通過數據洗清、分詞、詞性標註、去停用詞四個大的方面來完成語料的預處理工作。

1.語料清洗
數據清洗,顧名思義就是在語料中找到我們感興趣的東西,把不感興趣的、視爲噪音的內容清洗刪除,包括對於原始文本提取標題、摘要、正文等信息,對於爬取的網頁內容,去除廣告、標籤、HTML、JS 等代碼和註釋等。常見的數據清洗方式有:人工去重、對齊、刪除和標註等,或者規則提取內容、正則表達式匹配、根據詞性和命名實體提取、編寫腳本或者代碼批處理等。
2.分詞
中文語料數據爲一批短文本或者長文本,比如:句子,文章摘要,段落或者整篇文章組成的一個集合。一般句子、段落之間的字、詞語是連續的,有一定含義。而進行文本挖掘分析時,我們希望文本處理的最小單位粒度是詞或者詞語,所以這個時候就需要分詞來將文本全部進行分詞。
常見的分詞算法有:基於字符串匹配的分詞方法、基於理解的分詞方法、基於統計的分詞方法和基於規則的分詞方法,每種方法下面對應許多具體的算法。
當前中文分詞算法的主要難點有歧義識別和新詞識別,比如:“羽毛球拍賣完了”,這個可以切分成“羽毛 球拍 賣 完 了”,也可切分成“羽毛球 拍賣 完 了”,如果不依賴上下文其他的句子,恐怕很難知道如何去理解。
3.詞性標註
詞性標註,就是給每個詞或者詞語打詞類標籤,如形容詞、動詞、名詞等。這樣做可以讓文本在後面的處理中融入更多有用的語言信息。詞性標註是一個經典的序列標註問題,不過對於有些中文自然語言處理來說,詞性標註不是非必需的。比如,常見的文本分類就不用關心詞性問題,但是類似情感分析、知識推理卻是需要的,下圖2.2是常見的中文詞性整理。
 在這裏插入圖片描述

圖2.2 中文詞性
常見的詞性標註方法可以分爲基於規則和基於統計的方法。其中基於統計的方法,如基於最大熵的詞性標註、基於統計最大概率輸出詞性和基於 HMM 的詞性標註。

4.去停用詞
停用詞一般指對文本特徵沒有任何貢獻作用的字詞,比如標點符號、語氣、人稱等一些詞。所以在一般性的文本處理中,分詞之後,接下來一步就是去停用詞。但是對於中文來說,去停用詞操作不是一成不變的,停用詞詞典是根據具體場景來決定的,比如在情感分析中,語氣詞、感嘆號是應該保留的,因爲他們對錶示語氣程度、感情色彩有一定的貢獻和意義。
2.2.3 特徵工程
做完語料預處理之後,接下來需要考慮如何把分詞之後的字和詞語表示成計算機能夠計算的類型。顯然,如果要計算我們至少需要把中文分詞的字符串轉換成數字,確切的說應該是向量話。有兩種常用的表示模型分別是詞袋模型和詞向量。

詞袋模型(Bag of Word, BOW),即不考慮詞語原本在句子中的順序,直接將每一個詞語或者符號統一放置在一個集合(如 list),然後按照計數的方式對出現的次數進行統計。
詞向量是將字、詞語轉換成向量矩陣的計算模型。目前爲止最常用的詞表示方法是 One-hot,這種方法把每個詞表示爲一個很長的向量。
2.2.4 特徵選擇
同數據挖掘一樣,在文本挖掘相關問題中,特徵工程也是必不可少的。在一個實際問題中,構造好的特徵向量,是要選擇合適的、表達能力強的特徵。文本特徵一般都是詞語,具有語義信息,使用特徵選擇能夠找出一個特徵子集,其仍然可以保留語義信息;但通過特徵提取找到的特徵子空間,將會丟失部分語義信息。所以特徵選擇是一個很有挑戰的過程,更多的依賴於經驗和專業知識,並且有很多現成的算法來進行特徵的選擇。目前,常見的特徵選擇方法主要有 DF、 MI、 IG、 CHI、WLLR、WFO 六種。

2.2.5 模型訓練
在特徵向量選擇好之後,接下來要做的事情當然就是訓練模型,對於不同的應用需求,我們使用不同的模型,傳統的有監督和無監督等機器學習模型, 如 KNN、SVM、Naive Bayes、決策樹、GBDT、K-means 等模型;深度學習模型比如 CNN、RNN、LSTM、 Seq2Seq、FastText、TextCNN 等。這些模型在後續的分類、聚類、神經序列、情感分析等示例中都會用到。下面是在模型訓練時需要注意的幾個點。

1.注意過擬合、欠擬合問題,不斷提高模型的泛化能力。

過擬合:模型學習能力太強,以至於把噪聲數據的特徵也學習到了,導致模型泛化能力下降,在訓練集上表現很好,但是在測試集上表現很差。
常見的解決方法有:

增大數據的訓練量;
增加正則化項,如 L1 正則和 L2 正則;
特徵選取不合理,人工篩選特徵和使用特徵選擇算法;
採用 Dropout 方法等。
欠擬合:就是模型不能夠很好地擬合數據,表現在模型過於簡單。
常見的解決方法有:

添加其他特徵項;
增加模型複雜度,比如神經網絡加更多的層、線性模型通過添加多項式使模型泛化能力更強;
減少正則化參數,正則化的目的是用來防止過擬合的,但是現在模型出現了欠擬合,則需要減少正則化參數。
2.對於神經網絡,注意梯度消失和梯度爆炸問題。

2.2.6 評價指標
訓練好的模型,上線之前要對模型進行必要的評估,目的讓模型對語料具備較好的泛化能力。具體有以下這些指標可以參考。

1.錯誤率、精度、準確率、精確度、召回率、F1 衡量。

2.ROC 曲線、AUC 曲線。
ROC 全稱是“受試者工作特徵”(Receiver Operating Characteristic)曲線。我們根據模型的預測結果,把閾值從0變到最大,即剛開始是把每個樣本作爲正例進行預測,隨着閾值的增大,學習器預測正樣例數越來越少,直到最後沒有一個樣本是正樣例。

2.3 NLP研究任務
NLP可以被應用於很多領城,這裏大概總結出以下幾種通用的應用:

機器翻譯:計算機具備將一種諧育翻譯成另一種語 言的能力。
情感分析:計算機能夠判斷用戶評論是香積極。
智能問答:計算機能夠正確回答輸人的問題。
文摘生成:計算機能夠準確日納、總結井產生文本摘要。
文本分類計算機能夠採集各種文章,進行主題分析,從而進行行自動分類。
輿論分析:計算機能夠判斷目前輿論的導向。
知識圖譜: 知識點相互連接而成的語義網絡。
2.3.1 機器翻譯
機器翻譯是自然語言處理中最爲人所熟知的場景,國內外有很多比較成熟的機器翻譯產品,比如百度翻譯、Google翻譯等,還有提供支持語音輸人的多國語互譯的產品(比如科大訊飛就出了-款翻譯札)。

2.3.2 情感分析
情感分析在一些評論網站 比較有用,比如某餐飲網站的評論中會有非常多拔草的客人的評價,如果一眼掃過去滿眼都是又貴又難喫,那誰還想去呢?另外有些商家爲了獲取大量的客戶不惜僱傭水軍灌水,那就可以通過自然語言處理來做水軍識別,情感分析來分析總體用戶評價是積極還是消極。

2.3.4 智能問答
智能問答在一-些電商網站有非常實際的價值,比如代替人工充當客服角色,有很多基本而且重複的問題,其實並不需要人工客服來解決,通過智能問容系統可以篩選掉大最重複的問題,使得人工座席能更好地服務客戶。

2.3.5 文摘生成
文摘生成利用計算機自動地從原始文獻中摘取文摘,全面準確地反映某文獻的中心內容。這個技術可以幫助人們節省大量的時間成本,而且效率更高。

2.3.6 文本分類
文本分類是機器對文本按照-定的分類體系自動標註類別的過程。舉一個例子 ,圾郵件是一種令 人頭痛的頑症,困擾着非常多的互聯網用戶。2002 年,Paul Graham機出使用“貝葉斯推斷”來過濾垃圾郵件,1000 封垃圾郵件中可以過濾掉995封並且沒有一個是誤判,另外這種過濾器還具有自我學習功能,會根據新收到的郵件,不斷調整。也就是說收到的垃圾郵件越多,相對應的判斷垃圾郵件的準確率就越高。

2.3.7 輿論分析
輿論分析可以幫助分析哪些話題是目前的熱點,分析傳播路徑以及發展趨勢,對於不好的輿論導向可以進行有效的控制。

2.3.8 知識圖譜
知識圖譜( Knowledge Graph/Vault)又稱科學知識圖譜,在圖書情報界稱爲知識域可視化或知識領域映射地圖,是顯示知識發展進程與結構關係的一系列各 種不同的圖形,用可視化技術描述知識資源及其載體,挖掘、分析、構建、繪製和顯示知識及它們之間的相互聯繫。

2.4 知識結構
作爲一門綜合學科,NLP是研究人與機器之間用自然語言進行有效通信的理論和方法。這需要很多跨學科的知識,需要語言學、統計學、最優化理論、機器學習、深度學習以及自然語育處理相關理論模型知識做基礎。作爲一門雜學,NLP可謂包羅萬象,體系化與特殊化並存,這裏簡單羅列其知識體系,如下圖2.3所示:
 在這裏插入圖片描述

圖2.3 知識結構
▼有法語義分析:針對目標句子,進行各種句法分析,如分詞、 詞性標記、命名實體識別及鏈接、句法分析、語義角色識別和多義詞消歧等。
▼關鍵詞抽取:抽取目標文本中的主要信息,比如從一條新聞中抽取關鍵信息。主要是瞭解是誰、於何時、爲何、對誰、做了何事、產生了有什麼結果。涉及實體識別、時間抽取、因果關係抽取等多項關鍵技術。
▼文本挖掘:主要包含了對文本的聚類、分類,信息抽取、摘要、情感分析以及對挖掘的信息和知識的可視化、交互式的呈現界面。
▼機器翻譯:將輸人的源語言文本通過自動翻譯轉化爲另種語言的文本。根據輸人數據類型的不同,可細分爲文本翻譯、語音翻譯、手語翻譯、圖形翻譯等。機器翻譯從最早的基於規則到二十年前的基於統計的方法,再到今天的基於深度學習(編解碼)的方法,逐漸形成了一套比較嚴謹的方法體系。
▼信息檢索:對大規模的文檔進行索引。可簡單對文檔中的詞彙,賦以不同的權重來建立索引,也可使用算法模型來建立更加深層的索引。查詢時,首先對輸入比進行分析,然後在索引裏面查找匹配的候選文檔,再根據個排序 機制把候選文檔排序,最後輸出排序得分最高的文檔。
▼問答系統:針對某個自然語言表達的問題,由問答系統給出一個精準的答案。需
要對自然語言查詢語句進行語義分析,包括實體鏈接、關係識別,形成邏輯表達式,然後到知識庫中查找可能的候選答案並通過一個排序機制找出最佳的答案。
▼對話系統:系統通過多回合對話,跟用戶進行聊天、回答、完成某項任務。主要涉及用戶意圖理解、通用聊天引擎、問答引擎、對話管理等技術。此外,爲了體現上下文相關,要具備多輪對話能力。同時,爲了體現個性化,基於用戶畫像做個性化回覆。
2.5 知識結構
自然語言處理可以分爲以下三個層面:
(1) 第一層面:詞法分析
詞法分析包括漢語的分詞和詞性標註這兩部分。之前有提過,漢語分詞與英文不同,漢語書面詞語之間沒有明顯的空格標記,文本中的句子以字竹串的方式出現,向子中心逗號分隔,句子和句子之間常以句號分隔。針對議語這種獨特的書面表現形式,漢語的自然語言處理的首要工作就是要將輸人的文本切分爲單獨的詞語,然後在此技術上進行其他更高級的分析。
上述這個步驟稱爲分詞。除了分詞之外,詞性標註也通常被認爲是詞法分析的一部分,詞性標註的目的是爲每一個詞賦予一個類別,這個類別可以是名詞(noun)、動詞(verb)、形容詞(adjective)等。通常來說,屬於相同詞性的詞,在句法中承擔類似的角色。
(2)第二層面:句法分析
句法分析是對輸人的文本以句子爲單位,進行分析以得到句子的句法結構的處理過程。對句法結構進行分析,一方面是爲了幫助理解句子的含義,另一方面也爲更高級的自然語言處理任務提供支持(比如機器翻譯、情感分析等)。目前業界存在三種比較主流的句法分析方法:短語結構句法體系,作用是識別出句子中的短語結構以及短語之間的層次句法關係;依存結構句法體系,作用是識別句子中詞與詞之間的相互依賴關係;深層文法句法分析,利用深層文法,例如詞彙化樹鄰接文法,組合範疇文法等對句子進行深層的句法以及語義分析。
上述幾種句法分析,依存句法分析屬於淺層句法分析,其實現過程相對來說比較簡單而且適合在多語言環境下應用,但是其所能提供的信息也相對較少。深層文法句法分析可以提供豐富的句法和語義信息,但是採用的文法相對比較複雜,分析器的運行復雜度也比較高,這使得深層句法分析不太適合處理大規模的數據。短語結構句法分析介於依存句法分析和深層文法句法分析之間。
(3)第三個層面:語義分析
語義分析的最終目的是理解句子表達的真是語義。但是,語義應該採用什麼表示形式一直困擾着研究者們,至今這個問題也沒有一個統一的答案。語義角色標註(semantic role labeling)是目前比較成熟的淺層語義分析技術。語義角色標註一般都在句法分析的基礎上完成,句法結構對於語義角色標註的性能至關重要。基於邏輯表達的語義分析也得到學術界的長期關注。出於機器學習模型複雜度、效率的考慮,自然語言處理系統通常採用級聯的方式,即分詞、詞性標註、句法分析、語義分析分別訓練模型。實際使用時,給定輸入句子,逐一使用各個模塊進行分析,最終得到所有結果。
近年來,隨着研究工作的深人,研究者們提出了很多有效的聯合模型,將多個任務聯合學習和解碼,如分詞詞性聯合、詞性句法聯合、分詞詞性句法聯合句法語義聯合等。聯合模型通常都可以顯著提高分析質量,原因在於聯合模型可以讓相互關聯的多個任務互相幫助,同時對於任何單任務而言,人工標註的信息也更多了。然而,聯合模型的複雜度更高,速度也更慢。

三、總結
自然語言處理(NLP)是計算機科學,人工智能,語言學關注計算機和人類(自然)語言之間的相互作用的領域。因此,自然語言處理是與人機交互的領域有關的。在自然語言處理面臨很多挑戰,包括自然語言理解,因此,自然語言處理涉及人機交互的面積。在NLP諸多挑戰涉及自然語言理解,即計算機源於人爲或自然語言輸入的意思,和其他涉及到自然語言生成。

原文鏈接:https://blog.csdn.net/weixin_42555080/article/details/89202777

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章