![8dc11a7f4395d85da581e5385756b7a8.png](https://i-blog.csdnimg.cn/blog_migrate/a8336c761c69cf5cce3e3bed66d37009.jpeg)
1.NLP是什么
自然语言处理
用于对文本的分类
用于对中英文的互相翻译
用于打字时候的自动纠错
垃圾邮件过滤
......
1.1本次的目标
这次学习是1000个英文的对一餐馆的评价,以及手动分类的结果,看一下是正面还是负面的评价。
用NLP算法自动辨别评价的好坏,当在拿到一个评价时,就可以自动进行好坏的分类了。
这次要做的就是对评论就行分类,完成以后可以拓展到文本文章英文报道等进行应用。
1.2观察数据
![574e03cedd5fb8e4791145dfe9e361ff.png](https://i-blog.csdnimg.cn/blog_migrate/8aa3526b0d67ba8de0eae5114ecda005.jpeg)
打开评论的tsv文件(文本很特殊,特殊的表单符号被处理)1正面评论、2负面评论,都是手动添加
2.NLP源码分析
2.1.导入数据,利用panda
导入tsv文件,分隔符是‘Tab’,就是‘t’
quoting = 3:去除引号
dataset
从Spyder中的Variable explorer查看导入的数据
![3fcbc7ac57ed4b0a277c554e53ee83cd.png](https://i-blog.csdnimg.cn/blog_migrate/1c81b34568405d79db15bcd3eecdd610.jpeg)
2.2文本清理(磁带模型)
2.2.1建立一个巨大的稀疏矩阵
1000行,每一行代表每一条评论
列数取决于所有出现的单词的个数,列的名称就是每个单词
每行每列的对应的数字就是每一行的评论中,某一列对应的词语出现的个数
2.2.2清除数字以及标点符号,因为跟评价的好坏没有关系,即消除噪音!
2.2.3清除一些虚词,像this之类的词
2.2.4词根化,对英文很有用,即:去调时态等变化
import re #清楚数字标点的标准库
import nltk #下载含有所有虚词的list
nltk.download('stopwords') #list名字:stopwords 下载
from nltk.corpus import stopwords #下载之后 载入字典
from nltk.stem.porter import PorterStemmer #stem:词根 PorterStemmer: 词根函数库
corpus = [] #空list
for i in range(0, 1000):
review = re.sub('[^a-zA-Z]', ' ', dataset['Review'][i]) #去除标点,数字,去除之后用空格代替,只留下大小写字母
review = review.lower() #全部转换成小写
review = review.split() #将句子字符串,转换成含有不同单词的list
ps = PorterStemmer() #取词根化的方程
review = [ps.stem(word) for word in review if not word in set(stopwords.words('english'))] # 用词根化后的结果进行循环
#set让速度变得更快。 最后查看是否在英文的虚词字典里 ‘english’
#代码运行到这里 举栗子: 原来第一行review便转化成了 ['wow','love','place']
review = ' '.join(review) # 在每两个单词之间加上空格,并重现转化成字符串
corpus.append(review) #每处理一行,变加入list
到这里来看一下,处理完之后的结果(右边)
![7e88ac49cf01c487ced2876f606470cc.png](https://i-blog.csdnimg.cn/blog_migrate/bf85d51c96120288b670d47ce1f84515.jpeg)
2.3生成稀疏矩阵
cv = CountVectorizer(max_features = 1500) #转化矩阵函数,只需要加一个参数 最大的列的数
X = cv.fit_transform(corpus).toarray() #生成了稀疏矩阵
y = dataset.iloc[:, 1].values #因变量的向量
2.4朴素贝叶斯的训练
有关朴素贝叶斯的介绍以及训练步骤、代码等请参考:
机器学习(8)-朴素贝叶斯 - I ’ m 奥巴马户 - CSDN博客blog.csdn.net![0314c3708ea6f92c47253aea752a1f11.png](https://i-blog.csdnimg.cn/blog_migrate/6d635a78459ac93aaa892258050173b0.png)
2.5最后预测的结果
![a62f194a66dabf43402447e55d5d0692.png](https://i-blog.csdnimg.cn/blog_migrate/a614d35535ad3bb26aea3c61797e6d8d.jpeg)
(55+91)/200