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