Python文本挖掘与情感分析案例实战
进行Python文本挖掘和情感分析需要几个步骤,包括数据收集、数据预处理、特征提取、模型训练和情感分析。下面是一个简单的实战项目,帮助你理解如何实现这些步骤。
案例简介
我们将处理一组推文数据,目标是对每条推文进行情感分析,判断其情感是积极、消极还是中性。
步骤 1:数据收集
首先,需要获取推文数据。你可以使用Twitter API收集实时数据,也可以使用开源的数据集。这里可以假设我们已经有一个CSV文件,包含推文和相应的情感标签(0表示消极,1表示中性,2表示积极)。
import pandas as pd
# 加载数据集
data = pd.read_csv('tweets.csv')
print(data.head())
步骤 2:数据预处理
数据预处理涉及清理文本数据,例如去除标点符号、停用词以及将文本转为小写。
import re
from nltk.corpus import stopwords
# 下载停用词
import nltk
nltk.download('stopwords')
# 数据预处理函数
def preprocess_text(text):
# 将文本转为小写
text = text.lower()
# 去除标点符号
text = re.sub(r'[^\w\s]', '', text)
# 去除停用词
stop_words = set(stopwords.words('english'))
text = ' '.join(word for word in text.split() if word not in stop_words)
return text
# 应用预处理
data['cleaned_text'] = data['text'].apply(preprocess_text)
print(data.head())
步骤 3:特征提取
通常使用TF-IDF向量化文本数据,将文本转换为数值特征向量。
from sklearn.feature_extraction.text import TfidfVectorizer
# 初始化TF-IDF向量化器
vectorizer = TfidfVectorizer(max_features=1000)
X = vectorizer.fit_transform(data['cleaned_text'])
# 标签
y = data['sentiment']
步骤 4:模型训练
选择一个机器学习模型(例如逻辑回归、SVM)进行训练。
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score
# 拆分数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 初始化逻辑回归模型
model = LogisticRegression(max_iter=100)
# 训练模型
model.fit(X_train, y_train)
# 预测
y_pred = model.predict(X_test)
# 评估模型
accuracy = accuracy_score(y_test, y_pred)
print(f'模型准确率: {accuracy:.2f}')
步骤 5:情感分析
如果你有新的推文,可以使用训练好的模型进行情感预测。
def predict_sentiment(new_text):
cleaned_text = preprocess_text(new_text)
features = vectorizer.transform([cleaned_text])
prediction = model.predict(features)
return prediction[0]
# 示例预测
new_tweet = "I love using this product, it's excellent!"
predicted_sentiment = predict_sentiment(new_tweet)
print(f'预测情感: {predicted_sentiment}')
总结
这只是一个简单的文本挖掘与情感分析流程。实际应用中,你可以进一步优化模型、调整参数,或者引入深度学习方法(如LSTM、BERT)来提高性能。此外,还可以考虑多语言支持或情感强度分析等高级功能。