NLP(VI):使用sklearn进行文本情感分类(上)
这一节我们使用sklearn训练分类模型以实现对文本数据的情感分类。
获得数据
这次的数据我已经上传了,可从以下链接下载:
训练集:https://download.csdn.net/download/swy_swy_swy/87581709
测试集:https://download.csdn.net/download/swy_swy_swy/87581702
数据标签为二分类标签,0为消极情绪,1为积极情绪。
加载数据
我们使用pandas处理csv文件。
import sklearn
import pandas as pd
import numpy as np
def csv_loader(filepath):
return pd.read_csv(filepath)
twitter_train_df = csv_loader('sentiment-train.csv')
twitter_test_df = csv_loader('sentiment-test.csv')
文本向量化
sklearn本质上是如何“阅读”一个文本呢?它本质上是不懂人类的语言的,一段文本对于它来说是一个词语的集合,或说“一袋子单词”(a bag of words)。在训练模型之前,需要对所有文本“向量化”,也就是每一个单词都有一个对应的编号,当然,相同的单词即使在统一数据集的不同样本中编号也是相同的。这样,一段文本就变成了一个编号序列,也就是一个向量。
我们使用sklearn的CountVectorizer来进行向量化:
from sklearn.feature_extraction.text import CountVectorizer
def feature_extracter(train_df, test_df, binary_flag=False, m_features=1000, has_test=True):
vectorizer = CountVectorizer(stop_words='english', max_features=m_features, binary=binary_flag)
train_texts = np.array(train_df['text']).tolist()
test_texts = []
if has_test:
test_texts = np.array(test_df['text']).tolist()
vecs