欢迎访问宙启技术站
智能推送

使用Python编写一个基于SVM的情感分析分类器

发布时间:2023-12-25 17:54:54

情感分析是一种通过分析和识别文本中的情感和情感倾向的技术。它可用于自然语言处理、社交媒体挖掘、舆情监测等领域。支持向量机(Support Vector Machine,SVM)是一种常用的机器学习算法,它可以在两个类别之间进行二元分类。

下面将使用Python编写一个基于SVM的情感分析分类器。我们将使用著名的IMDb电影评论数据集进行训练和测试。

首先,我们需要安装必要的Python库,包括nltk(自然语言处理工具包)、scikit-learn(机器学习工具包)和numpy(数值计算工具包)。可以使用以下命令进行安装:

pip install nltk scikit-learn numpy

接下来,我们需要导入所需的库:

import nltk
import numpy as np
from sklearn import svm
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics import accuracy_score
from sklearn.model_selection import train_test_split

然后,我们需要下载并使用nltk库中的停用词。停用词是在文本中经常出现但对情感分析结果没有贡献的常用词汇,例如“the”和“and”。可以使用以下命令下载停用词:

nltk.download('stopwords')

导入停用词并加载IMDb数据集:

from nltk.corpus import stopwords

stop_words = set(stopwords.words("english"))

# Load data
reviews = nltk.corpus.movie_reviews
reviews.categories()  # ['neg', 'pos']

接下来,我们需要将文本数据转换为数值特征。我们使用TfidfVectorizer将每个文本转换为词频-逆文档频率矩阵。TfidfVectorizer将文本转换为向量,其中每个向量表示一个词的出现频率相对于整个文档集合的频率。

# Convert text data to numerical feature vectors
vectorizer = TfidfVectorizer(stop_words=stop_words, max_features=5000)
X = vectorizer.fit_transform([reviews.raw(fileid) for fileid in reviews.fileids()])
y = [reviews.categories(fileid)[0] for fileid in reviews.fileids()]

接下来,我们将数据集划分为训练集和测试集。我们将80%的数据用于训练,20%的数据用于测试。

# Split dataset into train and test sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

然后,我们可以使用SVM算法进行训练和预测。我们将使用scikit-learn库中的svm.SVC类。

# Train SVM classifier
clf = svm.SVC(kernel='linear', C=1)
clf.fit(X_train, y_train)

# Predict sentiment on test set
y_pred = clf.predict(X_test)

# Calculate accuracy
accuracy = accuracy_score(y_test, y_pred)
print("Accuracy:", accuracy)

最后,我们可以使用该分类器对新的文本进行情感分析。以下是一个示例:

# Classify a new review
new_review = "I loved the movie! The acting was great."
new_review_vector = vectorizer.transform([new_review])
prediction = clf.predict(new_review_vector)
print("Prediction:", prediction)

这个基于SVM的情感分析分类器可以对文本进行情感分类。你可以使用IMDb数据集进行训练和测试,并使用该分类器进行新评论的分类。

总结:通过上述步骤,我们在Python中构建了一个基于SVM的情感分析分类器,该分类器可以将文本数据转换为数值特征,并使用SVM算法进行预测。