自然語言處理( Natural Language Processing, NLP)是計算機科學領域與人工智能領域中的一個重要方向。它研究能實現人與計算機之間用自然語言進行有效通信的各種理論和方法。自然語言處理是一門融語言學、計算機科學、數學于一體的科學。因此,這一領域的研究將涉及自然語言,即人們日常使用的語言,所以它與語言學的研究有著密切的聯系,但又有重要的區別。自然語言處理并不是一般地研究自然語言,而在于研制能有效地實現自然語言通信的計算機系統,特別是其中的軟件系統。因而它是計算機科學的一部分。
一、AI和NLP的基本介紹
1.人工智能的分類
弱人工智能:限定領域解決特定問題
強人工智能:通用領域勝任人類所有工作
超人工智能:遠超人類智慧
2.人工智能研究方向
3.人工智能于機器學習的關系
人工智能的三駕馬車:算法、算力、數據
4.自然語言處理(Natural Language Processing)
集語言學、數學、計算機科學為一體
自然語言處理的目標:人機交互、數據分析/挖掘
二、算法行業介紹
1.算法相關工作
(1)落地型
主要負責業務場景的算法落地,動手能力強
需要熟悉業務場景常見問題,極端情況的處理
難點:小坑不斷,需求總改,數據常缺,效果老降
(2)研究型
主要負責發表論文及算法比賽等,理論知識扎實
研究內容可以脫離實際業務,在公開數據集上工作
難點:想好的思路已發表,比賽的分數被人超
2.項目人員構成
業務人員/甲方:一般是非程序員,根據業務場景需要,提出需求
產品經理:與業務對接,梳理需求,整理成開發的計劃;或根據用戶反饋等,提出自己的需求
開發人員:細分種類很多,人工智能方向一般大致分成算法開發和工程開發,合作處理整個項目
測試人員:專門進行測試,也可以進一步細分,一般也需要編程能力
運維人員:機器維護人員,服務器和數據庫的重啟、擴容、縮容等操作由他們進行,同時負責監控服務運行的狀況
Optional:部署人員、數據標注人員、項目管理人員、平臺維護人員等
3.項目主要流程&算法開發職責
①確認需求——業務發起需求評審
了解業務背景,以算法人員視角給出是否可行的意見
②確認技術方案——開發進行技術評審(算法方案+工程方案)
對問題的建模過程,需求轉化成哪(幾)種機器學習問題(或規則處理),需要哪些前置條件
③獲取標注數據——算法或業務提出數據需求
建立標注規范,校驗數據格式,抽樣評估效果,訓練集驗證集劃分;搜索開源數據;購買數據
④代碼開發——模型訓練、功能開發等
訓練/預測代碼開發,算法實驗,對比效果
⑤測試——測試用例評審
功能測試,效果測試,性能測試,開發可以自測,配合測試組發現的問題做修改
⑥部署上線/投入使用——開發上線,測試驗證,運維監控
每個公司使用框架有差異,根據實際情況處理
⑦后續迭代——業務提出優化需求
數據埋點,分析日志等
4.NLP面臨的困難
①口吃系列:劃分語義邊界
eg.過幾天天天天氣不好
②分詞系列:劃分語義邊界
eg.南京市長江大橋
③套娃系列:語言的遞歸性
eg.轉發《自治區教育廳辦公室關于轉發<教育部關于xxxx的通知>的通知》的通知
④同文歧義系列:常識認知/社會認知
eg.單身的原因有兩個,一是誰都看不上,二是誰都看不上
⑤反話正說系列:語序和語義的關聯
eg.屢敗屢戰? 屢戰屢敗
⑥崩潰系列
⑦英語系列
困難總結:NLP對于機器來說很困難,本質上是因為對人來說它也很困難。換句話說,這個任務本身的復雜度就非常高,遠遠高于下圍棋等看似復雜,但實際有明確規則的任務。語言本身具有創造力,在不同領域和時代不斷發生著變化。
三、發展歷程
1.NLP的發展歷程
圖靈測試:讓計算機來冒充人,與人展開對話。如果不足70%的人判對,也就是超過30%的人誤以為在和自己說話的是人而非計算機,那就可以認為這臺機器擁有人類智能。
1950年提出,是圖靈的個人看法,并非當前業界的追求
2.NLP的發展現狀
①深度學習大幅改變了NLP研究,極大的推進了NLP技術的發展。
②NLP技術已經深入生活的各個角落,輸入法、語音助手、搜索引擎、智能客服等大量依賴NLP技術的應用已經被推廣和使用。
③大語言模型的強大理解能力,讓人們看到了強人工智能的曙光。
四、常用工具和框架介紹
1.常用編輯器
推薦Pycharm、VSCode以及Linux中的vim
2.機器學習相關python框架
Tensorflow ?大名鼎鼎,工程配套完善
Pytorch ?學術界寵兒,調試方便,目前的主流
Keras ?高級封裝,簡單好用,現已和Tensorflow合體
Gensim ?訓練詞向量常用
Sklearn ?大量機器學習算法,如邏輯回歸,決策樹,支持向量機,隨機森林,KMeans等等,同時具有數據集劃分和各種評價指標的實現
Numpy ?各種向量矩陣操作