TF-IDF在情感分析中的應用
情感分析是一種自然語言處理方法,對於識別和分類文字(例如社交媒體帖子或產品評價)中表達的情感至關重要。企業可以透過這項能力來了解客戶對其產品或服務的態度,從而改進其產品並做出資料驅動的決策。詞頻-逆文件頻率 (TF-IDF) 是情感分析中一種常用的技術。它確定文字中詞語相對於整個語料庫的重要性,有助於識別表達正面或負面情緒的關鍵短語。透過使用TF-IDF,情感分析演算法可以精確地對文字的情感進行分類。本文將深入探討TF-IDF及其在情感分析中的應用。
什麼是TF-IDF?
TF-IDF是一種統計指標,用於評估術語在一個文字中相對於整個語料庫的重要性。它包含兩個組成部分:術語頻率 (TF) 元件,評估某個詞語在一個特定文件中出現的頻率;以及逆文件頻率 (IDF) 元件,評估某個詞語在整個語料庫中出現的頻率。TF-IDF對於情感分析非常有用,因為它可以處理大量的文字資料,識別文字中的詞語和短語,並賦予獨特的短語更高的權重。由於其計算效率高,它是處理大型資料集的實用選擇。
TF-IDF在情感分析中的應用
在這個專案中,書面檔案將被分類為正面、負面或中性。我們將使用流行的Python程式語言、一個真實世界的資料集和機器學習框架。該過程包括載入庫和IMDb電影評論資料集,執行預處理操作(如去除停用詞和分詞),使用scikit-learn的TfidfVectorizer建立TF-IDF矩陣,使用train_test_split將資料集劃分為訓練集和測試集,以及使用TF-IDF矩陣作為特徵和情感標籤作為目標在訓練集上構建邏輯迴歸模型。
匯入必要的庫和收集資料集
我們將使用IMDb電影評論資料集,該資料集包含50,000條電影評論及其情感。可以在此處下載資料集:下載
import pandas as pd import numpy as np import re import nltk nltk.download('stopwords') from nltk.corpus import stopwords from nltk.stem.porter import PorterStemmer from sklearn.feature_extraction.text import TfidfVectorizer from sklearn.model_selection import train_test_split from sklearn.linear_model import LogisticRegression from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score # Step 1 − Collecting the Dataset df = pd.read_csv('/content/sample_data/IMDB_Dataset.csv')
預處理資料集
原始文字資料的預處理將包括去除停用詞、大小寫轉換和標點符號。我們還將使用分詞和詞幹提取來降低資料的維度。
# Step 2− Preprocessing the Data corpus = [] stemmer = PorterStemmer() for i in range(0, len(df)): review = re.sub('[^a-zA-Z]', ' ', df['review'][i]) review = review.lower() review = review.split() review = [stemmer.stem(word) for word in review if word not in set(stopwords.words('english'))] review = ' '.join(review) corpus.append(review)
建立TF-IDF矩陣
我們將使用預處理後的資料建立一個詞頻-逆文件頻率 (TF-IDF) 矩陣。TF-IDF矩陣顯示每個文件中每個詞語相對於整個語料庫的比例重要性。
# Step 3− Creating the TF-IDF Matrix vectorizer = TfidfVectorizer(max_features=5000) X = vectorizer.fit_transform(corpus).toarray() y = df.iloc[:, 1].values
分割資料集
我們將使用該資料集建立訓練集和測試集。80%的資料集將用於訓練機器學習模型,其餘20%將用於測試。
# Step 4− Splitting the Dataset X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
訓練模型
我們將使用TF-IDF矩陣作為特徵和情感標籤作為目標,在訓練集上訓練機器學習模型。我們將針對這個問題使用邏輯迴歸模型。
# Step 5− Training the Model model = LogisticRegression() model.fit(X_train, y_train)
評估模型
我們將使用多種指標來評估模型在測試集上的效能,包括準確率、精確率、召回率和F1分數。
# Step 6− Evaluating the Model y_pred = model.predict(X_test) accuracy = accuracy_score(y_test, y_pred) precision = precision_score(y_test, y_pred, average='weighted') recall = recall_score(y_test, y_pred, average='weighted') f1 = f1_score(y_test, y_pred, average='weighted') print(f"Accuracy: {accuracy:}") print(f"Precision: {precision:}") print(f"Recall: {recall:}") print(f"F1 score: {f1:}")
結果
Accuracy− 0.886 Precision− 0.8863485349216157 Recall− 0.886 F1 score− 0.8859583626410477
該專案使用TF-IDF對IMDb電影評論資料集進行情感分析。我們對原始文字資料進行了預處理,包括去除停用詞、僅大寫特定詞語、去除標點符號、分詞和詞幹提取。在將資料集分成訓練集和測試集後,我們使用預處理後的資料建立了一個TF-IDF矩陣。在訓練集上訓練邏輯迴歸模型後,我們使用準確率、精確率、召回率和F1分數來評估該模型在測試集上的效能。
結論
總而言之,TF-IDF是一種強大的文字資料特徵提取方法,常用於包括情感分析、文字分類和資訊檢索在內的自然語言處理應用中。因為它考慮了每個詞語在每個文件中相對於整個語料庫的重要性,所以它優於簡單的基於詞頻的方法。