赞
踩
该工具包包括:读取数据、清理数据、使用模型
#导入所需要的包
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
dataset = pd.read_csv("Restaurant_Reviews.tsc",delimiter = '\t',quoting = 3)
其中使用的数据后缀为tsv而并非csv,这是由于csv是以逗号作为分隔符,tsv是以tab作为分隔符,而大多数情况下我们无法区分分割逗号与句子本身的逗号,所以使用tsv。quoting为选择第三种方式去除英文引号。
引入包:re包可以去除掉所有的数字、标点符号
import re
原本的数据是这个样子:
print(dataset['Review'][0])
Wow...Loved thsi place.
除了单词之外,还有别的符号存在,而这些符号会造成误差,也就是噪音的存在。
review = re.sub('[^a-zA-Z]',' ',dataset[Review'][0])
print(review)
Wow Loved this place
sub(保留的字符,其它字符的替换字符,数据)
如果是单纯的文本,那么大小写不统一会造成噪音污染,所以我们需要统一转为大写或者小写,一般转化为小写。
review = review.lower()
print(review)
wow loved this place
什么是虚词?
实词:本身就存在意义:苹果、车、彩虹
虚词:指代,比如 这、那、嗯
虚词在自然语言处理中为停顿词或停用词
处理虚词我们需要进入包
import nltk
nltk.download('stopwords')
from nltk.corpus import stopwords
使用方法:
review = review.split()
print(review)
review = [word for word in review if not word in set(stopwords.words('english'))]
print(review)
词根化:将一个单词恢复成其原本有的样子,将过去式、将来式转化为现在式
from nltk.stem.porter import PorterStemmer
ps = PorterStemmer()
review = [ps.stem(word) for word in review if not word in set(stopwords.words('english'))]
print(review)
词根化后词是在list里面,我们需要组合成字符串
review = ''.join(review)
print(review)
wow loved place
稀疏矩阵也就是0比较多的矩阵,如上图所示,处理的办法如下,使用sklearn里面的CountVectorizer
from sklearn.feature_extraction.text import CountVectorizer
cv = CounterVectorizer()
X = cv.fit_transform(corpus).toarray()
print(X)
print(X.shap)
可是为什么这个矩阵这么多0?那是把单词出现的次数都记录了起来,这就是之前所提到的词袋。
(1000,1565)表示有1000行和1565个词汇
上面所算出来的1565中,有很多出现的频率比较低,这样就产生了噪声,所以我们需要去掉这些噪声。方法:再CountVectorizer()中指定最大的特征数目
from sklearn.feature_extraction.text import CountVectorizer
cv = CounterVectorizer(max_features= 1500)
X = cv.fit_transform(corpus).toarray()
print(X)
print(X.shap)
y = dataset.lioc[:,1].values #因变量
词袋模型:将文字转化为矩阵,矩阵里面存的是词出现的数量,根据数量进行加工预测的结果。
#数据分隔 from sllearn,cross_validation import train_test_split X_train,X_test,u_train,y_test = train_test_split(X,y,test_size = 0.02,random_state = 0) #朴素贝叶斯算法进行分类 from sklearn,nalve_bayes import GaussianNB classifier = GaussianNB() classifier,fit(X_train,y_train) #预测结果 y_pred = classifier.predict(X_test) #混淆矩阵 from sklearn,metrics import confusion_matrix cm = confusion_matrix(y_test,y_pred) cm
预测结果准确率70%
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。