天天看點

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

【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】老司機帶你入門自然語言處理 - 小Dream

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

2 NLP算法工程師必備技能 

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

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

那麼,該如何從一個小白,入門成為一名合格的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預訓練模型

轉載文章請背景聯系

侵權必究