以下是完成上述任務的Python代碼,可在Jupyter Notebook中運行。此代碼包含了使用sklearn
中的邏輯回歸模型進行情感分析,以及按日期統計積極和消極評論數量的功能。
import pandas as pd
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score# 假設數據已經完成預處理,且包含 'comment'(評論內容)、'sentiment'(情感標簽,0或1)和 'date'(評論日期)列
# 加載數據
data = pd.read_csv('preprocessed_comments.csv')# 劃分訓練集和測試集
X = data['comment']
y = data['sentiment']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 使用TF-IDF進行文本向量化
vectorizer = TfidfVectorizer()
X_train_vec = vectorizer.fit_transform(X_train)
X_test_vec = vectorizer.transform(X_test)# 訓練邏輯回歸模型
model = LogisticRegression()
model.fit(X_train_vec, y_train)# 在測試集上進行預測
y_pred = model.predict(X_test_vec)# 計算模型準確率
accuracy = accuracy_score(y_test, y_pred)
print(f"模型準確率: {accuracy}")# 對所有評論進行情感預測
all_comments_vec = vectorizer.transform(data['comment'])
data['predicted_sentiment'] = model.predict(all_comments_vec)# 按日期歸類,統計每天積極和消極評論的數量
daily_stats = data.groupby('date')['predicted_sentiment'].value_counts().unstack(fill_value=0)
daily_stats.columns = ['negative_count', 'positive_count']
print(daily_stats)# 保存結果,可用于后續的LSTM預測分析
data.to_csv('sentiment_analysis_results.csv', index=False)
代碼說明:
- 數據加載:從CSV文件中加載已經完成預處理的評論數據。
- 數據劃分:將數據劃分為訓練集和測試集,比例為8:2。
- 文本向量化:使用TF-IDF將文本轉換為數值特征。
- 模型訓練:使用邏輯回歸模型進行訓練。
- 模型評估:在測試集上評估模型的準確率。
- 情感預測:對所有評論進行情感預測,并將預測結果添加到原始數據中。
- 統計分析:按日期對評論進行歸類,統計每天積極和消極評論的數量。
- 結果保存:將情感分析結果保存為CSV文件,以便后續進行LSTM預測分析。
你需要把代碼中的preprocessed_comments.csv
替換成實際的預處理后的數據文件路徑。