「NLP」一文彙總自然語言處理主要研究方向
所謂自然語言處理,即NLP,就是透過用計算機來處理人類的語言、文字,從而可以代替人類做一些文書類的工作,例如諮詢、售後、海量資料處理以及公文閱讀與處理等。基於此,NLP領域延伸處理種類繁多的任務,這裡我總結了文字向量化、序列標註任務、文字分類、資訊提取、以及複雜應用場景五大類NLP任務,做一個介紹。
作者&編輯 | 小Dream哥
1 文字向量化
文字的向量化可謂是NLP進入深度學習時代的標誌。所謂文字的向量化(embedding),就是將文字用一定維度的向量來表示,也可以理解為文字的數值化。透過embedding,文字的語義、句法等特徵得以表徵,便於下游模型的處理。
例如,“人/如果/沒有/夢想/,/跟/鹹魚/還有/什麼/差別”,向機器學習模型直接輸入字串顯然是不明智的,不便於模型進行計算和文字之間的比較。那麼,我們需要一種方式來表示一個文字,這種文字表示方式要能夠便於進行文字之間的比較,計算等。最容易想到的,就是對文字進行向量化的表示。例如,根據語料庫的分詞結果,建立一個詞典,每個詞用一個向量來表示,這樣就可以將文字向量化了。
詞的向量化,最早嘗試是詞袋模型,後來證明,詞袋模型無法表徵詞序特徵,並且會帶來維度災難;Yoshua Bengio在2003年《A Neural Probabilistic Language Model》一文中提出了一種神經網路的方法,用於語言模型的計算, 詞向量作為副產品後來卻引起了業界的關注。2008年Collobert和Weston展示了 第一個能有效利用預訓練詞嵌入的研究工作,他們提出的神經網路架構,構成了當前很多方法的基礎。這一項研究工作還率先將詞嵌入作為 NLP 任務的高效工具。不過詞嵌入真正走向NLP主流還是Mikolov 等人在 2013 年做出的研究《Distributed Representations of Words and Phrases and their Compositionality》。Mikolov 等研究者在這篇論文中提出了連續詞袋模型CBOW和 Skip-Gram 模型,透過引入負取樣等可行性的措施,這兩種方法都能 學習高質量的詞向量。基於此,ELMO提出了一種相同詞能夠根據語境生成不同詞向量的模型。高質量的詞向量的獲得,結合LSTM、CNN等神經網路抽取器,使得NER,文字分類以及資訊抽取等任務獲得了長足的進步。
此外,基於詞向量的思想,從2018年開始,NLP中預訓練模型開始流行,BERT、GPT、ALBERT以及XLNET等模型不斷刷榜。
筆者曾經寫過的詞向量即預訓練語言模型相關的文章有:
【NLP-詞向量】詞向量的由來及本質
【NLP-詞向量】從模型結構到損失函式詳解word2vec
【NLP】 聊聊NLP中的attention機制
【NLP】 理解NLP中網紅特徵抽取器Tranformer
【NLP】 深入淺出解析BERT原理及其表徵的內容
【NLP】GPT:第一個引入Transformer的預訓練模型
【NLP】XLnet:GPT和BERT的合體,博採眾長,所以更強
2 序列標註任務
序列標註任務是NLP裡非常基礎和重要的任務,例如分詞、NER等都屬於序列標註任務,包括一些預測span的閱讀理解任務也可歸於此列。
分詞通常是中文自然語言處理的第一步(隨著深度學習模型表徵能力越來越強,慢慢證明,分詞未必是必要的);NER是非常重要和基礎的資訊抽取任務,在非常多的場景中都需要用到,例如聊天機器人中的槽位抽取、文字結構化過程中的實體抽取等等。
早期的序列標註任務,例如分詞,NER等主要是用HMM、CRF等機器學習模型;隨著深度學習的興起,LSTM+CRF變成序列標註任務的主流方法;當然,因為LSTM的若干缺點,不少NLP的從業者堅持使用CNN,因而基於膨脹卷積的序列標註模型得以提出。隨著transformer的提出,利用BERT等預訓練模型做NER這類任務開始變得流行,特別是抽取一些相對較長和複雜的實體,例如地址等。需要特別提出的是,有些情況下,正則匹配也是實體抽取的一種有效手段,可作為補充,例如時間實體等。
筆者曾經寫過的序列標註相關的文章有:
【NLP-NER】什麼是命名實體識別?
【NLP-NER】命名實體識別中最常用的兩種深度學習模型
【NLP-NER】如何使用BERT來做命名實體識別
【NLP實戰系列】Tensorflow命名實體識別實戰
【每週NLP論文推薦】 NLP中命名實體識別從機器學習到深度學習的代表性研究
3 文字分類
文字分類是一個不難理解的概念,即透過計算機對輸入文字進行分類,例如判斷“你真是個帥哥啊”這句話是褒義還是貶義。文字分類的應用場景很多,例如情感分類、機器人中的意圖識別等。
聽上去,分類問題似乎是個不難解決的問題,實際上文字分類有它的難度。當類別非常多或者類別與類別之間差異很小時,文字分類就開始變得困難;再者,有時需要考慮額外特徵才能分類正確,例如常常需要根據說話者語氣,才能判斷“你真是個帥哥啊”這句話是諷刺還是真心的讚美。
早期有一些基於傳統機器學習的文字分類,例如基於某種詞語特徵的的貝葉斯模型,SVM分類器等。
隨著深度學習的發展,LSTM+softmax/CNN+softmax模型變成了一種非常流行的文字分類架構,基於此Fasttext、textCNN等便捷高效的開源文字分類工具也開始流行。此外,結合Attention等技巧與概念能夠一定程度的提高模型的效果。
文字分類還有另外一種模式,即透過將文字向量化,再透過聚類獲得類別,NLTK等開源NLP工具都有便捷的Doc2vec API。如果覺得效果不好,可以試試BERT的【CLS】向量。此外,還可以增加TF-IDF模組,構建更有表達能力的DocVec。
筆者曾經寫過的文字分類相關的文章有:
【NLP實戰系列】樸素貝葉斯文字分類實戰
【NLP實戰】基於ALBERT的文字相似度計算
4 資訊提取任務
資訊提取(IE)的目標是將文字資訊轉化為結構化資訊,起初用於定位自然語言文件中的特定資訊。廣泛的看,資訊提取其實是一個非常寬泛的概念,從文字提出感興趣的內容就可以稱為資訊提取。在NLP中常常用實體抽取、關係抽取以及事件抽取等手段進行資訊抽取。
實體抽取是序列標記問題,上面已經介紹過,關係抽取以及事件抽取則通常轉化為分類的任務。關係抽取常常需要先確認subject以及object。所以,關係抽取任務常常伴隨著實體抽取的要求。
早期,資訊提取多使用正則和傳統的機器學習方法。隨著深度學習的快速發展,資訊提取技術也開始迅速發展。實體抽取與關係抽取從Pipline的方式進化到end-to-end的方式。使用的特徵抽取器也逐步進化,從LSTM/CNN到transformer。需要特別提出的是,BERT在資訊抽取方面表現出色,基於BERT和閱讀理解任務來做資訊抽取,是一種非常別緻的方式。
筆者曾經寫過的資訊抽取相關的文章有:
【文字資訊抽取與結構化】目前NLP領域最有應用價值的子任務之一
【文字資訊抽取與結構化】詳聊文字的結構化【上】
【文字資訊抽取與結構化】詳聊文字的結構化【下】
【文字資訊抽取與結構化】詳聊如何用BERT實現關係抽取
【每週NLP論文推薦】 掌握實體關係抽取必讀的文章
5 場景任務
此外,NLP還有一些複雜的應用場景,他們可能是多種NLP技術的應用和綜合,例如聊天機器人、知識圖譜、文字搜尋以及文字推薦系統等。
搜尋是NLP技術最早得到大規模應用的技術,例如百度搜尋、知乎話題搜尋以及各大網際網路公司的query搜尋技術,都涉及到語義匹配或文字分類技術。此外,大型的搜尋引擎,知識圖譜的搭建是必須的。
推薦系統在一定層面來說是跟搜尋場景相反的。搜尋是基於使用者的意圖,在文字庫中尋找匹配項;推薦則相反,通常基於積累的使用者資訊,給使用者推薦可能感興趣的內容。推薦系統常常涉及使用者畫像、標籤定義等過程,需要一定程度的依賴NLP技術。
聊天機器人是目前NLP技術應用最多的場景,基於NLP技術構建一個能夠替代客服、銷售、辦公文員是這一任務的終極目標。目前,聊天機器人已經以各種形態出現在人們面前,有站在銀行門口迎接顧客的迎賓機器人,有放在臥室床頭的智慧音響,有呆在各個APP首頁的助手機器人等等。在聊天機器人中,運用了文字分類、語義匹配、對話管理、實體識別等大量的NLP技術。要做好是一件難度大、超複雜的任務。
知識圖譜是AI時代一個非常重要基礎設施,大規模結構化的知識網路的搭建,能夠重塑很多的智慧場景。
關於搜尋和推薦系統我們會在後面的系列文章中進行介紹,關於知識圖譜和聊天機器人我們已經寫了大量的文章進行介紹,感興趣的同學可以看看,:
【NLP-ChatBot】我們熟悉的聊天機器人都有哪幾類?
【NLP-ChatBot】搜尋引擎的最終形態之問答系統(FAQ)詳述
【NLP-ChatBot】能幹活的聊天機器人-對話系統概述
【每週NLP論文推薦】 對話管理中的標誌性論文介紹
【每週NLP論文推薦】 開發聊天機器人必讀的重要論文
【知識圖譜】人工智慧技術最重要基礎設施之一,知識圖譜你該學習的東西
【知識圖譜】知識表示:知識圖譜如何表示結構化的知識?
【知識圖譜】如何構建知識體系:知識圖譜搭建的第一步
【知識圖譜】獲取到知識後,如何進行儲存和便捷的檢索?
【知識圖譜】知識推理,知識圖譜裡最“人工智慧”的一段
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69946223/viewspace-2679775/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Python 自然語言處理(NLP)工具庫彙總Python自然語言處理
- 自然語言處理(NLP)的主要範疇自然語言處理
- 自然語言處理(NLP)自然語言處理
- 自然語言處理(NLP)概述自然語言處理
- 自然語言處理NLP(四)自然語言處理
- 自然語言處理(NLP)系列(一)——自然語言理解(NLU)自然語言處理
- 自然語言處理(NLP)簡介 | NLP課程自然語言處理
- 自然語言處理NLP快速入門自然語言處理
- 自然語言處理(NLP)入門指南自然語言處理
- 自然語言處理NLP(6)——詞法分析自然語言處理詞法分析
- Pytorch系列:(六)自然語言處理NLPPyTorch自然語言處理
- 自然語言處理(NLP)路線圖 - kdnuggets自然語言處理
- 2023nlp影片教程大全 NLP自然語言處理教程 自然語言處理NLP從入門到專案實戰自然語言處理
- 什麼是NLP,NLP主要有什麼用,為什麼要學自然語言處理?自然語言處理
- 我的2017年文章彙總——自然語言處理篇自然語言處理
- 中文和英文NLP自然語言處理異同點分析自然語言處理
- NLP自然語言處理中的hanlp分詞例項自然語言處理HanLP分詞
- Python自然語言處理實戰(1):NLP基礎Python自然語言處理
- NLP1 —— Python自然語言處理環境搭建Python自然語言處理
- NLP神經語言學的12條假設(不是自然語言處理哪個NLP哈)自然語言處理
- 《NLP漢語自然語言處理原理與實踐》學習四自然語言處理
- 人工智慧的研究熱點:自然語言處理人工智慧自然語言處理
- 自然語言處理NLP(8)——句法分析b:完全句法分析自然語言處理
- 自然語言處理(NLP)- 一個英文拼寫糾錯系統自然語言處理
- Python自然語言處理Python自然語言處理
- 自然語言處理 NLP 基本概念大全,讓非技術也能看懂 NLP自然語言處理
- 目前常用的自然語言處理開源專案/開發包大彙總自然語言處理
- NLP漢語自然語言處理入門基礎知識自然語言處理
- 史丹佛NLP團隊釋出最新自然語言處理Python庫自然語言處理Python
- 聊天機器人(Chatbot)開發:自然語言處理(NLP)技術棧機器人自然語言處理
- Python自然語言處理 1 語言處理與PythonPython自然語言處理
- HanLP 自然語言處理 for nodejsHanLP自然語言處理NodeJS
- [譯] 自然語言處理真是有趣!自然語言處理
- 自然語言處理:分詞方法自然語言處理分詞
- 自然語言處理與分析(one)自然語言處理
- NLP 與 NLU:從語言理解到語言處理
- 自然語言處理NLP(7)——句法分析a:Chomsky(喬姆斯基)形式文法自然語言處理
- Pytext 簡介——Facebook 基於 PyTorch 的自然語言處理 (NLP) 框架PyTorch自然語言處理框架