版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第页4系统设计4.1设计目标及原则系统的架构设计,要能够反映出用户与整个系统模块的接口之间存在有效互动,而且应该是非常清楚的,从而才能够保障在后期系统真正实现的时候数据的扩展性和安全性,只有设计出的系统实现这个目标才能有一个更好的扩展空间量,以适应系统未来的发展。整个系统的设计中,系统必须满足以下要求:(1)数据安全性数据的安全性主要建立在保密性,完整性和可用性这三个安全原则基础之上。存储有关隐私权的系统数据,为了更好地保障系统数据的安全性,在设计系统的时候必须要采取有效的安全措施,以避免出现潜在的安全问题。(2)易用性易用性指的是产品对于用户来说意味着易于学习和使用,减轻记忆负担,使用的满意程度等。在用户权限范围内,可在一个统一风格的界面内即可完成相关的所有业务流程操作或者获取所有相关信息,大大提高操作员的工作效率和易用性,灵活应用本系统。(3)柔软性适应性利用软件的柔性可以适合和满足用户对软件的新的要求,是软件应对外部变化的一种方式。由于这个系统涉及到范围广泛的业务,设计出的系统必须能够处理接受变化的能力。(4)扩展性简单地说,可扩展性就是关于如何处理更大规模的业务,包括“垂直扩展”和“横向扩展”,选择合适的可扩展方法取决于你想要的规模和预算。随着商品评论情感分析管理需求的不断变化,系统必然涉及到业务更新及扩展,这就要求在设计之初就应该考虑良好的可扩展性方案。4.2整体框架系统整体框架结构如下图4.1所示。图4.1系统整体框架结构系统包括数据获取、数据处理、情感分析三大功能模块。4.3系统流程设计商品评论建模与自动预测系统,在初期进行系统开发时,首先进行了需求分析,接下来进而对系统进行总体的设计规划,设计系统功能模块,数据库的选择等,本系统的开发流程如图4.2所示图4.2系统开发流程图
5系统实现5.1数据预处理通过收集的数据集里面有很多的重复以及无效的数据,要对其进行文本清洗、去停用词等操作。首先进行文本清洗清洗后的评论(new_comment)新的评论去除停用词停用词5.2文本处理流程文本处理是分类器构建的一个重要过程,一般指将自然语言文本处理成可计算的形式。对于中文文本,包括中文分词、特征选择、特征权值计算和文本向量表示。添文本处理流程如图5.2所示。图5.2文本处理流程图文本预处理过程需先进行中文分词处理,因为使用特征选择方法选择多少特征时分类最优的问题,所以一般先计算特征权值,用文本向量表示,再在输入分类器之前进行特征选择,之后就可以输入分类器训练或测试。而对于采用情感词典作为特征选择,中文分词处理和特征选择是可以同时完成的,不存在选择多少维度的问题,然后计算特征权值,用文本向量表示,就可以输入分类训练和测试。这样的处理不但节省特征选择的计算量,还可以节省特征权值计算的工作量。5.3情感分类流程在利用朴素贝叶斯分类器进行文本分类时,先验概率和后验概率可以从训练语料中通过计算进行估计,也称这个过程为学习。通过训练可以得到一个包含类别先验概率和特征词后验概率的模型,本文称其为概率模型。基于概率模型,就可以对测试语料进行分类。分类流程如图5.3所示。图5.3情感分类流程图读取并解析文本数据加载数据集,all_text:词;all_class:类别划分训练集和测试集train_texts=all_text[:-1000]train_labels=all_class[:-1000]test_texts=all_text[-1000:]test_labels=all_class[-1000:]print('训练集样本数:{},测试集样本数:{}'.format(len(train_texts),len(test_texts)))运行程序如图2.创建单词集合,调用方法,去除重复词self.myVocabList=self.createVocabList(train_texts)print('获取的词汇个数:',len(self.myVocabList))3.计算单词是否出现并创建数据矩阵trainMat=[]print('计算单词是否出现并创建数据矩阵...')forpostinDocintqdm(train_texts):#返回m*len(self.myVocabList)的矩阵,记录的都是0,1信息trainMat.append(self.setOfWords2Vec(self.myVocabList,postinDoc))4.训练数据print('训练朴素贝叶斯模型')self.p0V,self.p1V,self.pAb=self.trainNB0(array(trainMat),array(train_labels))print('计算词汇的特征权重')word_prob_dict={}forword,p0V,p1Vinzip(self.myVocabList,self.p0V,self.p1V):word_prob_dict[word]=(p0V+p1V)/2print('词汇的情绪特征权重为:')word_prob_dict=sorted(word_prob_dict.items(),key=lambdad:d[1],reverse=True)print(word_prob_dict)print('去除特征权重较低的词汇')self.myVocabList=[w[0]forwinword_prob_dict[:-1100]]print('剩下的有效词汇个数:',len(self.myVocabList))print('重新训练贝叶斯模型')print('重新计算:计算单词是否出现并创建数据矩阵...')trainMat=[]forpostinDocintqdm(all_text):#返回m*len(self.myVocabList)的矩阵,记录的都是0,1信息trainMat.append(self.setOfWords2Vec(self.myVocabList,postinDoc))print('重新训练:朴素贝叶斯模型')self.p0V,self.p1V,self.pAb=self.trainNB0(array(trainMat),array(all_class))5.测试数据print('加载测试集测试贝叶斯模型')correct_info={'负面评论':0,'正面评论':0}predicts=[]print('错误样例分析')fortext,labelinzip(test_texts,test_labels):predict_label=self.predict(text)predicts.append(int(predict_label=='负面评论'))if(label==1)and(predict_label=='负面评论'):#实际为负面评论言论correct_info['负面评论']+=1elif(label==0)and(predict_label=='正面评论'):#实际为正面评论言论correct_info['正面评论']+=1else:#错误样例在运行结果框内分析错误样例,表示出每条评论的实际标签和预测标签,统计出正面评论和负面评论的条数和各自的准群率,并计算出总的预测准确率和召回率。最后在此基础上加入一基于关键词的广告预测过滤,如关键词'qq','vx','扣扣','微信','weixin','私信','请私戳',’*’,’电话’,’联系’,’+’,进一步对广告评论进行识别。forregin[]:ifregincomment:returnTruereturnFalsedefpredict(self,comment):"""使用算法:#将乘法转换为加法乘法:P(C|F1F2...Fn)=P(F1F2...Fn|C)P(C)/P(F1F2...Fn)加法:P(F1|C)*P(F2|C)P(Fn|C)P(C)->log(P(F1|C))+log(P(F2|C))++log(P(Fn|C))+log(P(C)):paramvec2Classify:待测数据[0,1,1,1,1...],即要分类的向量:paramp0Vec:类别0,即正面评论文档的[log(P(F1|C0)),log(P(F2|C0)),log(P(F3|C0)),log(P(F4|C0)),log(P(F5|C0))]列表:paramp1Vec:类别1,即负面评论文档的[log(P(F1|C1)),log(P(F2|C1)),log(P(F3|C1)),log(P(F4|C1)),log(P(F5|C1))]列表:parampClass1:类别1,负面评论文件的出现概率:return:类别1or0"""reg_type=self.reg_predict(''.join(comment).lower())ifreg_type:return'负面评论'计算公式log(P(F1|C))+log(P(F2|C))++log(P(Fn|C))+log(P(C))。大家可能会发现,上面的计算公式,没有除以贝叶斯准则的公式的分母,也就是P(w)(P(w)指的是此文档在所有的文档中出现的概率)就进行概率大小的比较了,因为P(w)针对的是包含负面评论和正面评论的全部文档,所以P(w)是相同的。使用NumPy数组来计算两个向量相乘的结果,这里的相乘是指对应元素相乘,即先将两个向量中的第一个元素相乘,然后将第2个元素相乘,以此类推。我的理解是:这里的vec2Classify*p1Vec的意思就是将每个词与其对应的概率相关联起来comment=array(self.setOfWords2Vec(self.myVocabList,comment))p1=sum(comment*self.p1V)+log(self.pAb)#P(w|c1)*P(c1),即贝叶斯准则的分子p0=sum(comment*self.p0V)+log(1.0-self.pAb)#P(w|c0)*P(c0),即贝叶斯准则的分子·5.4实现界面用户输入评论,系统会自动预测出情感。如图5.3所示。图5.3系统实现界面引入写好的方法fromtkinterimport*importjiebafrombayesimportNativeBayesNB=NativeBayes()利用tkinter模块,Tkinter.TK()画出可视化窗口。设置“开始分析”按钮点击后执行的方法,未输入评论时的提醒。设置“退出”按钮点击后的关闭提示副窗口,确认退出的按钮。给按钮设置合适的大小,字体和坐标位置。完成按钮设置后,设置输入框和结果框的位置和大小。6软件测试与分析在整个系统开发的流程中,最后的一个步骤就是测试系统。系统测试是整个系统流程中不可或缺的环节,系统测试结果的好坏关系到产品是否能够投入使用。用户对于软件的质量、性能和可靠性等需求都要通过最后的系统测试来实现。整个系统测试的过程必须遵循严谨、完善、规范等原则,经过这样严谨的测试得出的产品才能够提高系统的质量、可信度、可靠性,从根本上而降低系统的故障率,从而降低用户使用这一系统的风险系数。通常一个完整的系统测试包括:功能测试,性能测试,安装测试,安全测试,易用性测试,可用性测试,性能测试、配置测试,兼容性测试等方面。6.1测试环境与测试条件处理器:Inter(R)Core(TM)i7-7700HQ内存:16GB硬盘:237G操作系统:Win10数据库:MySQL6.2功能测试这里选用的功能测试主要包括五项内容:适用性测试、准确性测试、可操作性测试、依从性测试、安全性测试。本网站功能测试如表5-1所示:表5-1网站功能测试6.3性能测试性能测试主要是使用自动化的测试工具,通过模拟系统运行环境,模拟多种正常、峰值以及异常负载条件,测试各项性能指标,从而检验这个系统性能是否能够符合客户的需求。性能测试的主要的技术指标包括:服务器资源使用情况,资源利用率是否合理,系统响应时间,系统的运行速度、系统是否能够实现扩展,以及支持并发节点数等。因为不存在服务器,在这里我们只讨论系统运行速度和系统响应时间。1)系统运行速度:将此系统在MacBook和神舟等电脑上运行,没有发现明显的停顿、迟滞和卡顿现象。2)系统响应时间:系统响应时间主要又可以分为三个方面(1)系统最小响应时间;(2)第二、系统平均响应时间;(3)系统最大响应时间这三个参数。经过测试,在正常情况下,局域网内响应时间的三个数值分别为:2/3/5s,速度较快,符合预期。6.4系统运行情况通过对系统全方面的测试,所有测试条目都已经通过,实现了基本要求,系统可以正常运行。6.5系统评价系统评价是指对于夜歌新开发的或者改建的系统,系统在正式运行了一段时间之后,根据系统最开始预定的系统目标,用系统分析的方法,对它在功能上、技术上和经济上,社会上和生态上等方面所进行的审核评价和选择。针对本系统的评价如下:(1)系统功能评价根据在开发之前本系统所预设的目标,在完成本系统后经过运行和测试,经测定,本系统达到了设定的预期开发目标,在实际使用过程中,功能能够满足使用者的需求。(2)系统技术评价本系统设计方案和流程合理,在使用过程中功能也达到了预先设定的目标,并且系统能够稳定可靠的运行,具有实用性,有着较高的查询效率。(3)系统经济评价在规定时间内,此系统能够完成起初系统分析时所设立的系统开发目标,完成了预期的设计要求,投入使用后能够帮助用户快速的分析商品评论,提高了鉴别的效率。结论本系统通过对Python、情感分析等技术的简介,从硬件和软件两反面说明了情感分析系统的可行性,本文结论及研究成果如下:实现了基于Python的商品评论建模与自动预测系统,通过本次系统的研究与实现,我感触到学习一门新技术,最重要的是实践,只有多动手才能尽快掌握它,一个系统的开发,经验是最重要的,经验不足,就难免会有许多考虑不周之处。由于先前对于Python的软件使用并不是很频繁,因此刚开始开发系统时就遇到了很多困难,例如一开始的页面显示不规范,不知道如何创建一个可视化窗口,不过通过CSDN和网上寻找有关资料,以及同学的帮助下,一边做一边学习,最后都得到了不错的解决。在此过程中,我不仅接触到了自己以前不太擅长的编程软件,同时克服了对于这个软件的陌生,也提高了自己发现问题,解决问题的能力。在信息提取方面,我学会了如何从大量复杂的信息中筛选出自己所需要的信息。我也更加深刻的体会到了,虽然书本上的计算机理论知识是必要的,但实际的上手操作实际上更为重要,不仅要精通书本上的知识,更要做到学懂会用,学以致用,通过不断的实际练习来熟悉编程,磨炼自己的专业技能。虽然书本上的知识是一样的,但经过实际的操作,每个人都会因为思路的不同而形成不同的编程思想,从而养成不同的编程习惯,这就说明我们一定要通过亲身的实践操作,才能靠自己找到适合自己编程思路和习惯的解决问题的方案。在这一次的毕业设计中,我提高了自己,也在开发的过程中得到了宝贵的经验,我相信对我以后的工作和发展都会起到很大的作用。通过这次系统的开发,我参考了很多相关系统的例子,取长补短,吸取了其他系统的长处,逐步对该系统进行了完善,但是该系统还是有很多的不足之处,有待以后进一步学习。参考文献[1]李爱国.python开发案例[M].北京:电子工业出版社,2019.[2]张国印,沈洁著.python应用程序开发[M].北京:清华大学出版社,2017:329.[3]刘国柱,杜军威,QST青软实训.python程序设计与开发[M].北京:清华大学出版社,2017.[4]李丽.我国电商评论情感分析信息化探讨[J].计算机软件世界,2017(12)12-13.[5]张戈.基于用户体验的购物评价分析系统设计探讨[J].信息化建设,2017,(06):388.[6]陈文,图书推荐系统的设计与实现[D],广州:暨南大学,2018[7]张跃骞.情感分析算法探讨与应用[J].中国教育网络,2016,Z1:44-46.[8
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 会计数据分析 Solutions-Manual Chapter-5-Labs-SM
- 跨境电商平台战略规划与实施指南
- 后浪研究所:2024年轻人下馆子报告
- 2024届陕西省渭南区解放路中学高中毕业班教学质量检查数学试题
- DB11-T 2098-2023 城市轨道交通工程施工安全检查与评价规范
- 边城步行街广告推广策略
- 苏少版小学二年级下册美术动物朋友教案教学设计
- 地铁站点土方清运合作协议
- 主题公园垃圾清运服务
- 农贸市场蔬菜销售居间合同
- 蛇簧联轴器使用说明书
- 工伤赔偿计算明细表(全国通用)
- 水泥稳定碎石连续级配图表及计算
- 国家开放大学《土木工程力学(本)》形考作业1-5参考答案
- 装饰装修工程的质量控制培训课件(共47页).ppt
- 二氧化碳-化学品安全技术说明书
- 小学四年级语文课外阅读练习
- DIN_EN_573-3铝和铝合金化学成分和半成品种类化学成分
- 中国淡水藻类分类及名称(汉拉对照)
- 高值耗材参考目录
- 河南省盐及盐化工产业发展研究
评论
0/150
提交评论