天然語言處理是一門用於理解人類語言、情感和思想的技術,被稱爲是人工智能皇冠上的明珠。python
隨着深度學習發展,天然語言處理技術近年來發展迅速,在技術上表現爲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預訓練模型
轉載文章請後臺聯繫
侵權必究