简单的Pig Latin语句进行文本情感分析

第一天学Pig Latin,忍不住就要发个文卖弄卖弄。所以大神们不要笑哈。

首先是安装及环境的搭建。Pig有2种模式,一种是本地模式,一种是hadoop集群模式。本地模式用命令 pig -x local,集群模式直接用pig就可以启动。

从网站上下载pig后解压,再配置环境变量。然后直接启动就可以了,pig项目是apache免费的项目,所以在已有集群上部署pig应该不太复杂(至少对于我这种只有1个datanode的学生版集群是这样的)。

说下pig和hive的区别。两个都是将操作转换为MapReduce作业,并且适用于批处理。hive感觉更加的中规中矩一点,并且基于表进行操作,只要会写sql,基本操作hive不成问题。Pig感觉更擅长分析非结构化数据,文本数据、日志,JSON数据也可以分析。Pig基于关系、包、模式,能更加灵活的处理非结构化数据。

然后讲讲文本情感分析。这个大神级的话题,其实我也不太懂。大致就知道先tokenize文本,然后构建特征,进行训练,最终的模型用来对文本的情感进行分析,分为正向情感和负向情感。但是如果要进行全量分析(巨大的数据量),感觉深度学习或者python、JAVA建立的模型就有点不行了,要应用到集群上的话,比较流行的是转换成Mapreduce作业或者spark的内存计算。但是貌似Tensorflow也可以部署到yarn上面去的,所以啦,知识的海洋无穷无尽。

好了,本文用的情感分析逻辑很简单(hello word)版本的。就是看包含正向感情的词还是负向感情的词。由于不会写正则表达式(试了好多次都不成功)所以只好放弃了,还好本文只是抛砖引玉,第一次试着写pig Latin,大神们不要笑话哈。

好了,直接上代码。

文本是这样的:

I like the servce
I hate the servce
It is awful
I enjoy the process
It is just a waste of time.I hate it.
The process sucks
I can't understand why the servce is so awful
I like it
It is comfortable

It is the best
It is the worst servce I have been served.

grunt>records = Load '/home/pig/feeling.txt' using TextLoader as (feeling:chararray);--导入数据
grunt>positive = Filter records by feeling matches '.*like.*' or feeling matches '.*enjoy.*' or feeling matches '.*comfortable.*' or feeling matches '.*best.*';--正向情感
grunt>negtive = Filter records by feeling matches '.*hate.* or feeling matches '.*awful.*' or feeling matches '.*sucks.*';--负向情感
grunt>dump positive --查看正向情感文本
grunt>dump negtive -=查看负向情感文本

 

你可能感兴趣的:(简单的Pig Latin语句进行文本情感分析)