AI 第19天:自然語言處理基礎(NLP)
自然語言處理(NLP)是人工智慧中的重要領域,主要研究如何讓機器理解、解釋和生成人類語言。今天,我們將學習 NLP 的基本概念與應用,並實作簡單的文字處理範例。
課程目標
- 瞭解 NLP 的核心概念與應用場景。
- 學習文字前處理技術(如分詞、去除停用詞、詞幹化)。
- 使用 Python 實作基本 NLP 操作。
課程內容
1. NLP 的核心概念
1.1 NLP 是什麼?
NLP 是一門結合語言學與計算機科學的技術,讓機器能理解和生成人類語言。
1.2 NLP 的應用場景
- 機器翻譯:Google 翻譯、DeepL。
- 情感分析:分析文本中情感(正面、負面、中立)。
- 語音助手:如 Siri、Alexa 等。
- 文本摘要:提取長文的核心內容。
2. 基本的 NLP 操作
2.1 文字前處理流程
在進行 NLP 任務前,通常需要對文本進行清理與標準化,包括以下步驟:
- 文字正規化:將文字轉為小寫,去除標點符號。
- 分詞(Tokenization):將文本拆分成單詞或句子。
- 去除停用詞(Stopwords Removal):移除如 “the”、”is” 等無意義詞語。
- 詞幹化與詞形還原(Stemming & Lemmatization):將單詞還原為其基本形式。
3. 使用 NLTK 庫進行 NLP 操作
NLTK(Natural Language Toolkit)是 Python 中最流行的 NLP 庫之一,提供多種文字處理功能。
3.1 基本文字處理範例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import nltk
from nltk.tokenize import word_tokenize, sent_tokenize
from nltk.corpus import stopwords
from nltk.stem import PorterStemmer, WordNetLemmatizer
# 確保下載必要的資源
nltk.download('punkt')
nltk.download('stopwords')
nltk.download('wordnet')
# 範例文本
text = "Natural Language Processing is a fascinating field of artificial intelligence."
# 文字正規化(轉小寫)
text = text.lower()
# 分詞(Tokenization)
words = word_tokenize(text)
print("分詞結果:", words)
# 去除停用詞
stop_words = set(stopwords.words('english'))
filtered_words = [word for word in words if word not in stop_words]
print("去除停用詞:", filtered_words)
# 詞幹化(Stemming)
stemmer = PorterStemmer()
stemmed_words = [stemmer.stem(word) for word in filtered_words]
print("詞幹化結果:", stemmed_words)
# 詞形還原(Lemmatization)
lemmatizer = WordNetLemmatizer()
lemmatized_words = [lemmatizer.lemmatize(word) for word in filtered_words]
print("詞形還原結果:", lemmatized_words)
4. 簡單的 NLP 應用:情感分析
情感分析是一個常見的 NLP 任務,用於判斷文本中的情緒傾向。
4.1 使用 TextBlob 進行情感分析
TextBlob 是一個簡單易用的 NLP 庫,適合快速原型設計。
1
2
3
4
5
6
7
8
9
10
11
from textblob import TextBlob
# 範例文本
text = "I love natural language processing. It's amazing and fun to learn."
# 建立 TextBlob 物件
blob = TextBlob(text)
# 情感分析
print("情感分數:", blob.sentiment.polarity)
print("主觀性分數:", blob.sentiment.subjectivity)
5. 深入學習 NLP 的工具與資源
- 進階 NLP 庫:
- Spacy:高效能 NLP 工具,適合大規模文本處理。
- Hugging Face Transformers:深度學習 NLP 模型的領導者,支援 BERT、GPT 等。
- 數據集資源:
- IMDB:用於情感分析的電影評論數據集。
- TREC:用於問題分類的數據集。
課後作業
- 嘗試將以上範例中的文本替換為其他內容,觀察結果差異。
- 使用 Spacy 的命名實體識別(NER)功能,分析文本中的人名、地點等資訊。
- 搜尋開源 NLP 數據集,嘗試進行初步分析。
本文章以 CC BY 4.0 授權