Alink是基于Flink的机器学习算法平台,欢迎访问Alink的github获取下载链接及更多信息。

alibaba/Alinkgithub.com

情感分析是对带有情感色彩(褒义贬义/正向负向)的主观性文本进行分析,以确定该文本的观点、喜好、情感倾向。本文将针对顾客对酒店的评论数据,进行建模,并通过模型进行预测。演示情感分析中的常用操作,包括分词,文本向量化,及使用朴素贝叶斯(Naive Bayes)方法进行建模、预测。

使用的酒店评论数据集链接为:raw.githubusercontent.com

每条记录包括评论内容和标记喜好的标签,标签只有2个值:1代表喜欢,0为不喜欢。下图显示了4条数据:

下面我们使用Alink来进行分析、建模。

首先,我们需要一个Alink的Java工程,配置好相关环境。

最简单的办法是使用Alink的example工程,下载Alink git的代码,并用Jave IDE打开项目

如下图所示,可以看到三个已经写好的示例:ALSExample, GBDTExample, KMeansExample.

我们在com.alibaba.alink package下新建一个Java文件:

package com.alibaba.alink;

public class SentimentHotelSimpleExample {

public static void main(String[] args) throws Exception {

}

}

使用CsvSourceBatchOp读取URL数据,代码如下。

设置列名分别为label和review,数据类型分别为整型和字符串类型,由于该CSV数据第一行保存的是列名,需要设置读取数据时忽略第一行。

CsvSourceBatchOp source = new CsvSourceBatchOp()

.setFilePath("https://github.com/SophonPlus/ChineseNlpCorpus/raw/master/datasets"

+ "/ChnSentiCorp_htl_all/ChnSentiCorp_htl_all.csv")

.setSchemaStr("label int, review string")

.setIgnoreFirstLine(true)

source.firstN(5).print();

最后一行代码是选择5条数据打印显示出来,结果如下:

label

review

0

携程订单上写明:“房型特点:一张1.32,另一张1.12米,无法加床全部房间有免费宽带”,实际入住后见到的房间是我所见过的最小的标准间,两个床尺寸相同,床的两边均靠着墙,没有一点多余的空间,甚至连放行李的地方也没有,更不要提什么橱了,跟酒店提出与所订房间不同,他们说我们订的房间空调坏了,只能换这个房间,价格一样。我不知道这是酒店的欺诈还是携程的欺诈,我要求得到赔偿。如果需要证据的话,我有实拍的房间照片。另外,建议大家不要出泰山旅游,几乎一半的酒店会不定时,无预警的停电。

0

洗澡竟然没有热水!!太郁闷了第二天还要爬山啊!!不过网速还可以

0

我要求里写了要安静的房间。。谁知道那天住在6楼,外面的风,凄惨的吹着,声音很大,一个小时才入睡。让酒店换房间。他们说,酒店周围没有树,每间房间声音都很大。。赫赫,这里理由么?看来下次,起风的时候就不能去住了。

0

过了好久才想起来评价,记得离火车站超级近,不过方便的同时必然会觉得比较吵。韩日旅游团住这里的很多,前台服务冷淡。两个人住标准间,只给一张房卡,还很挑衅的看我。气的没心情。宾馆反馈2008年7月17日:酒店针对客人提出的问题,现已认真整改,希望每一位入住渤海明珠酒店的您都能高兴入住,满意而归。

0

酒店在铁路旁,晚上火

然后,我们设置Pipeline,将整个处理和模型过程封装在里面,代码如下:

Pipeline pipeline = new Pipeline(new Imputer().setSelectedCols("review").setOutputCols("featureText").setStrategy("value").setFillValue("null"),new Segment().setSelectedCol("featureText"),new StopWordsRemover().setSelectedCol("featureText"),new DocCountVectorizer().setFeatureType("TF").setSelectedCol("featureText").setOutputCol("featureVector"),new LogisticRegression().setVectorCol("featureVector").setLabelCol("label").setPredictionCol("pred"));

解释一下各个算法组件的作用:

•Imputer:对“review”列进行缺失值填充,方式是填充字符串值“null”,结果写到“featureText“列。•Segment:是进行分词操作,即将原句子分解为单词,之间用空格分隔。由于没有输入结果列,分词结果会直接替换调输入列的值。•StopWordsRemover:是将分词结果中的停用词去掉。•DocCountVectorizer:对“featureText“列出现的单词进行统计,并根据计算出的TF值,将句子映射为向量,向量长度为单词个数,并保存在"featureVector"列。•LogisticRegression:是使用LogisticRegression分类模型。分类预测放在“pred” 列。

下面,我们就可以进入模型训练阶段。通过Pipeline的fit()方法,可以得到整个流程的模型(PipelineModel),记作变量model,代码如下:

PipelineModel model = pipeline.fit(source);

使用model可以对批式/流式数据进行预测,都是调用model的transform()方法。

model.transform(source)

.select(new String[]{"pred","label","review"})

.firstN(10)

.print();

运行结果为:

pred

label

review

1

1

酒店服务真的很好,房间也很整洁。从阳台可以看到海景,海上有好多停着的船只,蛮有感觉的。自助早餐很不错,品种还是蛮丰富的。

1

1

洗了衣服本挂在洗手间的,等外出回来,已经拿架子挂在阳台上!满意服务态度一流,看到的全是笑脸!开心房间虽然设施老化,但很干净!安心海景不错!爽

1

1

非常好的地理位置,住的是豪华海景房,打开窗户就可以看见栈桥和海景。记得很早以前也住过,现在重新装修了。总的来说比较满意,以后还会住

1

1

我也是通过比较携程的用户评论选择海景的,是第一次住。总体感觉很好,房间硬件一般但很干净,每天有水果、糖果赠送,第一天还送玩偶,小孩子很喜欢。特别要提的是酒店服务很周到,餐饮和包车的价格也很公道,我们在酒店吃了两次晚餐都非常的满意,人均消费在30元左右(含酒水的哦)。同去的朋友都很满意,下次去威海还会住海景的。补充点评2008年7月29日:这里的工作人员各个彬彬有礼,作为一家国有企业实在难能可贵。例如,我早餐后刚在大堂的沙发坐下,服务员立即给我送上茶水和毛巾;我们在二楼公共休息区打牌,服务员见天色将黑,就主动把灯打开......

1

1

再次入住海景花园大酒店仍感亲切,酒店员工热情不减,服务还是这样的到位,我入住过的威海其他几家四星酒店与它相比,服务不在一个档次上,海景花园确实不错,下次我还是会入住.我要提的意见是,酒店客房空调不太制冷,服务不能在这些地方留有瑕疵,希望得到改进.

1

1

非常好的服务,虽然酒店挂牌4星,但服务不比5星差,整个酒店的服务员都很热情,你所见到的每个人都会主动向你问好,该酒店在细节的服务上也做的非常好,如:你在大堂内入座,服务员马上会给你上茶水和毛巾,都是免费的哦;你下出租车,服务员马上会递给你一张卡片,上面有你所乘坐的出租车号码,以免你万一有什么事可以找的到那辆车(因威海出租车的发票上没有车号)。如果一定要找一些酒店的缺点,那就是酒店的餐厅上菜的速度较慢,而且不要点川菜,因厨师不太会做。但不管如何,下次我去威海,还是会去该酒店入住。

1

1

确实不错!地点较佳,海景房正对栈桥和小青岛,不出房门,不用挤在旅游人群中,就能欣赏怡人海景;早餐较丰富且环境好,相对其价格,性价比高;一楼咖啡吧的简餐价格不高,味道较好,份量足(特别是三明治、热狗),是住客和非住店游客解决简单一餐或作为点心的好选择;宾馆楼道里的点心较受欢迎,品种多,质量高,而且添加及时,深受孩子喜爱;就是床略小(指带一个孩子睡的话)。总之,总体感觉好,推荐入住。

1

1

位置便利,价格便宜,服务周到,环境幽美!谢谢!

1

1

挺不错的酒店,每次去盐城都住在这里,价格便宜量又足!

1

1

还不错酒店,就餐和出行都很方便。服务态度也比较好

附录完整的Java代码如下:

packagecom.alibaba.alink;importcom.alibaba.alink.operator.batch.source.CsvSourceBatchOp;importcom.alibaba.alink.pipeline.Pipeline;importcom.alibaba.alink.pipeline.PipelineModel;importcom.alibaba.alink.pipeline.classification.LogisticRegression;importcom.alibaba.alink.pipeline.dataproc.Imputer;importcom.alibaba.alink.pipeline.nlp.DocCountVectorizer;importcom.alibaba.alink.pipeline.nlp.Segment;importcom.alibaba.alink.pipeline.nlp.StopWordsRemover;publicclassSentimentHotelSimpleExample{publicstaticvoidmain(String[]args)throwsException{CsvSourceBatchOpsource=newCsvSourceBatchOp().setFilePath("https://github.com/SophonPlus/ChineseNlpCorpus/raw/master/datasets"+"/ChnSentiCorp_htl_all/ChnSentiCorp_htl_all.csv").setSchemaStr("label int, review string").setIgnoreFirstLine(true);//source.firstN(5).print();Pipelinepipeline=newPipeline(newImputer().setSelectedCols("review").setOutputCols("featureText").setStrategy("value").setFillValue("null"),newSegment().setSelectedCol("featureText"),newStopWordsRemover().setSelectedCol("featureText"),newDocCountVectorizer().setFeatureType("TF").setSelectedCol("featureText").setOutputCol("featureVector"),newLogisticRegression().setVectorCol("featureVector").setLabelCol("label").setPredictionCol("pred"));PipelineModelmodel=pipeline.fit(source);model.transform(source).select(newString[]{"pred","label","review"}).firstN(10).print();}}

java 情感分析_Flink基于Alink中文情感分析示例(Java版本)相关推荐

  1. Flink基于Alink中文情感分析示例(Java版本)

    Alink是基于Flink的机器学习算法平台,欢迎访问Alink的github获取下载链接及更多信息. alibaba/Alink github.com 情感分析是对带有情感色彩(褒义贬义/正向负向) ...

  2. Java的IO模型基于网络编程利弊分析

    JAVA的IO模型基于网络编程利弊分析 一.IO通俗理解 IO的过程 思考①答案:文件句柄 思考②答案: 阻塞/非阻塞 IO(程序对内核空间数据拷贝到用户空间阶段的耗时操作的等待方式) 同步/异步IO ...

  3. Alink中文情感分析示例(Java版本)

    情感分析是对带有情感色彩(褒义贬义/正向负向)的主观性文本进行分析,以确定该文本的观点.喜好.情感倾向.本文将针对顾客对酒店的评论数据,进行建模,并通过模型进行预测.演示情感分析中的常用操作,包括分词 ...

  4. 实体词典 情感词典_基于词典的情感分析——简单实例

    基于词典的情感分析方法非常容易被理解,主要利用情感词判断一句话或者一篇文章的情感倾向,下面的程序利用BosonNLP情感词典(从https://bosonnlp.com/dev/resource 下载 ...

  5. 【文本分析】基于公众需求文本分析的深圳自然博物馆发展策略研究

    此文是2021年暑期在深圳大学文化产业研究院黄老师的指导下,与文化艺术管理专业的龚学姐合作完成的,且于2022年发表于<文化深圳>杂志第一期.此文偏向报告形式,没有遵循严格的学术规范,今年 ...

  6. matlab分析数字信号,基于matlab的数字信号分析.doc

    基于matlab的数字信号分析.doc 题目二.已知有一频率为50赫兹幅度为1V的方波信号被频率为1600赫兹幅度为2V的正弦波干扰,请设计方案将方波信号提取出来,要求被衰减的信号要衰减60DB以上, ...

  7. Alink(02) 情感分析(官网案例)详细解析(注释详细版)

    目录 1.Alink 情感分析地址:Alink中文情感分析示例(Java版本) · 语雀 2.代码示例解析 3.项目资源文件 - 示例 1.train.txt 2.train2.txt 3.train ...

  8. 论文浅尝 - ICLR2020 | 知道什么、如何以及为什么:基于方面的情感分析的近乎完整的解决方案...

    论文笔记整理:余海阳,浙江大学硕士,研究方向为知识图谱.自然语言处理. 链接:https://arxiv.org/abs/1911.01616 动机 基于目标的情感分析或基于方面的情感分析(ABSA) ...

  9. 基于python的情感分析案例-基于情感词典的python情感分析

    Python Python开发 Python语言 基于情感词典的python情感分析 近期老师给我们安排了一个大作业,要求根据情感词典对微博语料进行情感分析.于是在网上狂找资料,看相关书籍,终于搞出了 ...

最新文章

  1. 【BZOJ 2460 元素】
  2. OS_CORE.C(4)
  3. 【学习笔记】区块链应用判断准则
  4. CCPC Training Class
  5. 复信号两种不同加噪方式的比较
  6. mount/umount命令【转】
  7. css3之 谜灯卡片_纯css3灯泡开关特效代码
  8. python github 12306 文贤平_GitHub排名第一!免费最强“抢票神器”在手,程序员抢票再不用跪求加速包...
  9. LeaRun低代码开发平台 助推物联网应用快速落地
  10. 项目管理工具之SWOT分析法
  11. 如何计算当地的中央子午线?全国各地中央子午线【转载】
  12. 计算机死机按什么恢复出厂设置,电脑怎么恢复出厂设置?win7恢复出厂设置教程...
  13. 2012年8月传统编程语言就业趋势分析(图)
  14. 互联网产品为什么能让用户“上瘾”,常用套路是什么?
  15. 苹果备忘录如何转移?备忘录怎么转移到新手机?
  16. 已知图片顶点坐标和点相对图片位置求点坐标
  17. 静态IP和动态IP有什么区别?
  18. 在Ubuntu上安装使用 iCloud
  19. 计算机开机过程英语怎么说,电脑开机显示一段英文,求解大神
  20. H3C备份设备配置方法

热门文章

  1. 考研高危人群!你是否还在危险的边缘试探?
  2. kali liunx安装拼音输入法,必须成功,只需5步
  3. 同伦延拓法中的几个数学常识
  4. 【风马一族_php】
  5. minigui学习笔记四
  6. 创易手机--真正DIY手机
  7. 画思维导图的安卓软件
  8. Emacs 浏览网页
  9. 2016年实习生招聘信息
  10. Seurat | 不同单细胞转录组的整合方法