给我一份使用sentiment140 数据集实现情感分析的代码
以下是使用Sentiment140数据集进行情感分析的Python代码:
import pandas as pd
import numpy as np
import re
from sklearn.model_selection import train_test_split
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.metrics import accuracy_score
# 读取数据集
data = pd.read_csv('Sentiment140.csv', encoding='ISO-8859-1', header=None, names=['target', 'id', 'date', 'flag', 'user', 'text'])
# 删除无用的列
data = data.drop(['id', 'date', 'flag', 'user'], axis=1)
# 将目标值转换为 0 和 1
data['target'] = np.where(data['target'] == 0, 0, 1)
# 数据清洗
def preprocess_text(text):
# 去除 @ 用户名
text = re.sub('@[^\s]+', '', text)
# 去除链接
text = re.sub('((www\.[^\s]+)|(https?://[^\s]+))', '', text)
# 去除标点符号和数字
text = re.sub('[^a-zA-Z]+', ' ', text)
# 转换为小写
text = text.lower()
return text
data['text'] = data['text'].apply(preprocess_text)
# 划分数据集
X_train, X_test, y_train, y_test = train_test_split(data['text'], data['target'], test_size=0.2, random_state=42)
# 特征提取
vectorizer = CountVectorizer(stop_words='english')
X_train = vectorizer.fit_transform(X_train)
X_test = vectorizer.transform(X_test)
# 训练模型
model = MultinomialNB()
model.fit(X_train, y_train)
# 预测测试集
y_pred = model.predict(X_test)
# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print('Accuracy:', accuracy)
在这个代码中,我们首先读取Sentiment140数据集,并将目标值转换为0和1。然后我们进行数据清洗,去除@用户名、链接、标点符号和数字,并将所有文本转换为小写。接下来,我们使用CountVectorizer从文本中提取特征。最后,我们使用MultinomialNB训练朴素贝叶斯模型,并预测测试集。最后,我们计算准确率并打印出来
原文地址: https://www.cveoy.top/t/topic/hpC4 著作权归作者所有。请勿转载和采集!