文本情感分析(一):基于词袋模型(VSM和LSA)和n-gram的文本表示

现在自然语言处理用深度学习做的比较多,我还没试过用传统的监督学习方法做分类器,比如SVM、Xgboost、随机森林,来训练模型。因此,用Kaggle上经典的电影评论情感分析题,来学习如何用传统机器学习方法解决分类问题。

通过这个情感分析的题目,我会整理做特征工程、参数调优和模型融合的方法,这一系列会有四篇文章。这篇文章整理文本特征工程的内容。

文本的特征工程主要包括数据清洗、特征构造、降维和特征选择等。

首先是数据清洗,比如去停用词、去非字母汉字的特殊字符、大写转小写、去掉html标签等。

然后是特征构建,可以基于词袋模型构造文本特征,比如向量空间模型的词频矩阵、Tf-Idf矩阵,又比如LSA和LDA,也可以用word2vec、glove等文本分布式表示方法,来构造文本特征。此外还可以用n-gram构造文本特征。

接下来可以选择是否降维,可以用PCA或SVD等方法对文本特征矩阵进行降维。

最后选择效果比较突出的1个或几个特征来训练模型。

 

一、基于向量空间模型的文本特征表示

向量空间模型(Vector Space Model,VSM)也就是单词向量空间模型,区别于LSA、PLSA、LDA这些话题向量空间模型,但是单词向量空间模型和话题向量空间模型都属于词袋模型,又和word2vec等文本分布式表示方法相区别。

向量空间模型的基本想法是:给定一个文本,用一个向量表示该文本的语义,向量的每一维对应一个单词,其数值是该单词在该文本中出现的频数或Tf-Idf。那么每个文本就是一个向量,特征数量为所有文本中的单词总数,通过计算向量之间的余弦相似度可以得到文本的相似度。

而文本集合中的所有文本的向量就会构成一个单词-文本矩阵,元素为单词的频数或Tf-Idf。

文本情感分析(一):基于词袋模型(VSM和LSA)和n-gram的文本表示

在我们这个Kaggle案例中,单词-文本矩阵的行数为样本的数量,列数为单词的数量,训练集中样本有25000条,选取最高频的5000个单词,故矩阵X是(25000,5000)的矩阵。我们以词频和Tf-Idf作为文本特征,计算出两个单词-文本矩阵,然后分别训练随机森林二分类器。

首先导入所需要的库。

import os,re import numpy as np import pandas as pd from bs4 import BeautifulSoup from sklearn.feature_extraction.text import CountVectorizer from sklearn.feature_extraction.text import TfidfVectorizer from sklearn.ensemble import RandomForestClassifier from sklearn import metrics import nltk from nltk.corpus import stopwords

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wssfzp.html