1. 程式人生 > >【NLP】老司機帶你入門自然語言處理

【NLP】老司機帶你入門自然語言處理

自然語言處理是一門用於理解人類語言、情感和思想的技術,被稱為是人工智慧皇冠上的明珠。

 

隨著深度學習發展,自然語言處理技術近年來發展迅速,在技術上表現為BERT、GPT等表現極佳的模型;在應用中表現為chatbot、知識圖譜、輿情監控等基於NLP技術的產品在市場上的大規模出現。

 

基於此,各類公司開始出現NLP演算法工程師的需求,待遇在軟體工程師崗位中處於相當上游的水平。

 

基於此,不少同學和工程師有學習NLP的願望,本文對首先NLP做一個簡單的介紹;然後,作為一個過來人,為初學NLP的同學提供一些必要的建議。

 

文末有我們的公眾號的二維碼,掃描關注,可以領取系統的NLP資料。

 

作者&編輯 | 小Dream哥

1  NLP簡介

每次與行外之人談起自然語言處理(Natural Language Process,NLP),對方往往都是一片茫然。因此,常常感到很苦惱,如何跟一個從未接觸過NLP的人,解釋NLP到底是什麼?畢竟這是一門這麼重要的技術(學科),它的發展與應用,會極大的影響這個世界上的每一個行業,每一個人。

 

那麼,到底什麼是NLP呢?所謂自然語言處理,就是用計算機(或者其他計算單元,以下類似)來處理人類的自然語言。那麼要理解NLP,首先要理解什麼是自然語言。所謂“自然語言”,是相對於計算機語言(計算機能夠理解的語言,如彙編、C語言等)而言的,人類日常使用的語言,例如我們都講的中文,國際語言英文,各地的方言。那麼為什麼會有NLP這樣一個專門的學科(在各大高校都有專門的學科)來研究如何用計算機來處理自然語言呢?

 

因為計算機設計之初主要是用於計算,或者完成某一項有明確規則任務。所以計算機語言與人類日常使用的語言存在很大的差異,計算機不能直接理解人類語言的含義,即不能直接同人類進行溝通。長期以來,計算機都不能很好的理解人類的語言,通常是程式設計師寫一些規則去籠統的對語句進行一些判斷和處理。如何讓計算機聽懂人話,同人交談,甚至理解人的情感和文化,這就是NLP要做的事情。

 

人類語言承載了人的思考、文化等,也是每個人對外互動和表達的最主要手段。NLP就是為了解決這樣一個問題而出現的技術。他希望能夠使得計算機理解人類的語言,甚至是語言背後的文化、意圖與情感。例如說,當你說“我餓了”,計算機能夠明白你肚子餓了,並且提出幫你定外賣;當一個女孩子說“我想要蘋果”的時候,計算機能夠結合當時的情境,明白女孩子說的蘋果,到底是水果,還是手機。

2 NLP演算法工程師必備技能 

自然語言處理(NLP)是一門複雜而且艱難的學科,之前提過NLP要做的事情,就是讓計算機聽懂人話,同人交談,甚至理解人的情感和文化。因此,NLP是一門交叉學科,它涉及語言學、電腦科學以及人工智慧等學科。

 

那麼,該如何從一個小白,入門成為一名合格的NLP演算法工程師需要哪些技能呢?

 

筆者總結了一下,成為一名合格的NLP演算法工程師,需要掌握如下的基本技能:

1)掌握必要的數學基礎及熟練的程式設計能力;

 

2)熟練使用python進行資料處理;

 

3)瞭解深度學習的理論基礎;

 

4)熟悉NLP中常用的深度學習模型;

 

5)熟練掌握至少一種深度學習平臺框架,如tensorflow、pytorch或keras等;

 

6)熟悉樸素貝葉斯、HMM、CRF等NLP中常用的機器學習演算法;

 

7)熟練掌握NLP中分詞、NER,情感分析、語義匹配等幾種基本任務常用的模型及方法。

 

有的同學看到如此多的內容和技能或許會退縮,但是正是這些都頗具難度的內容,構築了這個行業的壁壘,一個一個啃下去,勝利就屬於你。

4 入門指引

 

1)從深度學習理論開始,迅速切入

深入瞭解感知器與神經網路的基本理論,包括正向傳播,反向傳播,誤差,損失函式,梯度等概念。這是深度學習理論最基礎也是最重要的部分。通過這部分內容的學習,你可以檢驗你是否適合進一步深入AI領域;深入瞭解之後,也可以迅速建立起學習的資訊,如果你有一種“原來所謂的人工智慧,深度學習也不過如此”的感覺,學習的目標就達到了。

 

其中,可能有的同學需要補充學習一些數學微分方面的知識。

 

2)熟練掌握python

熟練掌握python,基本任務是能夠用python自己實現一個簡單的全連線前饋神經網路,實現正向傳播,反向傳播等。

 

如果沒有程式設計基礎,務必要好好學習基本的資料結構和演算法。

 

3)熟悉深度學習中,幾種常用的特徵抽取器,機器在深度學習框架的使用

深入理解CNN,RNN,LSTM等NLP中常用的特徵抽取器的原理及實現。

 

熟悉一種深度學習框架,並熟練掌握上述模型在該框架上的使用,推薦tensorflow。

 

4)瞭解幾個較為基本的NLP任務的理論及實現

 

在NLP中,分詞,詞向量,NER,文字分類是最基本的幾個概念和任務。熟練掌握這幾個任務,就基本能夠系統理解NLP的大部分概念和玩法。

 

分詞對於中文自然語言處理來說,是最基本的步驟。需瞭解基本的分詞理論及熟練掌握現在常用的分詞工具用法。

 

稠密式詞向量出現是NLP發展過程中非常重要的事件,需要深入理解詞向量的理論,深入理解word2vec訓練詞向量的原理。熟悉gensim等製備詞向量的工具。

 

NER及文字分類是非常重要的NLP基本任務,需要非常熟練的掌握一種常用的方法。以NER為例,如今比較流行的基於CNN或者LSTM的模型,是必須要熟練掌握的。

 

這期間,會涉及資料預處理等繁雜的事項,需要你能夠熟練掌握用python進行資料處理。

 

5)查漏補缺,學習基本的機器學習演算法

 

當你對整個NLP有一個基本的認識之後,這個時候再來看一些基本的機器學習演算法,會更有效率,也更能看出門道,知輕重。面試常問的機器學習演算法有HMM,CRF,SVM,樸素貝葉斯等。

6)掌握一種更復雜的NLP任務

 更復雜的NLP任務包括對話機器人,機器翻譯,知識圖譜等,他們往往是多種NLP任務和軟體系統的綜合。通過掌握一種複雜的任務,你能夠更能實際瞭解NLP這門技術的邊界和實際應用場景。

 

通過這些複雜的任務,你可以瞭解到一些比較新的NLP技術,例如attention,seq2seq,transformer等。

 

7)逐漸瞭解現在NLP中最火爆的預訓練模型

 

GPT,BERT,XLNET是現在NLP從業者必須要了解的東西,他們很可能是NLP的未來。甚至,BERT已經在產業界有了很多的實際應用。

 

必須要深入瞭解他們的歷史,原理,實現以及實際應用。

 

8)選定你的研究方向,不斷跟進,不斷補充自己的不足

 

到這裡,你基本掌握了作為一名NLP工程師應該掌握的東西,你可以根據你的實際情況,選擇你要研究和跟進的方向。可以是最基礎的NER,語義匹配等;也可以是複雜的聊天機器人,知識圖譜等。

 

NLP是一門快速持續發展的學科和技術,你必須不斷學習,才能跟上腳步。

 

還有一個建議,注重你的工程能力的提升,多刷一刷leetcode。

 

總結

 

自然語言處理是一門非常複雜的學科和技術,要掌握他不是一件輕鬆的事情,需要相當長一段時間的投入和努力。同時,他也是極具意義和前景的技術,相信在學習過程中,你能獲得很多的成長和樂趣。

 

最後,想要學習的同學,可以掃描如下二維碼,關注公眾號“科學揚聲器”,輸入“NLP學習資料”獲取系統的學習資料。

知識星球推薦

掃描上面的二維碼,就可以加入我們的星球,助你成長為一名合格的自然語言處理演算法工程師。

 

知識星球主要有以下內容:

(1) 聊天機器人

(2) 知識圖譜

(3) NLP預訓練模型

 

轉載文章請後臺聯絡

侵權