
近年來,自然語言處理(NLP)的質量和可用性迅速增長,這有助於推動商業採用人工智能(AI)解決方案。在過去的幾年中,研究人員一直將較新的深度學習方法應用於NLP。數據科學家開始從傳統方法轉變為最先進的(SOTA)深神經網絡(DNN)算法,這些算法使用在大型文本語料庫中預計的語言模型。
該存儲庫包含用於構建NLP系統的示例和最佳實踐,該系統提供為Jupyter筆記本電腦和實用程序功能。存儲庫的重點是最先進的方法和常見場景,這些方法在研究涉及文本和語言的問題的研究人員和從業者中很受歡迎。
該存儲庫的目的是建立一組全面的工具和示例,以利用NLP算法,神經體系結構和分佈式機器學習系統的最新進展。該內容基於我們過去和與客戶的潛在未來交往以及與合作夥伴,研究人員和開源社區的合作。
我們希望這些工具可以通過簡化從定義業務問題到按數量級開發解決方案的經驗來大大減少“上市時間”。此外,示例筆記本將作為指南,展示最佳實踐和用多種語言的工具使用。
在轉移學習,變形金剛和深層體系結構的時代,我們認為驗證的模型為許多現實世界中的問題提供了統一的解決方案,並允許輕鬆處理不同的任務和語言。因此,我們將優先考慮此類模型,因為它們在膠水和小隊排行榜等多個NLP基准上實現了最先進的結果。這些模型可用於許多應用程序,從簡單的文本分類到復雜的智能聊天機器人。
請注意,對於某些NLP問題,您可能不需要構建自己的模型。相反,存在預先構建或易於自定義的解決方案,不需要任何自定義的編碼或機器學習專業知識。我們強烈建議您評估這些是否可以充分解決您的問題。如果這些解決方案不適用,或者這些解決方案的準確性不夠,則可能需要採用更複雜且耗時的自定義方法。以下認知服務提供了簡單的解決方案來解決常見的NLP任務:
文本分析是一組預先訓練的REST API,可以稱為情感分析,關鍵短語提取,語言檢測和命名實體檢測等等。這些API開箱即用,需要最少的機器學習專業知識,但自定義功能有限。
QNA Maker是一種基於雲的API服務,可讓您在現有數據上創建對話性問答層。使用它來構建知識庫,通過從半結構化內容(包括常見問題解答,手冊和文檔)中提取問題和答案來構建知識庫。
語言理解是SaaS的服務,可以在給定用戶提供的培訓集的情況下培訓和部署模型作為REST API。您可以通過執行簡單的步驟來提供示例話語並標記它們來進行意圖分類以及命名實體提取。它支持積極學習,因此您的模型始終保持學習和進步。
對於此存儲庫,我們的目標受眾包括數據科學家和機器學習工程師,NLP知識水平不同,因為我們的內容僅是源頭,並且針對自定義機器學習建模。所提供的實用程序和示例旨在作為現實世界中NLP問題的解決方案加速器。
存儲庫旨在沿著三個單獨的維度擴展NLP功能
我們的目標是為常見任務和方案(例如文本分類,命名實體識別等)提供端到端示例。
我們旨在為每個受支持的方案提供多個模型。當前,在大多數情況下都支持基於變壓器的模型。我們一直在努力整合Transformers軟件包,從擁抱臉部,該軟件包使用戶可以輕鬆地加載預告片的型號並將其調整為不同的任務。
我們強烈贊同“ Emily Bender”制定的多語言原則
該存儲庫旨在支持所有場景中的非英語語言。在存儲庫中使用的預訓練模型,例如Bert,FastText開箱即用的100多種語言。我們的目標是用盡可能多的語言提供端到端的示例。我們鼓勵在這一領域的社區貢獻。
以下是存儲庫中涵蓋的常用NLP方案的摘要。每個方案都在一個或多個jupyter筆記本示例中演示,這些示例使用了模型和存儲庫實用程序的核心代碼庫。
| 設想 | 型號 | 描述 | 語言 |
|---|---|---|---|
| 文本分類 | Bert,Distillbert,Xlnet,Roberta,Albert,XLM | 文本分類是一種有監督的學習方法,用於學習和預測文檔的文本內容類別或類別的類別。 | 英語,中文,印地語,阿拉伯語,德語,法語,日語,西班牙語,荷蘭語 |
| 命名實體識別 | 伯特 | 命名實體識別(NER)是將文本的單詞或關鍵短語分類為預定義實體的任務。 | 英語 |
| 文本摘要 | Bertsumext Bertsumabs UNILM(S2S-FT) 微型 | 文本摘要是將輸入文本匯總到文本較短段落中的語言生成任務。 | 英語 |
| 需要 | 伯特,Xlnet,羅伯塔 | 文本需要是對兩個自然語言文本(文本和假設)之間二進制關係進行分類的任務,以確定文本是否與假設一致。 | 英語 |
| 問題回答 | Bidaf,Bert,Xlnet | 問答(QA)是用自然語言檢索或生成給定查詢的有效答案的任務,並提供了與查詢有關的段落。 | 英語 |
| 句子相似性 | 伯特,登森 | 句子相似性是給定兩對文本文檔計算相似性分數的過程。 | 英語 |
| 嵌入 | Word2Vec fastText 手套 | 嵌入是將單詞或文本轉換為實際數字的連續矢量空間(通常是低維度)的過程。 | 英語 |
| 情感分析 | 依賴性解析器 手套 | 提供了使用Azure ML和Intel NLP Architect的火車和使用基於方面的情感分析的示例。 | 英語 |
在解決NLP問題的同時,從預先建立的認知服務開始總是很好。當需求超出了預先構建的認知服務的範圍,並且當您想搜索自定義機器學習方法時,您會發現該存儲庫非常有用。首先,請導航到“設置指南”,該指南列出了有關如何設置環境和依賴項的說明。
Azure機器學習服務是一種用於訓練,部署,自動化和管理機器學習模型的雲服務,所有這些服務都是雲提供的大規模的。 Azureml在不同情況下的筆記本中介紹,以提高按大規模開發自然語言系統的效率,並針對各種AI模型開發相關的任務,例如:
要成功運行這些筆記本,您將需要Azure訂閱或免費嘗試Azure 。筆記本中可能還有其他Azure服務或產品。這些介紹和/或參考將在筆記本本身中提供。
我們希望開源社區能夠為內容做出貢獻,並帶來最新的SOTA算法。該項目歡迎貢獻和建議。在貢獻之前,請參閱我們的貢獻指南。
用NLP-Recipes的最新版本引導您的文本摘要解決方案
Doccano變得輕鬆的文字註釋
使用NLP存儲庫來分析印地語文本數據
通過Azure機器學習加快自然語言處理解決方案的開發
以下是我們喜歡和認為對NLP任務有用的相關存儲庫的列表。
| 存儲庫 | 描述 |
|---|---|
| 變壓器 | 一個很棒的Pytorch圖書館,可以通過基於流行的變壓器模型的實現來擁抱面孔。我們在此存儲庫中廣泛使用了他們的包裹,並非常感謝他們的努力。 |
| Azure機器學習筆記本 | ML和深度學習示例,具有Azure機器學習。 |
| Azureml-Bert | 使用Azure機器學習服務進行預訓練和微調BERT的端到端食譜。 |
| 大量的 | 質量:掩蓋序列,以預先訓練用於語言的訓練。 |
| MT-DNN | 多任務深度神經網絡,用於自然語言理解。 |
| Unilm | 統一語言模型預訓練。 |
| 對話 | 對話:大規模生成的預培訓,用於會話響應生成 |
| 建造 | 分支 | 地位 |
|---|---|---|
| Linux CPU | 掌握 | |
| Linux CPU | 舞台 | |
| Linux GPU | 掌握 | |
| Linux GPU | 舞台 |