NLP 是什麼?自然語言處理原理與應用完整解析

一句話說明

NLP(Natural Language Processing,自然語言處理)是讓電腦理解、分析和生成人類語言的技術。你每天用的 ChatGPT、Google 翻譯、Gmail 的智慧回覆,底層都是 NLP。

為什麼 NLP 很難

人類語言充滿模糊性。「我看到他拿著望遠鏡」——是我用望遠鏡看到他,還是他手上拿著望遠鏡?人類靠上下文直覺判斷,但電腦需要一套方法來處理這種歧義。這種語意上的歧義在每一種語言中都存在,而且中文因為缺少空格和形態變化,歧義的情況比英文更多。

除了語意模糊,語言還有其他挑戰:同一件事有很多種說法(「很棒」「讚」「不錯」「可以」都可能是正面評價)、否定和反諷(「這個設計真『厲害』」可能是諷刺)、不同語言的文法結構差異(中文沒有時態變化、日文動詞放在句尾)。語言的另一個挑戰是上下文依賴性:「蘋果很好吃」和「蘋果發布了新產品」裡的「蘋果」指的是截然不同的東西,人類可以輕鬆區分,但電腦需要分析前後文才能判斷。

語言還有持續演化的特性。新的詞彙不斷出現(「躺平」「內卷」「摸魚」),舊的詞彙可能改變意義,網路用語和方言的用法和正式文法差異很大。一個在 2020 年訓練的 NLP 模型,可能無法理解 2025 年流行的網路用語。

NLP 的目標就是讓電腦在這些複雜情況下,仍然能正確理解和產生語言。這個目標至今還沒有被完美達成,但隨著 Transformer 架構和大型語言模型的發展,NLP 的能力已經有了巨大的進步。

NLP 的核心技術

斷詞(Tokenization)

把文字切成電腦可以處理的最小單位,這是所有 NLP 任務的第一步。英文通常以空格分詞,但中文沒有空格,需要專門的斷詞工具。

舉例:「台灣的自然語言處理技術」可能被切成「台灣 / 的 / 自然語言處理 / 技術」。切法不同會影響後續理解。如果斷詞工具把「自然語言處理」切成「自然 / 語言 / 處理」三個獨立的詞,模型就可能無法把它理解為一個專有名詞。同樣的,「台北市長」可以被切成「台北市 / 長」或「台北 / 市長」,斷詞的結果直接影響後續的語意分析。

中文的斷詞工具比較知名的有 jieba(結巴)和中研院的 CKIP。這些工具使用詞典和統計模型來決定最佳的切分方式。不過在面對新詞、專有名詞或領域術語時,仍然可能切錯。

現代的 LLM 使用 BPE(Byte Pair Encoding)等方法,將常見的字組合併成一個 token,不常見的字則拆成更小的片段。BPE 的優點是不需要預先定義詞典,能夠自動學習最佳的切分方式。例如「自然語言處理」這個常見的詞組可能被當作一個或兩個 token,而罕見的人名可能被拆成多個字元。這種方式在處理多語言文本時特別有效。

詞嵌入(Word Embedding)

把文字轉換成數字向量,讓電腦可以計算文字之間的「距離」。在向量空間裡,「國王」和「皇后」的距離會比「國王」和「蘋果」更近。這個概念的核心想法來自語言學的分布假說:一個詞的意義可以從它經常出現的上下文來推斷。也就是說,如果兩個詞經常出現在相似的上下文中,它們的意義就可能相近。

經典的 Word2Vec 模型發現了一個有趣的關係:「國王 - 男人 + 女人 ≈ 皇后」。這代表模型學到了語意關係,而不只是統計共現。這種向量運算能捕捉到類比關係,例如「東京 - 日本 + 法國 ≈ 巴黎」、「蘋果 - 水果 + 公司 ≈ 微軟」。

後來的 GloVe(Global Vectors)和 FastText 進一步改善了詞嵌入的品質。FastText 的特色是能處理沒見過的詞:它把每個詞拆成 n-gram(字元片段),即使是新詞也能從組成它的字元片段推斷出大致的意義。這對中文特別有用,因為中文的組詞規則比較規律——知道「電」和「腦」的意思,大致可以猜到「電腦」的意思。

現代的 LLM 使用的是情境化的詞嵌入(Contextual Embedding)。和 Word2Vec 不同,同一個詞在不同句子裡會有不同的向量表示。例如「蘋果很好吃」和「蘋果股價上漲」裡的「蘋果」,在情境化嵌入中會是不同的向量,因為模型會考慮整個句子的上下文來決定每個詞的向量表示。

語言模型(Language Model)

語言模型的核心任務是預測下一個詞。給定「今天天氣很」,模型要預測接下來最可能的字是「好」「熱」「冷」等。這個看似簡單的任務,實際上要求模型學會語言的文法、語意、甚至常識。GPT 系列的 Pre-trained 就是透過大量文本學習這種預測能力,在數十億個句子上反覆練習預測下一個詞,最終學會了語言的各種規律。

語言模型可以分為兩大類。自迴歸模型(Autoregressive Model)從左到右逐個預測下一個詞,GPT 系列就是這種。遮罩語言模型(Masked Language Model)隨機遮住句子中的某些詞,然後預測被遮住的部分,BERT 就是這種。兩種方法各有優缺點:自迴歸模型擅長生成文本,遮罩模型擅長理解文本。

現代的語言模型(如 GPT-4、Claude)是建立在 Transformer 架構之上,能處理很長的上下文,並且透過 attention 機制理解詞與詞之間的關係。這些模型的參數量從數十億到數千億不等,需要大量的計算資源來訓練。一個有趣的現象是,當模型的規模超過某個門檻時,會突然展現出小模型沒有的能力(例如推理能力),這被稱為「湧現能力」(Emergent Abilities)。

注意力機制(Attention Mechanism)

注意力機制是現代 NLP 的核心突破。它讓模型在處理一個詞時,能夠「注意」到句子中其他相關的詞。例如在處理「牠跑得很快,因為牠是獵豹」這個句子時,模型需要知道第二個「牠」指的是和第一個「牠」一樣的東西,而「快」的原因和「獵豹」有關。

在 Transformer 之前,RNN 和 LSTM 也能處理這種長距離依賴,但它們是按順序處理文字的,離得越遠的詞,關聯性越容易被遺忘。注意力機制讓模型可以直接計算任意兩個位置之間的關聯性,不受距離限制。

Self-attention(自注意力)是 Transformer 中使用的注意力機制。對於句子中的每個詞,它會計算這個詞和所有其他詞的相關性分數,然後用這些分數加權來更新詞的表示。例如在「小明去銀行存錢」中,模型會讓「銀行」更多地注意「存錢」這個上下文,從而判斷這裡的「銀行」是金融機構而非河岸。

Multi-head attention(多頭注意力)進一步讓模型從多個角度同時關注不同的語言特徵。某些「頭」可能專注於語法關係(主詞和動詞的對應),某些「頭」可能專注於語意關係(代名詞和它指代的對象),某些「頭」可能專注於語用關係(語氣和情境的對應)。

NLP 能做的事

NLP 的應用範圍很廣,以下列出幾個主要的任務類型和它們的實際用途。

命名實體辨識(NER)。從文本中找出人名、地名、組織名、日期等。例如從新聞中自動提取「台積電」(組織)、「劉德音」(人名)、「2026 年」(時間)。NER 在金融業的應用特別廣泛:自動從財報中提取數字、公司名稱、日期等結構化資訊,省去大量人工整理的時間。在法律領域,NER 可以從合約中自動識別甲方乙方、金額、期限等關鍵資訊。中文 NER 的挑戰在於中文人名沒有固定的格式和長度,不像英文有大寫字母做為線索。

情感分析(Sentiment Analysis)。判斷一段文字的情緒是正面、負面還是中性。常用在產品評論分析、社群媒體監控、客服對話分類。台灣的電商平台可以用情感分析自動檢測負面評論,讓客服團隊優先處理不滿意的客戶。進階的情感分析還能識別具體的情緒類型(憤怒、失望、困惑),以及情感的對象(對產品品質不滿、對物流速度不滿、對客服態度不滿)。情感分析的一個常見陷阱是反諷和文化特定的表達方式,例如台灣人說「還好啦」可能是客氣的正面評價,也可能是委婉的負面評價,NLP 模型在處理這種含蓄表達時仍然有困難。

機器翻譯。Google 翻譯、DeepL 的核心技術。現代的翻譯模型已經從逐句翻譯進化到理解整段上下文後再翻譯,品質大幅提升。機器翻譯的品質在日常對話和一般性文章上已經相當好,但在專業領域(法律、醫學、技術文件)仍然需要人工校對。一個有趣的應用是跨語言搜尋:用中文搜尋,但同時搜尋英文和日文的資料,翻譯引擎在背後幫你橋接語言差異。台灣企業經常需要處理中英日三語的文件,機器翻譯在這個場景下可以大幅提升效率。

文本摘要。把長文件濃縮成重點。分為抽取式(直接挑選原文中的重要句子)和生成式(重新組織語言產生新的摘要)。抽取式摘要的優點是不會產生幻覺(因為都是原文的句子),缺點是可能不夠流暢或缺少上下文。生成式摘要讀起來更自然,但有可能加入原文沒有的資訊。在企業中,文本摘要可以用來處理會議記錄、研究報告、法律文件的快速瀏覽。例如一份 50 頁的市場分析報告,AI 可以在幾秒鐘內產出一頁的重點摘要,讓高階主管快速掌握關鍵發現。

問答系統。給定一段文本和一個問題,找出答案。搜尋引擎的精選摘要、企業內部知識庫查詢都用到這個技術。問答系統可以分為封閉域(只在特定文件中找答案)和開放域(在大量資料中找答案)。RAG(檢索增強生成)是目前企業問答系統最常用的架構:先用搜尋引擎找到相關的文件段落,再用語言模型根據這些段落生成答案。這種方式兼顧了搜尋的廣度和生成的品質。

文本分類。自動將文件歸類到預定義的類別中。例如垃圾郵件過濾(垃圾 vs. 正常)、客服工單分類(退貨、技術問題、帳務問題)、新聞分類(政治、財經、體育、娛樂)。文本分類是 NLP 中最成熟的應用之一,在有足夠標注資料的情況下,準確率可以超過 95%。現代的 LLM 甚至可以做到零樣本分類(Zero-shot Classification),也就是不需要任何訓練資料,只靠提示詞就能進行分類。

技術演進:從規則到 Transformer

NLP 的發展歷程可以分成四個明確的階段,每個階段都帶來了顯著的能力提升。

第一階段:規則式(1950s-1990s)。人工撰寫語法規則和詞典,告訴電腦怎麼理解語言。例如定義「名詞 + 動詞 + 名詞」是一個合法的句子結構,或者定義「不」後面接動詞代表否定。ELIZA(1966)是這個時期的代表作——一個模擬心理治療師的程式,用模式匹配和替換規則來產生回應。缺點是規則寫不完,遇到規則沒覆蓋的情況就失敗。語言的變化太多,想用手動規則涵蓋所有情況根本不可能。

第二階段:統計式(1990s-2010s)。用大量標注好的語料庫,透過統計方法(如隱馬可夫模型、條件隨機場)讓電腦學習語言規律。比規則式靈活,但需要大量人工標注資料。IBM 的語音辨識系統和早期的 Google 翻譯都是這個階段的代表。統計式方法的核心思想是:與其告訴電腦語言的規則,不如讓電腦從大量的語言資料中自己學習規則。這個方法的瓶頸在於特徵工程——研究人員需要手動設計哪些特徵(例如前後幾個詞、詞性、位置)對任務有幫助,這個過程需要大量的領域知識和反覆實驗。

第三階段:深度學習(2010s-2017)。用 RNN(遞迴神經網路)和 LSTM(長短期記憶網路)處理序列資料。能學到更複雜的語言模式,不再需要手動設計特徵。模型可以自動從資料中學習哪些特徵重要,大幅降低了開發 NLP 應用的門檻。Word2Vec 的出現讓詞嵌入成為 NLP 的標準做法。但 RNN 和 LSTM 有一個根本的限制:它們是按順序處理文字的(一個詞接一個詞),無法平行計算,處理長文本時效率很差,而且容易遺忘前面的內容。

第四階段:Transformer(2017 至今)。Google 在 2017 年發表「Attention Is All You Need」論文,提出 Transformer 架構。用 self-attention 機制取代 RNN 的序列處理,可以平行計算,大幅提升效率。Transformer 架構的兩個分支改變了整個 NLP 領域:BERT(2018)開創了「預訓練 + 微調」的範式,GPT(2018 起)開創了「大規模生成模型」的範式。到了 GPT-3(2020),模型展現了 few-shot 學習的能力,也就是只給幾個範例就能完成新任務。GPT-4、Claude 等模型將這個路線推向了新的高度,能夠處理數十萬字的上下文,完成翻譯、寫作、程式碼生成、推理等多種任務。

NLP 任務的評估指標

評估 NLP 系統的表現需要量化指標。不同任務使用不同的指標。

分類任務(情感分析、文本分類)通常使用準確率(Accuracy)、精確率(Precision)、召回率(Recall)和 F1 分數。準確率是正確預測的比例,但在類別不平衡的情況下可能會誤導——如果 95% 的郵件都是正常郵件,一個把所有郵件都判為正常的模型也有 95% 的準確率。這時候要看精確率和召回率的平衡。

生成任務(機器翻譯、文本摘要)常用 BLEU、ROUGE 等自動指標。BLEU 計算機器翻譯和參考翻譯之間的 n-gram 重疊程度。ROUGE 計算機器摘要和參考摘要之間的重疊程度。這些自動指標的問題是:它們只衡量表面的文字重疊,無法評估語意的正確性和流暢度。因此高品質的 NLP 系統通常還需要人工評估。

問答系統使用 Exact Match(EM)和 F1 分數。EM 要求預測的答案和標準答案完全一致,F1 允許部分匹配。例如標準答案是「台北市」,模型回答「台北」,EM 算錯但 F1 會給部分分數。

在企業應用中,這些學術指標之外,更重要的是業務指標:AI 客服是否真的減少了人工客服的工作量?AI 翻譯是否加快了跨國溝通的效率?AI 摘要是否提升了決策的速度?

在企業中的應用

NLP 在企業中的應用已經很成熟,以下是幾個台灣企業最常見的應用場景。

客服自動化。用 NLP 分析客戶問題的意圖,自動分類和路由。簡單問題直接回答,複雜問題轉人工。台灣的電信業者和銀行已經大量導入 NLP 客服系統,能處理帳務查詢、方案說明、故障報修等常見問題。導入的效果通常是減少 30%-50% 的人工客服量,同時提升回覆速度(從平均 5 分鐘縮短到即時回覆)。客服自動化的關鍵是意圖識別的準確率——如果模型判斷錯誤,把退貨問題路由到技術支援,客戶體驗反而會更差。因此建議先從意圖明確、答案固定的問題開始(例如「營業時間是幾點」「退貨期限是多久」),再逐步擴展到需要理解上下文的問題。

合約分析。從大量合約中自動提取關鍵條款(金額、期限、違約條件),節省法務人員的時間。一間台灣的連鎖零售業者有超過 3000 份供應商合約,每次要查某個條件的合約有哪些,法務部要花好幾天人工翻閱。導入 NLP 合約分析系統後,這個查詢可以在幾分鐘內完成。合約分析的挑戰在於法律用語的特殊性和精確性要求——AI 提取的條款內容一定要經過法務人員確認,不能直接作為法律依據。

輿情監控。監控社群媒體和新聞,自動分析品牌提及的情感和趨勢。台灣的公關公司和品牌行銷團隊會使用 NLP 工具即時追蹤 PTT、Dcard、Facebook、新聞網站上的品牌提及,自動分析是正面、負面還是中性,並在負面輿情擴散前發出警報。輿情監控的一個實際案例是:某台灣食品品牌透過 NLP 即時偵測到一則抱怨產品異味的社群貼文,在貼文還沒大規模傳播之前就聯繫了消費者處理,避免了一場潛在的公關危機。

內部知識管理。用 NLP 搭配 RAG(檢索增強生成)建立企業知識庫,讓員工用自然語言查詢公司文件。傳統的企業知識管理系統通常需要精確的關鍵字搜尋,員工必須知道正確的用語才能找到資料。用 NLP 建立的知識庫可以理解自然語言的問題,例如員工問「新進員工需要做哪些手續」,系統可以從 HR 手冊、IT 帳號申請流程、安全訓練規定等多份文件中找到相關資訊,整合成一個回答。

電子郵件處理。自動分類收到的郵件(客訴、詢價、技術問題、垃圾郵件),並根據類別路由給對應的部門。進階的應用可以自動生成回覆草稿,讓員工只需要確認和微調就能發送。

安全與限制

資料隱私。NLP 模型需要文字資料來訓練和推論。企業使用時,需要確認敏感文件(合約、客戶資料、內部通訊)不會被傳到外部伺服器或用於模型訓練。使用雲端 NLP 服務時,務必確認服務條款中關於資料使用的條款。許多服務(如 ChatGPT 的商業版)承諾不會用客戶資料訓練模型,但免費版通常不做這個承諾。台灣的個資法要求企業在處理個人資料時必須符合特定目的限制,將客戶資料上傳到外部 NLP 服務可能違反這個要求。

偏見(Bias)。NLP 模型會繼承訓練資料中的偏見。例如情感分析可能對某些方言或非標準用語判斷不準確,命名實體辨識可能對非英文名字表現較差。在招聘場景中,NLP 篩選系統可能因為訓練資料中的偏見而歧視特定性別、年齡或種族的求職者。台灣企業使用 NLP 做人事決策時,需要定期檢查模型是否存在偏見,並建立人工審核機制。

幻覺(Hallucination)。生成式 NLP 模型可能產生看起來合理但事實錯誤的內容。在企業應用中,所有 AI 產出的關鍵資訊都需要人工驗證。特別是在法律、財務、醫療等高風險領域,AI 的幻覺可能導致嚴重的後果。一個實際的例子是:AI 法律助手引用了一個不存在的判例,律師如果沒有查核就提交給法院,後果不堪設想。

對抗性攻擊。NLP 模型容易受到特定輸入的誤導。例如在文本中加入不可見字元或同形字,就可能繞過內容過濾或改變分類結果。另一種常見的攻擊是 prompt injection:在輸入中嵌入特殊指令,讓模型忽略原本的任務指示。企業部署 NLP 系統時需要考慮這類攻擊向量,特別是面對外部使用者輸入的場景。建議在 NLP 系統前面加上輸入驗證和清理的機制。

中文處理的挑戰。中文沒有空格分隔、一字多義情況更多、繁體和簡體有轉換問題。目前主流模型的中文能力已經大幅改善,但在特定領域(如台灣法律用語、台語混用、客家話混用)仍有不足。台灣企業在評估 NLP 工具時,建議用實際的繁體中文資料做測試,而非只看官方公布的英文基準測試成績。

常見問題

NLP 和 LLM 有什麼關係?

LLM(大型語言模型)是 NLP 技術發展到目前最先進的形態。NLP 是整個領域的統稱,涵蓋所有讓電腦處理人類語言的技術和方法。LLM 是 NLP 領域中的一種特定方法,基於 Transformer 架構,透過在大量文本上預訓練來學習語言的規律。你可以把 NLP 想成「讓電腦懂語言」這個目標,LLM 是目前達成這個目標最有效的工具。在 LLM 出現之前,NLP 的每個任務(翻譯、摘要、情感分析)通常需要各自訓練一個專用模型。LLM 的突破在於一個模型就能處理多種語言任務。

NLP 需要學程式嗎?

如果是使用現成的 NLP 工具(ChatGPT、Google 翻譯),不需要。如果要客製化模型或建立 NLP 應用,通常需要 Python 和相關套件(如 Hugging Face Transformers、spaCy)。對於想要入門的人,飛飛建議先從使用端開始——用 ChatGPT 或 Claude 完成日常的語言處理任務(翻譯、摘要、分類),建立對 NLP 能力和限制的直覺。想深入技術端的話,可以從 Hugging Face 的線上課程開始,它提供了從概念到實作的系統學習路徑。

中文 NLP 比英文難嗎?

某些任務上確實更難,主要是因為中文沒有空格分詞、一字多義更多、缺乏像英文那麼大量的標注資料集。此外,中文的書寫系統(繁體、簡體)有轉換問題,台灣用語和中國用語有差異(「軟體」vs.「軟件」、「記憶體」vs.「內存」),這些都增加了中文 NLP 的複雜度。不過隨著多語言模型(如 mBERT、XLM-R)和中文專用模型的進步,差距已經縮小很多。Claude 和 GPT-4 等現代 LLM 在中文任務上的表現已經相當接近英文。

NLP 能百分之百理解人類語言嗎?

目前不能。NLP 模型能處理很多語言任務,但遇到反諷、文化特定的隱喻、高度依賴常識的推理時仍然會出錯。所謂的「理解」和人類的理解也有本質上的差異——模型是透過統計模式來模擬理解,而非真正「懂」語言的意義。一個經典的例子是:「時間是金錢」這個隱喻,NLP 模型可以學到這兩個概念在某些上下文中可以互換,但它可能無法理解為什麼人類會用這個隱喻(因為兩者都是有限的、可消耗的資源)。

企業導入 NLP 要花多少錢?

範圍很大。用 API 呼叫現成的 LLM 服務(如 Claude API),一個月幾百到幾千美元就能開始。自建模型或購買企業版 NLP 平台,則可能是數十萬到數百萬台幣的投資。建議從 API 開始試,驗證效果後再決定是否加大投入。一個常見的成本估算方式是:先做一個月的試點,記錄 API 用量和業務效果,再推算全面導入的成本和 ROI。

NLP 和生成式 AI 有什麼不同?

生成式 AI 是 NLP 的一個子集。NLP 涵蓋所有語言處理任務,包括分析型(情感分析、命名實體辨識)和生成型(文本生成、翻譯、摘要)。生成式 AI 專注於「產生新內容」的任務。當人們說「生成式 AI」時,通常指的是像 ChatGPT、Claude 這樣能夠生成自然語言回應的系統。但 NLP 的範圍比這更廣——垃圾郵件過濾、語音辨識、文件分類都是 NLP 任務,但它們不屬於生成式 AI。

相關文章

參考資料

  • Vaswani et al., "Attention Is All You Need," 2017
  • Jurafsky & Martin, "Speech and Language Processing" 教科書
  • Hugging Face NLP Course