什麼是自然語言處理 (NLP)?

Caroline Eppright | 內容策略師 | 2021 年 3 月 25 日

自然語言處理 (NLP) 的定義

自然語言處理 (NLP) 是人工智慧 (AI) 的分支,可讓電腦理解、產生及操控人類語言。自然語言處理能夠以自然語言文字或語音來查詢資料。這也稱為「語言輸入」。大多數消費者可能都與 NLP 互動過但沒有察覺。例如,NLP 是虛擬助理的核心技術,例如 Oracle Digital Assistant (ODA)、Siri、Cortana 或 Alexa。當我們問問這些虛擬助理的問題時,NLP 不僅能了解使用者的要求,還能以自然語言回應。NLP 可套用在書面文字和語音,並適用於所有人類語言。NLP 提供的工具其他範例包括 Web 搜尋、電子郵件垃圾郵件篩選、文字或語音的自動翻譯、文件彙總、情感分析,以及文法 / 拼字檢查。例如,某些電子郵件程式可以根據訊息的內容自動建議適當回覆訊息 - 這些程式使用 NLP 來讀取、分析及回應您的訊息。

其他術語大致上與 NLP 相同。自然語言理解 (NLU) 和自然語言產生 (NLG) 分別指使用電腦理解和產生人類語言。NLG 可提供發生事項的口頭說明。這也稱為「語言輸出」,使用「圖形語法」的概念,將有意義的資訊摘要到文字中。

在實務上會用 NLU 意指 NLP。透過電腦對所有人類語言的結構和意義的理解,讓開發人員和使用者使用自然的句子和溝通與電腦互動。運算語言學 (CL) 是研究人類語言運算層面的科學領域,而 NLP 是與建立理解、產生或操控人類語言之運算構件相關的工程學課程。

NLP 的研究在 1950 年代發明數位電腦後不久開始,NLP 皆以語言與 AI 繪製。不過,過去幾年來重大突破已經由機器學習提供技術支援,這是一支由 AI 開發的系統,從資料中學習和進行一般化。深度學習是一種機器學習,可以從大型資料集學習到非常複雜的模式,這表示從源自 Web 的資料集了解自然語言的複雜性。

自然語言處理的應用程式

自動化例行性任務:由 NLP 驅動的聊天機器人可以處理大量目前由人類代理處理的常規任務,以釋出員工時間,讓他們從事更具挑戰性和有趣的任務。例如,聊天機器人和數位助理可以辨識各種使用者要求、將它們與公司資料庫中的適合項目比對,以及對使用者形成適當的回應。

改善搜尋:NLP 可以透過關聯情境的詞義區分 (例如,「載體」在生物醫學和工業環境中的含義不同)、同義詞匹配 (例如在搜尋「車」(car) 的情況下擷取到提及「機動車」 (automobile) 的文件) 以及考慮形態變化 (這對非英語查詢很重要) 來改善文件和常見問題擷取的關鍵字比對搜。具備 NLP 技術的學術搜尋系統能夠大幅提升醫師、律師及其他專家相關最新研究的存取權限。

最佳化搜尋引擎:NLP 是一個很好的工具,透過分析搜索來最佳化您的內容,使您的企業在網路搜尋中獲得更高的排名。搜尋引擎會使用 NLP 排列結果等級,並且知道如何有效使用這些技術,讓競爭對手更容易排名。這將讓您的企業更清楚檢視資訊。

分析並組織大型文件集合:像是文件叢集和主題模型製作的 NLP 技術能夠簡化了解大型文件集合中內容多樣性的任務,例如公司報告、新聞文章或科學文件。這些技術通常用於法務探索目的。

社群媒體分析:NLP 可分析客戶評論與社群媒體意見,讓大量的資訊更具意義。情感分析會識別社會媒體意見流行的正面與負面意見,即時提供客戶情緒的直接測量。這會導致大額的償付金額下降,例如提高客戶滿意度和收益。

市場洞察力:有了 NLP 用來分析企業客戶語言的同時,您將能夠更妥善地處理他們想要的內容,同時更了解如何與客戶溝通。剖面導向的情感分析會檢測社交媒體中與特定方面或產品相關的情感 (例如,「鍵盤很棒,但螢幕太暗」),為產品設計和行銷提供直接可操作的資訊。

標準化內容:如果您的企業吸引了大量的使用者或客戶評論,NLP 使您能夠將所說的內容標準化,透過不僅分析文字,而且分析評論的語氣和目的來保持品質和禮貌。

使用自然語言處理的產業

NLP 可簡化及自動化各種不同的業務程序,尤其是涉及大量非結構化文字 (例如電子郵件、調查、社交媒體對話等) 的業務程序。有了 NLP,企業更能分析資料,做出適當的決策。以下是 NLP 的一些實際應用範例:

  • 醫療照護業:全世界的醫療照護系統全都移轉到電子病例,他們正面臨大量非結構化資料的問題。NLP 可用於分析及取得健康記錄的新見解。
  • 法律業:若要準備個案,律師必須花費時數來檢查大量文件集,並搜尋與特定個案相關的材料。NLP 技術可自動處理法律發現的過程,透過搬運大量文件,減少時間和人為錯誤。
  • 金融業:金融世界的行動速度極快,任何競爭優勢都是重要的。在金融領域中,貿易商會使用 NLP 技術,從公司文件和新聞發行版本自動挖掘資訊,擷取與投資組合和交易決策相關的資訊。
  • 客戶服務業:許多大型公司都使用虛擬助理或聊天機器人,協助回答基本的客戶查詢和資訊要求 (例如常見問題),在必要時傳送複雜的問題給真人處理。
  • 保險業:大型保險公司正透過與索賠相關的文件和報告,努力簡化業務完成方式。

NLP 技術概要

NLP 的機器學習模型:我們先前提到,現代 NLP 仰賴稱為機器學習的 AI 方法。機器學習可透過將資料集中的範例進行一般化預測。此資料集稱為訓練資料,而機器學習演算法會訓練此訓練資料,以產生可完成目標任務的機器學習模型。

例如,情感分析訓練資料由句子與其情感 (例如正面、負面或中立的情感) 的組合所構成。機器學習演算法會讀取此資料集並產生模型,可傳送句子作為輸入並傳回其句子。這種模型,可將句子或文件作為輸入並傳回該輸入的標籤稱為文件分類模型。文件分類器也可以用來依所提及的主題分類文件 (例如運動、金融、政治等)。

另一種模型可用來辨識及分類文件中的實體。對於文件中的每個字詞,模型會預測該字詞是否屬於所提及的實體,如果是,就會涉及那種實體。例如,在「XYZ Corp 昨天交易了 28 美元」中,「XYZ Corp」是公司實體,「28 美元」是貨幣金額,而「昨天」是日期。實體識別的訓練資料是文字的集合,每個字詞都會標示出該字所指的實體種類。這種模型會在輸入中產生每個字的標籤,稱為序列標籤模型。

序列對序列模型是最近新增 NLP 中使用的模型系列。序列對序列 (或 seq2seq) 模型將整個句子或文件作為輸入 (例如文件分類器),但它會產生一個句子或其他一些序列 (例如電腦程式) 作為輸出。(文件分類器只會產生單一符號作為輸出)。seq2seq 模型的範例應用程式包括機器翻譯,例如採用英文句子作為輸入,並傳回其法文句作為輸出;文件摘要 (其中輸出為輸入摘要),以及語意剖析 (其中輸入為英文的查詢或要求,輸出為實作該要求的電腦程式)。

深度學習、預先訓練的模型及傳輸學習:深度學習是 NLP 中最廣泛使用的機器學習項目。在 1980 年代,研究人員開發了神經網路,其中大量的原始機器學習模型被組合成一個網路:透過與大腦做類比,簡單的機器學習模型有時被稱為「神經元」。這些神經元以圖層排列,深度神經網路是多層的網路。深度學習是使用深度神經網路模型的機器學習。

由於深度神經網路有其複雜性,一般而言需要大量資料來訓練,並且處理也需要大量的運算能力和時間。現代化的神經網路 NLP 模型從多種來源被訓練,例如所有維基百科以及從網路擷取的資料。訓練資料大小可能為 10 GB 或更多,而且在高效能叢集上可能需要一或數週的時間,才能訓練深度神經網路。(研究人員發現,即使從較大的資料集獲得更深入的模型,也有更高的效能,因此目前有越來越多的種種種族可以訓練較大且較大的模型)。

深度神經網路貪婪的資料和運算需求似乎嚴重限制了它們的效用。不過,傳輸學習可讓訓練有素的神經網路進一步訓練,以大幅減少訓練資料和運算任務。最簡單的傳輸學習方式稱為微調。它包括首先在一個大型的通用資料集 (例如,維基百科) 上訓練模型,然後在一個更小的特定任務資料集上進一步訓練 (「微調」) 模型,該資料集會標籤為實際的目標任務。可能令人驚訝的是,微調資料集可能會非常小,也可能僅包含數百或甚至數十個訓練範例,而微調訓練則只需要幾分鐘的時間才能在單一 CPU 上完成。移轉學習可讓您在整個企業輕鬆部署深度學習模型。

現在終於有一個提供者生態系統,提供針對不同語言、資料集及預先訓練作業組合的預先訓練深入學習模型。您可以下載這些預先訓練的模型,並針對各種不同的目標任務加以微調。

瞭解建立 AI 卓越中心 (CoE) 如何提高 NLP 技術的成功率。我們的電子書提供使用進階機器學習模型有效建立 CoE 的秘訣。

NLP 處理技術範例

權杖化:權杖化將原始文字 (例如,一個句子或一份文件) 分割成一連串的權杖,例如字詞或子字詞部分。權杖化通常是 NLP 處理流程管道的第一個步驟。權杖通常是文字的循環順序,在稍後處理時會視為原子單位。它們可以是字詞、稱為「德語」的子字單位 (例如,在英文中如「un-」的字首或「-ing」的字尾),甚至是個別字元。

詞袋模型:詞袋模型將文件視為無序的權杖或字詞的集合 (一個詞袋就像一個集合,只是它會追蹤每個元素出現的次數)。由於他們完全忽略單字順序,詞袋模型將用「狗咬人」等句子與「人咬狗」。不過,詞袋模型經常用來提昇大型資訊擷取任務 (例如搜尋引擎) 的效率。他們可以對較長的文件產生接近最先進的結果。

停止文字移除:「停止文字」是稍後處理時忽略的權杖。它們通常是簡短且經常使用的字詞,例如「a」、「the」或「an」。詞袋模型與搜尋引擎通常會忽略停用詞,以減少資料庫內的處理時間與儲存。深度神經網路通常會將詞序考慮在內 (也就是說,它們不是詞袋模型),並且不去除停用詞,因為停用詞可以表達意義上的細微區別(例如「包裹弄丟」和「包裹掉了」的意思不一樣,儘管在去除停用詞後它們是一樣的)。

詞幹提取和詞形還原:語素是語言中最小的含意元素。一般來說,語素比文字小。例如,「revisited」包含字首的「re」,詞幹「visit」和過去式字尾「-ed」。詞幹提取和詞形還原會將字詞對應到它們的詞幹形式 (例如,「revisit」+過去式)。但深度學習模型通常都從訓練資料中學習這些規則,因此不需要明確的詞幹提取或詞形還原步驟。

詞性標記和語法剖析:詞性標籤 (PoS) 是給每個詞貼上其詞性標籤的過程 (例如,名詞、動詞、形容詞等)。語法剖析器可識別字詞如何結合成片語、子句及整個句子。PoS 標記是一種順序標籤任務,語法剖析是一種延伸的序列標籤任務,深度神經網路是 PoS 標記和語法剖析的最先進技術。在深度學習之前,PoS 標記和語法剖析是句子理解的必要步驟。不過,現代的深度學習 NLP 模型通常只享有 PoS 或語法資訊的主要優點 (如果有的話),因此在深層學習 NLP 中也不會使用 PoS 標記和語法剖析。

NLP 程式設計語言

Python:

NLP 程式庫和工具程式通常位於 Python 中,因此目前大部分 NLP 專案都是在 Python 中開發。Python 的互動式開發環境可讓您輕鬆開發和測試新的程式碼。

Java 和 C++:

對於處理大量資料,C++ 和 Java 通常偏好使用,因為它們可以支援更有效率的程式碼。

NLP 程式庫與開發環境

以下是一些熱門 NLP 程式庫的範例。

TensorFlow 與 PyTorch:這是兩個最受歡迎的深度學習工具程式。他們可以自由用於研究和商業用途。他們支援多種語言,主要語言是 Python。它們隨附大型的預先建置元件程式庫,因此即使是極為複雜的深入學習 NLP 模型通常只需要將這些元件插入在一起。他們也支援高效能運算基礎架構,例如具備圖形處理器單元 (GPU) 加速器的機器叢集。它們擁有絕佳的文件和教學課程。

AllenNLP:這是 PyTorch 和 Python 中實作之高階 NLP 元件 (例如簡單聊天機器人) 的程式庫。文件極佳。

HuggingFace:此公司在 TensorFlow 和 PyTorch 中發布數百種不同的預先訓練深層學習 NLP 模型,以及 TensorFlow 和 PyTorch 中的外掛程式軟體工具程式,讓開發人員能夠快速評估不同預先訓練模型在特定任務上執行的效能。

Spark NLP:Spark NLP 是一個適用於 Python、Java 和 Scala 程式設計語言之進階 NLP 的開源文字處理庫。其目標是為自然語言處理流程管道提供應用程式設計介面 (API)。它提供預先訓練的神經網路模式、流程管道和內嵌項目,同時支援訓練客製化模型。

SpaCy NLP: SpaCy 是免費的開放原始碼 Python 進階 NLP 資料庫,它是專門用來幫助建立能夠處理和理解大量文本的應用程式。SpaCy 因高度直覺易用而廣為人知,可以處理常見 NLP 專案中所需的許多任務。

總而言之,自然語言處理就是人工智慧開發的一個令人興奮的小區域,能推動像是搜尋引擎、聊天機器人、建議系統,以及語音轉文字系統等多種新產品。隨著電腦的人工介面持續離開按鈕、表單和網域特定語言,自然語言處理的成長需求將持續增加。基於這個原因,Oracle Cloud Infrastructure 致力於搭配 NLP 的效能最佳化運算資源配置和工具,提供企業內部部署效能。Oracle Cloud Infrastructure 提供 GPU 資源配置陣列,幾分鐘內即可開始進行 NLP 實驗。