自然語言處理有許多應用程式,例如情感分析、主題偵測、語言偵測、關鍵片語擷取,以及文件分類。
具體而言,您可以使用自然語言處理來:
- 分類檔案。 例如,您可以將它們標記為敏感性或垃圾郵件。
- 使用自然語言處理輸出進行後續的處理或搜尋。
- 藉由識別檔中的實體來摘要文字。
- 使用已識別的實體標記具有關鍵詞的檔。
- 使用標籤進行以內容為基礎的搜尋和擷取。
- 使用已識別的實體,摘要說明檔的主要主題。
- 使用偵測到的主題來分類用於瀏覽的檔。
- 根據選定的主題列舉相關文件。
- 評估文字情感以瞭解其正面或負面語氣。
隨著技術的進步,您可以使用自然語言處理來分類和分析文字數據。 您也可以使用它來增強跨不同領域的可解釋的 AI 功能。 語言模型的整合可大幅提升自然語言處理的功能。 GPT 和 BERT 之類的語言模型可以產生類人且上下文相符的文字。 這項功能可讓它們對複雜的語言處理工作非常有效。 它們藉由處理更廣泛的認知工作來補充現有的自然語言處理技術,這些工作可改善對話系統和客戶參與,特別是使用 Databricks 的 Dolly 2.0 等模型。
語言模型與自然語言處理之間的關聯性和差異
自然語言處理是一個全面的領域,包含處理人類語言的各種技術。 相反地,語言模型是自然語言處理的特定子集。 他們著重於深度學習來執行高階語言工作。 語言模型藉由提供進階文字產生和理解功能來增強自然語言處理,但與自然語言處理不一樣。 相反地,它們可透過啟用更複雜的語言處理,在更廣泛的自然語言處理網域中作為功能強大的工具。
備註
本文著重於自然語言處理。 自然語言處理與語言模型之間的關聯性示範,語言模型透過優越的語言理解和產生功能來增強自然語言處理程式。
潛在應用情境
可受益於自定義自然語言處理的商務案例包括:
用於金融、醫療保健、零售、政府和其他部門的手寫或機械生成文檔的文檔智能。
各行各業皆適用的自然語言處理任務,用於文字處理,例如命名实体识别(NER)、分类、摘要和关系提取。
這些工作可協助您自動擷取、識別和分析文件資訊,例如文字和非結構化數據。 這些工作的範例包括風險分層模型、本體分類和零售摘要。
用於語義搜尋的資訊檢索和知識圖建立。 此功能使得建立支援藥物發現和臨床試驗的醫學知識圖成為可能。
適用於零售、金融、旅遊和其他行業面向客戶的應用程式中對話式 AI 系統的文字翻譯。
分析中的情感和提升的情感智商,特別用於監控品牌形象和客戶反饋分析。
自動產生報表。 從結構化數據輸入合成併產生完整的文字報表。 這些任務有助於財務和合規性等部門,這些部門需要詳細的文件。
整合自然語言處理以進行語音辨識和自然交談功能的語音啟動介面。 這項整合可增強物聯網應用程式和智慧型手機裝置應用程式中的用戶互動。
可動態調整語言輸出以符合各種觀眾理解層級的調適性語言模型。 這項功能對於教育內容和輔助功能改善至關重要。
網路安全性文字分析,以即時分析通訊模式和語言使用方式。 此分析可協助您識別數位通訊中的潛在安全威脅,並提升偵測網路釣魚攻擊或錯誤資訊的能力。
Apache Spark 作為自定義的自然語言處理架構
Apache Spark 是功能強大的平行處理架構,使用記憶體內部處理來增強巨量數據分析應用程式的效能。 Azure Synapse Analytics、 Azure HDInsight 和 Azure Databricks 提供 Spark 處理功能的強固存取權。 此存取可協助您順暢地執行大規模數據作業。
Spark NLP 是一個有效率的架構,可以處理大量文字,以用於自定義的自然語言處理工作負載。 此開放原始碼連結庫使用 Python、Java 和 Scala 連結庫提供廣泛的功能。 這些連結庫提供您在 spaCy 和 Natural Language Toolkit 等突出自然語言處理連結庫中找到的複雜功能。 Spark NLP 包含進階功能,例如拼字檢查、情感分析和文件分類。 這些功能可協助您一致地確保最佳精確度和延展性。
Apache®、Apache Spark 和火焰標誌是 Apache Software Foundation 在美國和/或其他國家的註冊商標或商標。 使用這些標記不代表得到 Apache Software Foundation 的認可。
最近的公開基準檢驗會醒目提示 Spark NLP 的效能。 這些基準檢驗顯示比其他連結庫大幅提升速度。 Spark NLP 也會針對定型自定義模型維持可比較的精確度。 值得注意的是,Llama 2 模型與 OpenAI Whisper 的整合可增強交談介面和多語系語音辨識。 這些功能標誌著優化處理功能的重大進展。
Spark NLP 有效地利用分散式 Spark 叢集,以作為 Spark ML 的原生擴充功能,並直接在數據框架上運作。 此整合支援叢集的增強效能提升,有助於為檔分類和風險預測等工作建立統一的自然語言處理和機器學習管線。 MPNet 內嵌和廣泛的 ONNX 支援進一步擴充這些功能,並允許精確且內容感知的處理。
Spark NLP 可跨擴展的自然語言處理工作陣列提供高度精確的結果。 資料庫附帶預先建置的深度學習模型,可用於具名實體辨識、文件分類和情感偵測。 其功能豐富的設計包括預先定型的語言模型,可支援文字、區塊、句子和檔內嵌。
Spark NLP 的基礎結構會使用 CPU、GPU 和最新 Intel Xeon 晶片的優化組建進行調整,讓訓練和推斷程式能夠充分利用 Spark 叢集。 這項功能有助於確保跨各種環境和應用程式有效率地處理自然語言處理工作。
挑戰
資源處理:處理自由格式文字檔的集合需要大量的計算資源。 處理也會耗費大量時間。 這類處理通常牽涉到 GPU 計算部署。 支援量化的最新進展,例如 Llama 2 等 Spark NLP 架構中的優化,可協助更有效率地配置資源來簡化這些密集的工作。
標準化:若沒有標準化檔格式,當您使用自由格式文字處理從檔擷取特定事實時,很難達到一致精確的結果。 例如,從各種發票擷取發票號碼和日期會造成挑戰。 M2M100 等可調整的自然語言處理模型整合可改善多種語言和格式的處理精確度。 此改善的精確度會導致更一致的結果。
數據多樣性和複雜度:解決各種文件結構和語言細微差別仍然很複雜。 MPNet 內嵌等創新提供增強的內容理解,這會導致更直覺地處理各種文字格式和更可靠的數據處理。
關鍵選擇準則
在 Azure 中,Azure Databricks、Microsoft Fabric 和 HDInsight 等 Spark 服務會在搭配 Spark NLP 使用時提供自然語言處理功能。 Azure AI 服務是自然語言處理功能的另一個選項。 若要協助您決定要使用的服務,請考慮下列層面:
如果您想要使用預先建置或預先定型的模型,請考慮使用 AI 服務所提供的 API。 或者,您可以透過Spark NLP 下載您選擇的模型,其中包含適用於增強功能的進階模型,例如 Llama 2 和 MPNet。
如果您需要針對大量的文字數據集合定型自定義模型,請考慮搭配Spark NLP使用 Azure Databricks、Fabric 或 HDInsight。 這些平臺提供大量模型定型所需的計算能力和彈性。
如果您需要低階的自然語言處理功能,例如令牌化、詞幹分析、語彙和詞彙頻率/反向文件頻率(TF/IDF),請考慮搭配 Spark NLP 使用 Azure Databricks、Fabric 或 HDInsight。 或者,在您選擇的處理工具中使用開放原始碼軟體連結庫。
如果您需要簡單、高階的自然語言處理功能,例如實體和意圖識別、主題偵測、拼字檢查或情感分析,請考慮使用 AI 服務所提供的 API。 或透過Spark NLP 下載您選擇的模型,以針對這些工作使用預先建置的函式。
功能矩陣
下表摘要說明自然語言處理服務功能的主要差異。
一般功能
能力 | Spark 服務 (Azure Databricks、Fabric、HDInsight) 與 Spark NLP | AI 服務 |
---|---|---|
提供預訓練模型作為服務 | 是的 | 是的 |
REST API | 是的 | 是的 |
可程式性 | Python、斯卡拉 | 請參閱 支援的程式設計語言 |
支援處理大型數據集和大型檔 | 是的 | 否 |
標註器功能
能力 | Spark 服務 (Azure Databricks、Fabric、HDInsight) 與 Spark NLP | AI 服務 |
---|---|---|
句子偵測器 | 是的 | 否 |
深度句子偵測器 | 是的 | 是的 |
Tokenizer | 是的 | 是的 |
N-gram 生成器 | 是的 | 否 |
分詞 | 是的 | 是的 |
詞幹分析器 | 是的 | 否 |
詞形還原器 | 是的 | 否 |
詞性標記 | 是的 | 否 |
依存解析器 | 是的 | 否 |
翻譯 | 是的 | 否 |
停用詞清理器 | 是的 | 否 |
拼字更正 | 是的 | 否 |
標準化器 | 是的 | 是的 |
文字匹配器 | 是的 | 否 |
特遣部隊/以色列國防軍 | 是的 | 否 |
正則表達式匹配器 | 是的 | 內嵌在對話語言理解 (CLU) 功能中 |
日期匹配器 | 是的 | 在 CLU 中可以透過 DateTime 識別器实现 |
分塊器 | 是的 | 否 |
備註
Language Understanding (LUIS) 將於 2025 年 10 月 1 日淘汰。 您應該將現有的 LUIS 應用程式移轉至 Azure AI Language 的交談式語言理解 (CLU) 功能,以增強語言理解功能並提供新功能。
高階自然語言處理功能
能力 | Spark 服務 (Azure Databricks、Fabric、HDInsight) 與 Spark NLP | AI 服務 |
---|---|---|
拼字檢查 | 是的 | 否 |
綜述 | 是的 | 是的 |
問題解答 | 是的 | 是的 |
情感偵測 | 是的 | 是的 |
情感偵測 | 是的 | 支援意見挖掘 |
詞元分類 | 是的 | 是的,透過客製化模型 |
文字分類 | 是的 | 是的,透過客製化模型 |
文字表示法 | 是的 | 否 |
淨資產 | 是的 | 是,文字分析提供一組 NER |
實體辨識 | 是的 | 是的,透過客製化模型 |
語言偵測 | 是的 | 是的 |
支援英語以外的語言 | 是的,支援 200 多種語言 | 是的,支援超過 97 種語言 |
在 Azure 中設定 Spark NLP
若要安裝 Spark NLP,請使用以下程式碼,但將 <version>
替換為最新版本號。 如需詳細資訊,請參閱 Spark NLP 檔。
# Install Spark NLP from PyPI.
pip install spark-natural language processing==<version>
# Install Spark NLP from Anaconda or Conda.
conda install -c johnsnowlabs spark-natural language processing
# Load Spark NLP with Spark Shell.
spark-shell --packages com.johnsnowlabs.natural language processing:spark-natural language processing_<version>
# Load Spark NLP with PySpark.
pyspark --packages com.johnsnowlabs.natural language processing:spark-natural language processing_<version>
# Load Spark NLP with Spark Submit.
spark-submit --packages com.johnsnowlabs.natural language processing:spark-natural language processing_<version>
# Load Spark NLP as an external JAR after compiling and building Spark NLP by using SBT assembly.
spark-shell --jars spark-natural language processing-assembly-3 <version>.jar
開發自然語言處理管線
Spark NLP 在執行自然語言處理管線時,會遵循與傳統 Spark ML 機器學習模型相同的開發概念。 它也會套用特殊的自然語言處理技術。
Spark NLP 管線包含下列核心元件:
DocumentAssembler 是轉換程式,可將它轉換成 Spark NLP 可以處理的格式來準備數據。 此階段是每個 Spark NLP 管線的入口點。 DocumentAssembler 會讀取
String
列或Array[String]
,而且可以使用setCleanupMode
,預設為關閉,來預先處理文字。SentenceDetector 是一種批注器,可使用預先定義的方法來識別句子界限。 當
Array
設定為 true 時,它可以將每個偵測到的句子回傳在explodeSentences
中或分別作為獨立的數據列。Tokenizer 是一種批注器,可將原始文字分割成離散標記,例如單字、數位和符號,並將其輸出為
TokenizedSentence
。 Tokenizer 並未經過預訓練,並使用RuleFactory
中的輸入配置來建立分詞規則。 如果預設規則不足,您可以新增自定義規則。Normalizer 是負責精簡令牌的批注器。 Normalizer 會將正則表達式和字典轉換套用至乾淨的文字,並移除多餘的字元。
WordEmbeddings 是查閱批註器,會將標記對應至向量並加速語意處理。 您可以使用 來指定自定義內嵌字典
setStoragePath
,其中每一行都包含標記及其向量,並以空格分隔。 未解析的令牌預設為零向量。
Spark NLP 使用具有 MLflow 原生支援的 Spark MLlib 管線,這是可管理機器學習生命週期的開放原始碼平臺。 MLflow 具有下列主要元件:
MLflow 追蹤 會記錄實驗性執行,並提供強大的查詢功能來分析結果。
MLflow 專案 可讓您在各種平台上執行數據科學程序代碼。 此功能可增強可移植性和重現性。
MLflow 模型 透過一致的架構,支援跨不同環境進行多用途的模型部署。
Model Registry 藉由集中儲存版本來簡化存取和部署,以提供完整的模型管理。 此步驟有助於生產整備。
MLflow 與 Azure Databricks 等平臺整合,但您也可以在其他 Spark 型環境中安裝,以管理和追蹤您的實驗。 此整合可讓您使用 MLflow 模型登錄,讓模型可供生產用途使用。 您可以簡化部署程式並維護模型控管。
藉由搭配 Spark NLP 使用 MLflow,您可以確保自然語言處理管線的管理和部署更有效率。 您也可以解決延展性和整合的新式需求,同時支援進階技術,例如文字內嵌和語言模型調整。
貢獻者們
本文由 Microsoft 維護。 下列參與者撰寫本文。
主要作者:
- Freddy Ayala |雲端解決方案架構師
- Moritz Steller | 資深雲端解決方案架構師
若要查看非公開的 LinkedIn 個人檔案,請登入 LinkedIn。
後續步驟
Spark NLP 文件:
Azure 元件:
學習資源: