文本数据进行处理时,有些文本不是结构化存储的,处理这样的数据,比较常用的文本特征表示方法为词袋法,不考虑词语出现的顺序,只是将训练文本中每个出现过的词汇单独视为一列特征。而特征数值的常见计算方式有两种:CountVectorizer和TfidVectorizer。对于每一条训练文本,CountVectorizer只考虑每种词汇在该条训练文本中出现的频率;而TfidVectorizer除了考量某一词汇在当前文本中出现的频率之外,同时关注包含这个词汇的文本条数的倒数。相比之下,训练样本越多,TfidVectorizer更加具有优势。
#导入新闻文本数据抓取器
from sklearn.datasets import fetch_20newsgroups
#从互联网上下载即时新闻样本,subset='all'下载近2万条文本存储在变量news中
news = fetch_20newsgroups(subset='all')
#导入train_test_split模块用于分割训练集
from sklearn.cross_validation import train_test_split
X_train, X_test, y_train, y_test = train_test_split(news.data, news.target, test_size=0.25,random_state=33)
from sklearn.feature_extraction.text import CountVectorizer
count_vec = CountVectorizer()
#使用词频统计的方式将原始数据和测试文本转化为特征向量
X_count_train = count_vec.fit_transform(X_train)
X_count_test = count_vec.transform(X_te