(5)【整合】基于机器学习的酒店评论文本倾向性分析

酒店评论情感分析系统(五)——

【整合】基于机器学习的酒店评论文本倾向性分析

本文主要是对之前的第三、四节所介绍的各分块进行整合。

流程:

对GUI界面输入的评论文本,先进行中文分词和去停用词,然后再按“环境,价格,卫生,服务”四个方面分类;同时通过调用LingPipe中的DynamicLMClassifier,对已标注的“中文情感挖掘酒店评论语料”库的学习,构造一个基本极性分析的分类器。最后用此分类器分别对整个评论文本给出总体评价和对四个方面分别给出相应的情感评价。

环境:

1. 操作系统:windows7,X86,32位

2. Java JDK1.6

3. LingPipe4.1

4. Eclipse3.4

5. NetBeans6.9

6.中文分词工具:ictclas4j

项目运行图示:

按四个方面分类的结果:

由上分类结果可推知:

环境:pos      卫生:neg      价格:neg      服务:pos

项目运行结果:

项目整合:

将(三)中介绍的两个类FileExcludeStopWord和Fenglei与(四)中的两个类MyClassifier和SentimentAnalysisUI整合在一块,并对里面的代码做相应的调整,核心思想不做改变即可。

此处主要讲解SentimentAnalysisUI类:

定义和初始化分类器变量:

 1     DynamicLMClassifier<NGramProcessLM> sClassifier;
 2     MyClassifier mClassifier = new MyClassifier();
 3     FileExcludeStopWord fesw = new FileExcludeStopWord();   //分词并去停用词
 4     Fenglei fl = new Fenglei();    //按四个方面分类
 5
 6     /** Creates new form SentimentAnalysisUI */
 7     public SentimentAnalysisUI() {
 8         initComponents();
 9         sClassifier = mClassifier.getClassifier();  //分类器
10     }

界面中Commit按钮所触发的事件:

 1 private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) throws UnsupportedEncodingException {//GEN-FIRST:event_jButton1ActionPerformed
 2
 3         String temp,review;
 4         String resultAll, resultE, resultP, resultS, resultH;
 5         temp = String.valueOf(jTextArea1.getText()); //界面输入的源评论文本
 6         review = new String(temp.getBytes("GB2312"),"ISO-8859-1"); //【总评】文本编码转换
 7         Classification classification = sClassifier.classify(review);   //【总评】分类
 8         resultAll = String.valueOf(classification.bestCategory());   //【总评】分类结果
 9         String[] finalStr = fesw.fileExcludeStopWord(temp); //分词和去停用词
10         String[] tempRe = fl.fenlei(finalStr);  //按四个方面分类 【细评】
11         String[] tempfi = new String[tempRe.length];
12         for(int i = 0; i<tempRe.length;i++){
13             tempfi[i] = new String(tempRe[i].getBytes("GB2312"),"ISO-8859-1");  //【细评】文本编码转换
14         }
15         resultE = String.valueOf(sClassifier.classify(tempfi[0]).bestCategory()); //0-环境
16         resultH = String.valueOf(sClassifier.classify(tempfi[1]).bestCategory());  //1-卫生
17         resultP = String.valueOf(sClassifier.classify(tempfi[2]).bestCategory()); //2-价格
18         resultS = String.valueOf(sClassifier.classify(tempfi[3]).bestCategory());  //3-服务
19
20        jTextArea2.setText(String.valueOf("总评:"+resultAll+"\n"+"环境:"+resultE+"\n"+"卫生:"+resultH+"\n"+
21                "价格:"+resultP+"\n"+"服务:"+resultS+"\n"));  //显示分析结果
22
23     }//GEN-LAST:event_jButton1ActionPerformed

 本项目不足之处:

a. 五个相关语料库(EnvironmentRef,HealthRef,PriceRef,ServiceRef,RefWords)应该更加完善

b. 训练集中的文本数量应该更多一些,这样分类器的正确率还可以得到更大的提升

c. 文本倾向性分析的结果对源文本的输入格式有很大的依赖性

时间: 2024-10-12 13:39:55

(5)【整合】基于机器学习的酒店评论文本倾向性分析的相关文章

实训项目:基于TextCNN汽车行业评论文本的情感分析

基于TextCNN汽车行业评论文本的情感分析 使用卷积神经网络对汽车行业评论文本进行情感分析. 数据集 爬取汽车之家车主口碑评论文本,抽取口碑中最满意以及最不满意评论文本,分别作为正向情感语料库和负向情感语料库. 语料库基本信息如下: 训练集(data/ch_auto_train.txt): 40000 = 20000(pos) + 20000(neg) 验证集(data/ch_auto_dev.txt): 10000 = 5000(pos) + 5000(neg) 测试集(data/ch_au

(1)文本倾向性分析综述

酒店评论情感分析系统(一)——文本倾向性分析综述 题目:对酒店的评论进行文本倾向性分析,分析对酒店的评价(包括总评和细评,细评包括价格.卫生.服务.环境四个方面)是褒还是贬. 在学<搜索引擎>这门课的时候,老师布置的一个小型project.本科的时候一直没接触过这块,所以现在只能是从一只菜鸟一步步慢慢摸索.想在学习的过程中,对搜索引擎,文本倾向性分析,网络舆情有个初步的认识与了解. 由于处在摸索阶段,所以文中难免会出现一些表述错误.公式错误.理解错误等等,故千万不要认为里面的思路都正确,如发现

文本倾向性分析

package test; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.HashSet; import java.util.Iterator; import java.util.Set; import java.util.Vector; public class OpinionAnalyser { //倾向词表 public

(3.2)将分词和去停用词后的评论文本基于“环境、卫生、价格、服务”分类

酒店评论情感分析系统(三)—— 将分词和去停用词后的评论文本基于“环境.卫生.价格.服务”分类 思想: 将进行了中文分词和去停用词之后得到的词或短语按序存在一个数组(iniArray)中,从中找出所有和“环境.卫生.价格.服务”四个方面相关的词或短语,并记录下其位置信息(sortRefNum).然后按照位置信息,对每一个标记出的关键词,记录下从当前关键词起到下一个关键词止的信息,放入一个String型的数组中(midArray),最后将此数组中的关键词再分别基于“环境.卫生.价格.服务”四个方面

基于word分词提供的文本相似度算法来实现通用的网页相似度检测

实现代码:基于word分词提供的文本相似度算法来实现通用的网页相似度检测 运行结果: 检查的博文数:128 1.检查博文:192本软件著作用词分析(五)用词最复杂99级,相似度分值:Simple=0.968589 Cosine=0.955598 EditDistance=0.916884 EuclideanDistance=0.00825 ManhattanDistance=0.001209 Jaccard=0.859838 JaroDistance=0.824469 JaroWinklerDi

基于朴素贝叶斯分类器的文本分类算法

源代码下载:NaviveBayesClassify.rar Preface 文本的分类和聚类是一个比较有意思的话题,我以前也写过一篇blog<基于K-Means的文本聚类算法>,加上最近读了几本数据挖掘和机器学习的书籍,因此很想写点东西来记录下学习的所得. 在本文的上半部分<基于朴素贝叶斯分类器的文本分类算法(上)>一文中简单介绍了贝叶斯学习的基本理论,这一篇将展示如何将该理论运用到中文文本分类中来,具体的文本分类原理就不再介绍了,在上半部分有,也可以参见代码的注释. 文本特征向量

基于机器学习的web异常检测

基于机器学习的web异常检测 Web防火墙是信息安全的第一道防线.随着网络技术的快速更新,新的黑客技术也层出不穷,为传统规则防火墙带来了挑战.传统web入侵检测技术通过维护规则集对入侵访问进行拦截.一方面,硬规则在灵活的黑客面前,很容易被绕过,且基于以往知识的规则集难以应对0day攻击:另一方面,攻防对抗水涨船高,防守方规则的构造和维护门槛高.成本大. 基于机器学习技术的新一代web入侵检测技术有望弥补传统规则集方法的不足,为web对抗的防守端带来新的发展和突破.机器学习方法能够基于大量数据进行

基于Naive Bayes算法的文本分类

理论 什么是朴素贝叶斯算法? 朴素贝叶斯分类器是一种基于贝叶斯定理的弱分类器,所有朴素贝叶斯分类器都假定样本每个特征与其他特征都不相关.举个例子,如果一种水果其具有红,圆,直径大概3英寸等特征,该水果可以被判定为是苹果.尽管这些特征相互依赖或者有些特征由其他特征决定,然而朴素贝叶斯分类器认为这些属性在判定该水果是否为苹果的概率分布上独立的. 朴素贝叶斯分类器很容易建立,特别适合用于大型数据集,众所周知,这是一种胜过许多复杂算法的高效分类方法. 贝叶斯公式提供了计算后验概率P(X|Y)的方式: 其

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

现在自然语言处理用深度学习做的比较多,我还没试过用传统的监督学习方法做分类器,比如SVM.Xgboost.随机森林,来训练模型.因此,用Kaggle上经典的电影评论情感分析题,来学习如何用传统机器学习方法解决分类问题. 通过这个情感分析的题目,我会整理做特征工程.参数调优和模型融合的方法,这一系列会有四篇文章.这篇文章整理文本特征工程的内容. 文本的特征工程主要包括数据清洗.特征构造.降维和特征选择等. 首先是数据清洗,比如去停用词.去非字母汉字的特殊字符.大写转小写.去掉html标签等. 然后