评论情感分析----多种机器学习模型测试总结

news/2024/10/30 9:24:25/

文章目录

    • 前言
      • Step1: 读取评论文件
      • Step2: 去除重复评论信息
      • Step3: 使用jieba库进行分词操作
      • Step4: 去除停用词
      • Step5: 生成词典
      • Step6: 生成one-hot编码(暂未用到)
      • Step7: Word2vec编码
      • Step8: 封装数据预处理过程
      • Step9: 构建评论语句向量
      • Step10: 拆分数据集为训练集与测试集
      • Step11: 训练多种监督模型,准备评论情感预测
        • KNN算法模型的训练与评估
        • 逻辑回归模型的训练与评估
        • 支持向量机分类器的训练与评估
        • 伯努利贝叶斯模型的训练与评估
        • 决策树模型的训练与评估
        • 随机森林模型的训练与评估
        • 梯度提升分类器模型的训练与评估
        • MLP神经网络多层感知机模型的训练与评估
      • Step12: 使用模型随机预测评论情感
      • 表格对比各机器学习模型在情感识别方面的性能
      • 小结

2022/12/27更新,目前代码+数据集+停用词已上传GitHub,点击此处跳转下载。

前言

本文章总结了许多机器学习模型对于情感分析的性能,包括模型训练、预测的时间、训练集、测试集的预测准确度。

Step1: 读取评论文件

加载评论信息文件, 并获取所有评论内容及情感(其中共读取13499条评论数据,情绪有好有坏)
在这里插入图片描述

在这里插入图片描述

如下是代码实现

import csv
import numpy as npdef loadCommentFile(file_name):all_sentences = []with open(file_name, 'r', encoding='utf-8') as fp:                                    #读取文件reader = csv.reader(fp)#读取迭代器内的所有评论信息all_sentences = np.array([[comment[0],comment[1]] for comment in reader])         #保存格式[['评论1','评论情感标签']]         print('Step1:read {} comments in file...'.format(len(all_sentences)))return all_sentences                                                                  #返回numpy数组形式的所有评论内容及对应标签

Step2: 去除重复评论信息

去除评论数据集中的重复评论信息

import pandas as pddef removeSameComment(all_sentences):data = pd.DataFrame(all_sentences)same_sentence_num = data.duplicated().sum()                                           #统计重复的评论内容个数if same_sentence_num > 0:print('Step2:remove {} of same comments...'.format(same_sentence_num))data = data.drop_duplicates()                                                     #删除重复的评论内容  return data.values                                                                   #返回numpy数组形式的评论内容信息

Step3: 使用jieba库进行分词操作

使用jieba库对中文评论语句及逆行切分操作

import jiebadef getAllWords(all_sentences):all_words = []for sentence in all_sentences:words = jieba.lcut(sentence[0])                                                  #将评论切词,并存放所有切分后的评论语句all_words.append(words)print('Step3:jieba cut successfully...')return np.array(all_words)

Step4: 去除停用词

去除评论词语中已经停用的词语

def removeStopWords(file_name, all_words):stop_words = []with open(file_name, 'r', encoding='utf-8') as fp:                      #读取所有停用词stop_words = fp.read().split('\n')                                   #存到stop_words列表中(以换行符切分)for sentence in all_words:                                              #双重循环去除评论中的停用词for word in sentence:if word in stop_words:sentence.remove(word)print('Step4:remove stop-words successfully...')return np.array(all_words)                                              #以numpy数组返回

Step5: 生成词典

将所有评论信息中存在的词语生成一个词典

def getDictionary(all_words):dictionary = []for sentence in all_words:for word in sentence:if word not in dictionary:dictionary.append(word)                                     #将所有评论中出现的词语存入词典print('Step5:{} words in total...'.format(len(dictionary)))return dictionary

Step6: 生成one-hot编码(暂未用到)

把所有评论中的词语信息都进行编码,编码形式为one-hot

def getOneHot(dictionary):one_hots = []for index,word in enumerate(dictionary):              #使用one-hot编码把出现的词语转化为向量one_hot = np.zeros(len(dictionary))one_hot[index] = 1one_hots.append(one_hot)print('Step6:one-hot encoding successfully...')return np.array(one_hots)

Step7: Word2vec编码

将评论的词语信息以word2vec的方式进行编码,并存储(这里直接使用gensim库)

from gensim.models import Word2Vecdef getWord2Vec(all_words):#调用Word2Vec模型,将所有词语信息转化为向量model = Word2Vec(all_words, sg=0, vector_size=300, window=5, min_count=1, epochs=7, negative=10)model.save('word2vec_model')print('word2vec encoding successfully...')return model

Step8: 封装数据预处理过程

封装所有的操作过程,最后结果返回所有预处理过后的评论数组,word2vec模型,词语词典

def getData():all_sentences = loadCommentFile('../datasets/comments.csv')all_sentences = removeSameComment(all_sentences)target = all_sentences[:,1]all_words = getAllWords(all_sentences)all_words = removeStopWords('../file/cn-stopwords.txt', all_words)dictionary = getDictionary(all_words)one_hots = getOneHot(dictionary)print('get all data successfully...')return all_words, target, dictionary

Step9: 构建评论语句向量

求和评论中每个词语的word_vector,然后取平均值,即为评论语句的向量

def getSentenceVec(all_words, word2vec_model):sentences_vector = []for sentence in all_words:sentence_vector = np.zeros(word2vec_model.wv.vector_size)#取出评论中每个单词的向量累加for word in sentence:sentence_vector += word2vec_model.wv.get_vector(word)#取最终结果的平均值,作为评论语句的向量,并添加到评论向量列表中sentences_vector.append(sentence_vector/len(sentence))#返回numpy类型的评论列表return np.array(sentences_vector)

Step10: 拆分数据集为训练集与测试集

调用数据预处理的封装函数进行数据预处理,将每个词语使用word2vec模型转化为向量,并将所有评论转化为向量

然后对数据集进行切分为数据集与测试集

from sklearn.model_selection import train_test_split         #引入拆分训练集与测试集的方法all_words, target, dictionary = getData()                     #获取评论的分词形式列表、对应标签、词典word2vec_model = getWord2Vec(all_words)                       #训练Word2Vec模型
word2vec_model.save('word2vec_model')                         #保存文件#将每一句评论信息转化为对应的评论向量
sentences_vector = getSentenceVec(all_words, word2vec_model)#拆分数据集为训练集与测试集
X_train, X_test, y_train, y_test = train_test_split(sentences_vector, target)
print('train_test_split successfully!')
Step1:read 13499 comments in file...
Step2:remove 1016 of same comments...
Step3:jieba cut successfully...
Step4:remove stop-words successfully...
Step5:15834 words in total...
Step6:one-hot encoding successfully...
get all data successfully...
word2vec encoding successfully...
train_test_split successfully!

Step11: 训练多种监督模型,准备评论情感预测

KNN算法模型的训练与评估

from sklearn.neighbors import KNeighborsClassifier               #引入KNN算法模型
import timestart = time.time()knn = KNeighborsClassifier(n_neighbors=5)                         #K近邻模型训练中,n邻居个数越多越欠拟合,越少越过拟合
knn.fit(X_train, y_train)                                         #训练KNN模型end = time.time()
print('It is take {} seconds'.format(end-start))                  #输出训练所需的时间
It is take 0.014011383056640625 seconds
start = time.time()train_score = knn.score(X_train, y_train)
test_score = knn.score(X_test, y_test)end = time.time()print('Train score:{}'.format(train_score))
print('Test score:{}'.format(test_score))
print('It is take {} seconds'.format(end-start))                  #输出训练所需的时间
Train score:0.9629352702414015
Test score:0.9487343800064082
It is take 4.137312889099121 seconds

逻辑回归模型的训练与评估

from sklearn.linear_model import LogisticRegression              #引入LogisticRegression逻辑回归模型import timestart = time.time()#弱正则化对应过拟合,强正则化对应欠拟合
logistic_regression = LogisticRegression(C=50)                    #在逻辑回归中,参数C控制正则化强弱,C越大正则化越弱,C越小正则化越强
logistic_regression.fit(X_train, y_train)                         #训练逻辑回归模型end = time.time()
print('It is take {} seconds'.format(end-start))                  #输出训练所需的时间
It is take 1.5031111240386963 seconds
start = time.time()train_score = logistic_regression.score(X_train, y_train)
test_score = logistic_regression.score(X_test, y_test)end = time.time()print('Train score:{}'.format(train_score))
print('Test score:{}'.format(test_score))
print('It is take {} seconds'.format(end-start))                  #输出训练所需的时间
Train score:0.967955565050203
Test score:0.962191605254726
It is take 0.032012939453125 seconds

支持向量机分类器的训练与评估

from sklearn.svm import SVC                                      #引入支持向量机分类器start = time.time()svc = SVC(gamma=0.1, C=100)                                       #gamma控制类别的相似度程度,越小越好,C控制正则化程度,适中即可
svc.fit(X_train, y_train)                                         #训练支持向量机分类器end = time.time()print('It is take {} seconds'.format(end-start))                  #输出训练所需的时间
It is take 3.914299249649048 seconds
start = time.time()train_score = svc.score(X_train, y_train)
test_score = svc.score(X_test, y_test)end = time.time()print('Train score:{}'.format(train_score))
print('Test score:{}'.format(test_score))
print('It is take {} seconds'.format(end-start))                  #输出训练所需的时间
Train score:0.9948728904080325
Test score:0.9724447292534444
It is take 3.5872702598571777 seconds

伯努利贝叶斯模型的训练与评估

from sklearn.naive_bayes import BernoulliNB                      #引入伯努利贝叶斯模型
start = time.time()
bernoulli_bayes = BernoulliNB()
bernoulli_bayes.fit(X_train, y_train)                             #训练伯努利贝叶斯模型
end = time.time()print('It is take {} seconds'.format(end-start))                  #输出训练所需的时间
It is take 0.09700345993041992 seconds
start = time.time()train_score = bernoulli_bayes.score(X_train, y_train)
test_score = bernoulli_bayes.score(X_test, y_test)end = time.time()print('Train score:{}'.format(train_score))
print('Test score:{}'.format(test_score))
print('It is take {} seconds'.format(end-start))                  #输出训练所需的时间
Train score:0.913052766502884
Test score:0.9160525472604935
It is take 0.11000585556030273 seconds

决策树模型的训练与评估

from sklearn.tree import DecisionTreeClassifier                  #引入决策树模型
start = time.time()   
decision_tree = DecisionTreeClassifier(max_depth=5)               #设置决策树的最大深度为5,避免出现过拟合现象           
decision_tree.fit(X_train, y_train)                               #训练多项式贝叶斯模型
end = time.time()print('It is take {} seconds'.format(end-start))                  #输出训练所需的时间
It is take 1.640122652053833 seconds
start = time.time()train_score = decision_tree.score(X_train, y_train)
test_score = decision_tree.score(X_test, y_test)end = time.time()print('Train score:{}'.format(train_score))
print('Test score:{}'.format(test_score))
print('It is take {} seconds'.format(end-start))                  #输出训练所需的时间
Train score:0.9573809015167699
Test score:0.93784043575777
It is take 0.031012535095214844 seconds

随机森林模型的训练与评估

from sklearn.ensemble import RandomForestClassifier              #引入随机森林模型
start = time.time()
random_forest = RandomForestClassifier(n_estimators=100)
random_forest.fit(X_train, y_train)                               #训练随机森林模型
end = time.time()print('It is take {} seconds'.format(end-start))                  #输出训练所需的时间
It is take 19.40948247909546 seconds
start = time.time()train_score = random_forest.score(X_train, y_train)
test_score = random_forest.score(X_test, y_test)end = time.time()print('Train score:{}'.format(train_score))
print('Test score:{}'.format(test_score))
print('It is take {} seconds'.format(end-start))                  #输出训练所需的时间
Train score:1.0
Test score:0.9615507850048062
It is take 0.35802292823791504 seconds

梯度提升分类器模型的训练与评估

from sklearn.ensemble import GradientBoostingClassifier          #引入梯度提升分类树模型
start = time.time()
gradient_boosting_tree = GradientBoostingClassifier()
gradient_boosting_tree.fit(X_train, y_train)                      #训练梯度提升分类树模型
end = time.time()print('It is take {} seconds'.format(end-start))                  #输出训练所需的时间
It is take 307.464230298996 seconds
start = time.time()train_score = gradient_boosting_tree.score(X_train, y_train)
test_score = gradient_boosting_tree.score(X_test, y_test)end = time.time()print('Train score:{}'.format(train_score))
print('Test score:{}'.format(test_score))
print('It is take {} seconds'.format(end-start))                  #输出训练所需的时间
Train score:0.9818414868617816
Test score:0.9602691445049664
It is take 0.31026268005371094 seconds

MLP神经网络多层感知机模型的训练与评估

from sklearn.neural_network import MLPClassifier                 #引入神经网络多层感知机模型
start = time.time()
mlp = MLPClassifier()
mlp.fit(X_train, y_train)                                        #训练神经网络MLP多层感知机模型
end = time.time()print('It is take {} seconds'.format(end-start))                  #输出训练所需的时间
It is take 23.577603578567505 seconds
start = time.time()train_score = mlp.score(X_train, y_train)
test_score = mlp.score(X_test, y_test)end = time.time()print('Train score:{}'.format(train_score))
print('Test score:{}'.format(test_score))
print('It is take {} seconds'.format(end-start))                  #输出训练所需的时间
Train score:0.9900662251655629
Test score:0.975008010253124
It is take 0.07800674438476562 seconds

Step12: 使用模型随机预测评论情感

取出测试集中的100条测试数据,使用**支持向量机分类器(SVC)**进行评论预测,并输出结果

import randomdic_len = len(dictionary)start = random.randint(100,2400)#从测试集中随机抽取50条数据,准备测试
X_data = X_test[start:start+50]
y_data = y_test[start:start+50]success_test = 0#对 50 条评论信息进行预测
for sequence_index in range(len(X_data)):#找到该评论在数组中的位置loc = np.where((sentences_vector == X_data[sequence_index]).all(axis=1))#输出该评论语句print('/'.join(all_words[loc[0][0]]))res = svc.predict([X_data[sequence_index]])                #使用支持向量机进行预测#0 代表好评, 1代表差评if res == '0':             print('Predict result : 好评', end='\t')              #输出好评else:              print('Predict result : 差评', end='\t')             #否则输出差评#实际该评论的结果if y_data[sequence_index] == '0':print('Actual results: 好评', end='\t')else:   print('Actual results: 差评', end='\t')#判断是否预测正确if res == y_data[sequence_index]:print('Predict success!', end='\t')success_test += 1else:print('Predict fail!', end='\t')print('\n\n')print('本次测试预测准确度为: {}'.format(success_test/50))
学大/数据/大学/狗/听/有人/说/MacBook/适合/工科/买来/一段时间/感觉/还好/性能/很强/不愧/M1/ /Pro/没买/Max/版本/感觉/不到/32/核/GPU/16G/内存/我/够用/了/。
Predict result : 好评	Actual results: 好评	Predict success!	开机/划痕/心情/郁闷/提醒/这种/退换货/还是/官网/买
Predict result : 差评	Actual results: 差评	Predict success!	外形/外观/好看/ /选/颜色/对/屏幕/音效/屏幕/120hz/刷新/太爽了/ /用回/xr/真/卡/拍照/效果/拍照/清晰/运行/速度/速度/快/待机时间/玩/一把/游戏/掉电/ /续航/不错/,/其他/特色/充电/速度/快/ /23/分钟/37/ /真的/很快/了
Predict result : 好评	Actual results: 好评	Predict success!	完美/机/听筒/缝隙/屏幕显示/正常/拍照/重点/京东/发货/真的/太牛/超级/21/号/下单/已经/错过/前两天/抢购/情况/25/号/下午/收到/货/?/?/以为/好久/我/手机/壳/没/买/快递/员/打电话/知道/又/火速/京/东京/造买/了/手机/壳/没想到/壳/不错/。/我/仔细/看过/镜头/没有/灰尘/边框/没有/划痕/绝大多数/机子/没有/,/让/知道/都/有/发出/来显/的/问题/,/外形/外观/完美/,/拍照/效果/无敌/,/运行/速度/超级
Predict result : 好评	Actual results: 好评	Predict success!	买来/疫情/在家/办公/外观/时尚/大气/颜色/深/我心/自重/轻/出差/携带/发货/的/久/一点/但/值得/另外/,/小妹/导购/15/态度/很/好/,/赞/!
Predict result : 好评	Actual results: 好评	Predict success!	苹果/生产/技术/工艺/真的/太赞/熟悉/开机/声音/干脆/铝合金/打造/金属/机身/科技/感/十足/16/寸/大家伙/有点/重/但是/接受/毕竟/屏蔽/啊/运行/流畅/很棒/感觉/京东/物流/真的/,/快递/小哥/服务态度/很/不错/,
Predict result : 好评	Actual results: 好评	Predict success!	入手/打开/包装/很/惊艳/漂亮/看着/高级/安装/系统/简单/ /明/自带/OFF/运行/速度/超快/流畅/ /屏幕显示/超棒/不愧/大/品牌/,/爱/爱/!
Predict result : 好评	Actual results: 好评	Predict success!	京东/快递/送货/很快/艰难/条件/停运/收到/电脑/保证/不错/电脑/是/理想/华为/品牌/靠得住/~/一些/激活/注册/问题/不会/操作/,/问/客服/也/是/很/耐心/解答
Predict result : 好评	Actual results: 好评	Predict success!	运行/速度/开机/速度/特别/运行/流畅/运行/屏幕/效果/屏幕/清晰/视觉/舒适/散热/性能/用/几个/小时/发热/情况/风扇/静音/外形/外观/颜色/好看/商务/感强/上档次/轻薄/程度/厚度/合适/携带/轻便/其他/特色/隐形/摄像头/美观/,/指纹/解锁/便捷/华为/荣耀/手机/直连/文件/转移/,/触控/鼠标/快捷/功能/操作/很/方便/,/玩游戏/,/作为/办公/商务/电脑/值得/购买/,/性价比/超高
Predict result : 好评	Actual results: 好评	Predict success!	东北/暴雪/缘故/晚到/几天/但用/时候/手感/好/更加/人/欣慰/是/高频/分辨率/用/非常/舒适/不/电池/续航/怎么样/还/观望/中/希望/令人/失望
Predict result : 好评	Actual results: 好评	Predict success!	外观/好看/好看/颜值/爆表/开机/速度/很快/人脸识别/灵敏/屏幕/效果/很/清晰/大小/合适/电池/很/耐用/充电/速度/快/,/京东/快递/很/力
Predict result : 好评	Actual results: 好评	Predict success!	垃圾/都/不想/说/刚刚/拿到/可惜/发现/晚/自己/看吧/,/联网/不/退/,/一点/不好/垃圾/电脑
Predict result : 差评	Actual results: 差评	Predict success!	凌晨/付款/现在/拿到/货/迫不及待/开机/比/想象/要/薄/一点/屏幕/漂亮/宽/很窄/颜色/很/正/超级/爱/相信/品牌/,/质量/保证/下/一步/其他/配置/整齐/。
Predict result : 好评	Actual results: 好评	Predict success!	外形/外观/简单/大气/四方/边框/拿/很/舒适/屏幕/音效/拍照/清晰/防抖/性能/不错/运行/速度/运行/不卡顿/处理/流畅/待机时间/待机/时长/比较/优秀/充满/电/不/玩游戏/正常/6/小时
Predict result : 好评	Actual results: 好评	Predict success!	体验/感/不好/我/办公室/网络/办法/电脑/我/天天/热点/真是/方便/但是/店家/不/退货/这/不合理/这么/贵买/服务/太差/建议/买/在/外面/办事/网络/,/用/网络/不好/。
Predict result : 差评	Actual results: 差评	Predict success!	是/太棒了/我/喜欢/运行/速度/快/屏幕/效果/好/散热/性能/好
Predict result : 好评	Actual results: 好评	Predict success!	电脑/隔天/收到/快递/速度/很快/屏幕/90hz/效果/好/也/保护/眼睛/开机/秒/开/,/办公室/着/方便/,/整体/效果/好/这款/电脑
Predict result : 好评	Actual results: 好评	Predict success!	不错/手机/手感/好/方方正正/着/舒服/5g/速度/很快/幸好/以前/办/大/流量/卡/流量/还够用/系统/着/流畅/,/游戏/性能/好
Predict result : 好评	Actual results: 好评	Predict success!	电脑/毛病/多连个/蓝牙/磨磨/唧唧/一会/好使/一会/不好/千万别/入坑
Predict result : 差评	Actual results: 差评	Predict success!	屏幕/效果/非常/运行/速度/?/外形/外观/好看/其他/特色/音响/不错/我/很/爱/大家/这部/不用/犹豫/,/冲/!
Predict result : 好评	Actual results: 好评	Predict success!	电脑/价格/10/天降/两次/申请/保价/说/了/保价/期/,/明明/说/是/保价/一个月/,/给/说/周期
Predict result : 差评	Actual results: 差评	Predict success!	窄/宽/加持/ /16/mac/ /整体/尺寸/上/一代/无/变化/ /争议/刘海/屏/实际/mac/系统/运行/无/影响/ /系统/工具栏/专属/位/ /复古/方正/设计/ /了/稳重/气息/ /就/符合/这代/pro/整体/定位/ / /历代/最强/芯/最强/屏/最强/扬声/系统/足够/震撼/ /回归/磁吸/ /多/拓展/接口/是/惊喜/满满/想要/换新/这代/真的/不用/了/ /体验/感拉满
Predict result : 好评	Actual results: 好评	Predict success!	运行/速度/很快/外形/外观/很/好看
Predict result : 好评	Actual results: 好评	Predict success!	在/买/活动/时候/价格/美丽/发货/速度/贼/质量/不错/应该/正品/挺/和/想象/中/随意/搭/好看/满意/每/都/很/满意/,/这次/选/的/宝贝/满意/,/以后/还会/一如既往/地买/包装/,/物流/,/价格/实惠/,/散热/挺/,/风扇/声/还行
Predict result : 好评	Actual results: 好评	Predict success!	买来/上网/课用/电脑/不错/噢/而且/到货/不/熟悉/11/系统/不会/就/问/导购/37/小姐姐/,/她/耐心/解答/好/喔
Predict result : 好评	Actual results: 好评	Predict success!	品控/之差/屏幕/三个/暗点/坏点/人脸/解锁/几次/正常/识别/换货/等于/抽奖/315
Predict result : 差评	Actual results: 差评	Predict success!	轻薄/程度/轻薄/外形/外观/非常/好看/高级/屏幕/效果/显色/很/好/散热/性能/散热/发热/其他/特色/快递/物流/疫情/不/因素/很快/快递/疫情/原因/滞留/10/天/,/今天/到/,/包装/还是/很/不错/的/。
Predict result : 好评	Actual results: 好评	Predict success!	运行/速度/5/秒/开机/爆赞/屏幕/效果/高色域/无色差/散热/性能/非常/静音/整机/散热
Predict result : 差评	Actual results: 好评	Predict fail!	差评/差评/差评/差评/差评/刚/拿来/有/黑屏/电视剧/屏幕/就/花掉
Predict result : 差评	Actual results: 差评	Predict success!	运行/速度/感觉/很快/日常/完全/问题/屏幕/效果/屏幕/流畅/非常/清晰/颜色/正/,/外形/外观/好看/,/轻薄/程度/轻薄
Predict result : 好评	Actual results: 好评	Predict success!	对比/买下/这款/轻薄/16.1/寸/屏幕/看着/舒服/平时/做作业/,/办公/,/性能/足够/,/银色/高级/,/还/继续/探索/中
Predict result : 好评	Actual results: 好评	Predict success!	纠结/好久/选/这个/颜色/不/沾/指纹/大小/合适/外观设计/精美/拍摄/效果/好/运行/速度/待机时间/长/,/屏幕/清晰度/高/,/手感/好
Predict result : 好评	Actual results: 好评	Predict success!	手机/充电/头/自己/配
Predict result : 差评	Actual results: 差评	Predict success!	买/还/几天/掉价儿/还/保价/强烈/差评
Predict result : 差评	Actual results: 差评	Predict success!	垃圾/东西/就/几天/时间/降/700/块钱/保价/服务/没用/慎买
Predict result : 差评	Actual results: 差评	Predict success!	隔天/收到/电脑/ /喜欢/ /朋友/推荐/买/华为/笔记本/ /是/了/好几年/说好/ /轻薄/小巧/ /携带/ /运行/速度/快/ /喜欢
Predict result : 好评	Actual results: 好评	Predict success!	好/便携/电脑/尺寸/配置/很强/独立/显卡/荣耀/几年/产品设计/越来越/特点/!/家人/后/反馈/好/系统/很/流畅/,/十分/推荐
Predict result : 好评	Actual results: 好评	Predict success!	到手/惊艳/ /这块/屏幕/确实/不错/ /显示/效果/很/细腻/ /1080p/16/寸大屏/确实/逐渐/淘汰/ /在/自带/管家/调/色调/ /对比度/ /也/很/ /一个/贴心/小/功能/ /开盖/开机/ /很/ /实测/七八次/样子/ /挺/灵敏/ /多/的/东西/ /慢慢/测好
Predict result : 好评	Actual results: 好评	Predict success!	收到/笔记本/特意/了/三天/评价/感觉/整体/很/不错/速度/静音/易上/手/操作/只是/包裹/外包装/破损/,/以后/注意/,/笔记本/内包装/完好/,/推荐/购买
Predict result : 好评	Actual results: 好评	Predict success!	登录/WIFI/显示/密码/错误/同/密码/家里/两部/华为/手机/可以/登录/WIFI/申请/售后/换货/售后/说/帮/调试/,/拿到/手机/试用/登录/WIFI/密码/错误
Predict result : 差评	Actual results: 差评	Predict success!	感谢/服务/那么/电脑/下来/反应速度/快/我/买/游戏/本作/做/文职/的/工作/,/来看/是/问题/了/,/谢谢/,/谢谢/的/。
Predict result : 好评	Actual results: 好评	Predict success!	粉红色/外观/电脑/颜值/挺/高/运行/速度/很快/没有/声音/散热/性能/好/,/价格/优惠
Predict result : 好评	Actual results: 好评	Predict success!	开机/速度慢/花头/精/多
Predict result : 差评	Actual results: 差评	Predict success!	电脑/喜欢/想象/中/一样/简单/大方/轻薄/办公/够用/运行/速度/,/到货/后用/才/评价/,/小巧玲珑/,/静谧/银/好看
Predict result : 好评	Actual results: 好评	Predict success!	商品/发烫/退货/检修/原机/退回/,
Predict result : 差评	Actual results: 差评	Predict success!	运行/速度/很快/ /不卡/流畅/屏幕/效果/分辨率/高/散热/性能/很/,/外形/外观/很/简约/大气
Predict result : 好评	Actual results: 好评	Predict success!	超级/轻薄/外观/满分/性价比/极高/值得/推荐/运行/速度/非常/!/屏幕/效果/非常/清晰/散热/性能/非常/,/外形/外观/外观/10/颗星/,/轻薄/程度/非常/轻薄
Predict result : 好评	Actual results: 好评	Predict success!	不好/ /屏幕/一点/不灵敏
Predict result : 差评	Actual results: 差评	Predict success!	没用过/贵/笔记本/苹果/笔记本/很/精致
Predict result : 好评	Actual results: 好评	Predict success!	颜色/漂亮/存储空间/足够/处理器/速度/满足/需求/发货/速度/很快/满意/,/推荐/购买/上班族/足够/,/打游戏/可以/,/速度/杠杠/滴
Predict result : 好评	Actual results: 好评	Predict success!	本次测试预测准确度为: 0.98

可见,支持向量机模型对结果的预测准确度达到98%,也较为不错

表格对比各机器学习模型在情感识别方面的性能

前提,评论文本信息已经完成一系列的预处理操作,如

  • 评论去重
  • 评论分词
  • 去除停用词
  • one-hot词向量(效率低,未用到)
  • word2vec词向量

现在列举各机器学习模型对于评论情感分析的性能(训练数据13499 条)

模型名称训练耗时测试耗时训练集预测精度测试集预测精度
KNN模型0.01401s4.13731s96.3%94.9%
逻辑回归模型1.50311s0.03201s96.8%96.2%
支持向量机模型3.91430s3.58727s99.5%97.2%
伯努利贝叶斯模型0.09700s0.11001s91.3%91.6%
决策树模型1.64012s0.03101s95.7%93.8%
随机森林模型19.40948s0.35802s100%96.2%
梯度提升分类树模型307.46423s0.31026s98.2%96.0%
神经网络MLP多层感知器模型23.57760s0.0780099.0%97.5%

小结

本次统计测试结果不一定完全准确,因为没有涉及到细节的调参问题或者数据缩放问题

尤其是随机森林模型,过拟合较为严重,后续若有新的学习进展,会陆续更新改进,若有小伙伴们有疑问或指导,欢迎下方留言


http://www.ppmy.cn/news/329896.html

相关文章

Fiddler汉化(一箭三连)

我安装的fiddler 操作系统是:Win10 64Bit 操作系统的版本号是:v5.0.20194.41348 for .NET 4.6.1 fiddler下载地址: 我用夸克网盘分享了「02-Web调试工具-FiddlerSetup.exe」,点击链接即可保存。 链接:https://pan.quar…

同为双摄像头,华为P9到底比iPhone 7 plus差在哪里?

一直以来,把手机拍照效果追赶上单反的拍摄效果是各个手机厂商的夙愿。但是,由于手机规格的设定,让这个愿望几乎不可能实现。有的手机厂商会研发出一个拍照外挂模块,以此来提高手机拍照的效果,如不久前Moto发布的Mod相机…

判断苹果黑条_【苹果iPhoneXR评测】黑边厚也是苹果的“无奈之举”_苹果 iPhone XR_手机评测-中关村在线...

干货在此:iPhone XR的黑边为什么要设计的这么厚? 众所周知,iPhone XR采用了LCD屏幕,并非拥有XS的OLED屏的自发光特质,需要有一个BM导光板遮挡一下漏光的现象。 而导光板只是为了让屏幕发光发亮,如果没有BM区…

广色域图片Android,ios 9.0系统App因广色域图片而导致的随机崩溃

双11终于结束了,也有了点时间写点东西了。今天说一下起几个月IOS发布过程中遇到的一个问题。 App在testFlight过程中,有测试反馈,在ios9的系统中启动后操作一会就会随机崩溃。每次的崩溃栈中也看不出来什么东西。查了半天也没有思路&#xff…

手机ppi排行测试软件,2018主流厂商旗舰手机屏幕测试数据汇总和子项排名统计...

2018主流厂商旗舰手机屏幕测试数据汇总和子项排名统计 2019-01-12 20:35:54 10点赞 11收藏 1评论 2018已经过去了,这两天闲得**,作为一个电子产品爱好者,准备写一篇关于2018旗舰手机屏幕的测试数据汇总和子项排名统计。 1,LG的V40…

广色域图片Android,广色域手机很厉害?其实安卓手机屏幕的色彩问题一

原标题:广色域手机很厉害?其实安卓手机屏幕的色彩问题一 在众多国内外品牌的攻势之下,如今的安卓手机基本上可以说是无差异化竞争,众多厂商用着三星的内存颗粒,用着高通若干款SOC,加上索尼的不同摄影传感器…

手机屏幕测试html5,一加手机5屏幕测试:色彩素质优秀,唯独分辨率是美中不足...

拼 命 加 载 中 ... 说到一加手机3和一加手机3T,相信不少加油都会表示“除了屏幕基本没有缺点”,这点“美中不足”在一定程度上也让不少有意购买一加手机3/一加手机3T的玩家望而止步。因此昨天的一加手机5发布会上,一加着重强调新手机的屏幕相…

手机ppi排行测试软件,依然是目前屏幕色准表现最好的智能手机:iPhone XS 屏幕测试...

原标题:依然是目前屏幕色准表现最好的智能手机:iPhone XS 屏幕测试 iPhone XS 与 iPhone XS Max 均采用了 Apple 官方称之为「超视网膜高清显示屏 」的新一代 OLED 屏幕,除了大小不同以及分别率分别为 24361125 和 26881242 之外,其他参数都没有差别,均为 458 PPI,P3 色域…