esper_Twitter4j和Esper:在Twitter上跟踪用户情绪

esper

对于复杂事件处理和Twitter API的新手,我希望这是一个简短的教程,可以帮助他们Swift起步。

管理大数据并从中挖掘有用的信息是当前技术中最热门的讨论主题。 来自Twitter,Facebook和Linkedin等社交网络的半结构化数据的爆炸式增长使Hadoop,Cassandra等技术成为每个技术对话的一部分。 为了不落后于竞争,所有以客户为中心的组织都在积极参与制定社会战略。
公司可以从社交网络中获取什么数据? 为初学者考虑基于位置的服务,定向广告和算法股权交易。 IDC Insights拥有一些有关大数据与业务分析之间关系的信息博客 。 Barb Darrow在gigaom.com上的博客文章中解释说,除非可以使用合适的分析工具进行筛选,否则大数据本身将毫无意义。

公司经常听取社交信息,以了解客户对产品的兴趣或看法。 他们还试图确定“影响者”(在社交图中联系最多的人),以便他们可以向此类人员提供更好的报价,并从他们的营销中获得更大的收益。 参与股票交易的公司想知道在Twitter上讨论了哪些公开贸易公司,以及用户对此的看法。

从IBM这样的大公司到规模较小的初创企业,每个人都在竞相利用大数据管理和分析的大部分机会。 Web上免费提供了许多有关大数据的文档,例如IBM“ Big数据平台”的这本电子书。 但是,其中很多仅涉及理论。 Jouko Ahvenainen在回应Barb Darrow的上述帖子时指出,“许多谈论大数据机会的人过于笼统,谈论的是更好的客户理解,更好的销售等。实际上,您必须非常具体,您利用什么以及如何使用”。

听起来合理,不是吗? 因此,我开始通过制作一个想法原型来进一步研究这一点,这是我知道的唯一好的选择。 如果我能做到,那么任何人都可以做到。 该代码非常简单。 但是,这就是重点。 自己编写CEP框架非常复杂,但使用起来却不是。 同样,Twitter使通过REST API获取信息变得非常容易。

大数据– http://www.bigdatabytes.com/managing-big-data-starts-here/
我之前在博客中写道,复杂事件处理(CEP)是大数据框架的关键组成部分。 与CEP一起,使用Hadoop的框架来编译,解析和理解来自社交网络的24×7数据流。 今天,Twitter的流式API和CEP可以一起使用,以捕获Twitter用户的幸福感。 每当我在推文的文本中发现“大声笑”时,我在下面提供的代码都会侦听实时推文,以生成一个“幸福”事件。 CEP用于捕获快乐事件,每当在预定时间段内快乐事件的数量超过预定数量时,就会发出警报。 假设用户每次使用“大声笑”都会感到高兴,这是非常简单的,但这有助于理解要点。 在实践中,衡量用户的情感并不容易,因为它涉及自然语言分析。 考虑下面的示例,该示例突出了分析自然语言的复杂性。

Iphone从来没有变好。

iPhone从未 如此出色。

如您所见,在句子中仅添加一个单词就完全改变了含义。 因此,自然语言处理被认为是计算机科学中最棘手的问题之一。 您可以使用斯坦福大学提供的免费在线讲座来学习“自然语言处理”。 此链接直接带您进入克里斯托弗·曼宁(Christopher Manning)关于自然语言分析的第一堂课。 但是,以我的观点,在社交媒体和现代通用术语中普遍使用缩写词使这项工作变得容易一些。 诸如“ lol”和“ AFAIK”之类的缩写准确地表达了含义。 使用“大声笑”项目“有趣”和“ AFAIK”可能表示用户“不确定”他或她自己。

下面提供的代码使用Twitter4j api收听实时Twitter提要,使用Esper CEP收听事件并在达到阈值时提醒我们。 您可以从http://twitter4j.org/en/index.html下载twitter4j二进制文件或源文件,也可以从http://esper.codehaus.org/下载Esper。 在执行代码之前,请确保创建一个Twitter帐户(如果您没有的话),并在此处阅读Twitter的指南和概念及其流API。 Twitter目前仅允许通过用户名和密码组合进行身份验证,但不久之后将逐步淘汰该方法,以支持oAuth身份验证。 另外,请密切注意其“访问和速率限制”部分。

下面的代码在一个线程中使用流式API。 请不要同时使用其他线程,以免达到速率限制。 持续达到命中率限制可能会导致Twitter将您的Twitter ID列入黑名单。 同样重要的是要注意,流式API并不是以我们的方式发送每条推文。 Twitter通常会通过每10条推文发送1条来对数据进行采样。 但是,对于我们来说这不是问题,只要我们对数据中的模式感兴趣,而不对任何特定的推文感兴趣。 Twitter为需要无速率限制的流数据的企业提供付费服务。 下图显示了数据的组成和处理。

图。 代码中尚未实现的图表和数据库
package com.sybase.simple;public class HappyMessage {public String user;private final int ctr=1;public String getUser() {return user;}public void setUser(String user) {this.user = user;}public int getCtr() {return ctr;}
}

清单1.表示快乐事件的标准java bean。

package com.sybase.simple;package com.sybase.simple;import com.espertech.esper.client.EventBean;
import com.espertech.esper.client.UpdateListener;public class HappyEventListener implements UpdateListener{public void update(EventBean[] newEvents, EventBean[] oldEvents) {try {if (newEvents == null) {return;}EventBean event = newEvents[0];System.out.println("exceeded the count, actual " + event.get("sum(ctr)"));} catch (Exception e) {e.printStackTrace();}}
}

清单2.定义了Esper侦听器。

package com.sybase.simple;package com.sybase.simple;import java.io.IOException;import twitter4j.Status;
import twitter4j.StatusDeletionNotice;
import twitter4j.StatusListener;
import twitter4j.TwitterException;
import twitter4j.TwitterStream;
import twitter4j.TwitterStreamFactory;
import twitter4j.conf.Configuration;
import twitter4j.conf.ConfigurationBuilder;import com.espertech.esper.client.EPServiceProvider;
import com.espertech.esper.client.EPServiceProviderManager;
import com.espertech.esper.client.EPStatement;public class TwitterTest {static EPServiceProvider epService;public static void main(String[] args) throws TwitterException, IOException {// Creating and registering the CEP listenercom.espertech.esper.client.Configuration config1 = new com.espertech.esper.client.Configuration();config1.addEventType("HappyMessage", HappyMessage.class.getName());epService = EPServiceProviderManager.getDefaultProvider(config1);String expression = "select user, sum(ctr) from com.sybase.simple.HappyMessage.win:time(10 seconds) having sum(ctr) > 2";EPStatement statement = epService.getEPAdministrator().createEPL(expression);HappyEventListener happyListener = new HappyEventListener();statement.addListener(happyListener);ConfigurationBuilder cb = new ConfigurationBuilder();cb.setDebugEnabled(true);//simple http form based authentication, you can use oAuth if you have one, check Twitter4j documentationcb.setUser("your Twitter user name here");cb.setPassword("Your Twitter password here");// creating the twitter listenerConfiguration cfg = cb.build();TwitterStream twitterStream = new TwitterStreamFactory(cfg).getInstance();StatusListener listener = new StatusListener() {public void onStatus(Status status) {if (status.getText().indexOf("lol") > 0) {System.out.println("********* lol found *************");raiseEvent(epService, status.getUser().getScreenName(),status);}}public void onDeletionNotice(StatusDeletionNotice statusDeletionNotice) {System.out.println("Got a status deletion notice id:"+ statusDeletionNotice.getStatusId());}public void onTrackLimitationNotice(int numberOfLimitedStatuses) {System.out.println("Got track limitation notice:"+ numberOfLimitedStatuses);}public void onScrubGeo(long userId, long upToStatusId) {System.out.println("Got scrub_geo event userId:" + userId+ " upToStatusId:" + upToStatusId);}public void onException(Exception ex) {ex.printStackTrace();}};twitterStream.addListener(listener);//twitterStream.sample();}private static void raiseEvent(EPServiceProvider epService, String name,Status status) {HappyMessage msg = new HappyMessage();msg.setUser(status.getUser().getScreenName());epService.getEPRuntime().sendEvent(msg);}}
}

清单3。

Twitter4j侦听器已创建。 此侦听器和CEP侦听器开始侦听。 每个Twitter帖子都被解析为“大声笑”。 每次找到“哈哈”,都会生成一个快乐事件。 每当最近10秒钟内“ lol”的总数超过2时,CEP侦听器都会发出警报。
该代码建立了一个长期运行的线程来获取Twitter提要。 每次达到阈值时,您都会在控制台上看到输出。 请记住要终止程序,它不会自行终止。

现在,您已经可以使用此基本功能,可以通过多种方式扩展此原型。 您可以处理其他数据提要(来自Twitter以外的其他来源),并使用Esper对来自两个数据提要的数据进行核对。 对于视觉上吸引人的输出,您可以将输出提供给某些图表库。 例如,每次Esper识别事件时,数据点都将用于在折线图上渲染一个点。 如果以这种方式跟踪“快乐事件”,那么该图将本质上显示Twitter用户在一段时间内不断变化的快乐水平。

请在评论部分中提供您的反馈,并通过+1与他人分享,如果您希望看到更多有关此主题的信息,请告诉我。

参考:通过我们的JCG合作伙伴 使用Twitter4j和Esper跟踪Twitter上的用户情绪   Mahesh Gadgil在“ 简单而实用”博客上。


翻译自: https://www.javacodegeeks.com/2012/03/twitter4j-and-esper-tracking-user.html

esper

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/356946.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端实现流星雨特效

目录 前言 效果图&#xff1a; HTML CSS 完整代码 前言 使用htmlcss实现简单得浏览器特效&#xff0c;在编译器用导入项目&#xff0c;直接在浏览器打开即可&#xff0c;效果十分得炫酷&#xff0c;十分得哇塞&#xff0c;女朋友直呼NB! 效果图&#xff1a; HTML <!DO…

elementui中tabs切换item中的内容会变_中后台UX优化之道

前言“前台重体验&#xff0c;后台重逻辑”&#xff0c;B端谈 UX 有没有价值&#xff1f;一切电子化的今天&#xff0c;运营、审核、电销、账务……无数岗位依赖中后台系统来完成他们的日常工作&#xff0c;好的 UX 确实可以直接为这些产能提效当中后台的工程师们花费了巨大精力…

介体设计模式示例

本文是我们名为“ Java设计模式 ”的学院课程的一部分。 在本课程中&#xff0c;您将深入研究大量的设计模式&#xff0c;并了解如何在Java中实现和利用它们。 您将了解模式如此重要的原因&#xff0c;并了解何时以及如何应用模式中的每一个。 在这里查看 &#xff01; 目录 …

jvm需要多长时间才能进行转义分析? 可能比您想象的要长。

这篇文章着眼于转义分析&#xff0c;特别是jvm在运行的程序中执行转义分析需要多长时间。 我做了一些观察&#xff0c;但目前还没有全部解释。 作为介绍&#xff0c;让我们绕道看看jvm -Xcomp中一个鲜为人知且使用更少的标志&#xff08;这将是一件好事&#xff09;。 该标志…

Linux常用操作指令整理,这个操作服务器实在是太方便了

目录 前言 常用指令 系统管理命令 打包压缩相关命令 关机/重启机器 Linux管道 Linux软件包管理 vim使用 用户及用户组管理 更改文件的用户及用户组 文件权限管理 更改权限 前言 由于在银行工作&#xff0c;一个项目需要在云桌面、SIT、UAT、小版本、联调环境、准生产…

http invoker_Http Invoker的Spring Remoting支持

http invokerSpring HTTP Invoker是Java到Java远程处理的重要解决方案。 该技术使用标准的Java序列化机制通过HTTP公开服务&#xff0c;并且可以看作是替代方法&#xff0c;而不是Hessian和Burlap中的自定义序列化。 而且&#xff0c;它仅由Spring提供&#xff0c;因此客户端和…

前端实现数字快速递增_天正CAD教程之递增文字应用实例

好课推荐&#xff1a;1、CAD2014&#xff1a;点击查看 2、室内&全屋&#xff1a;点击查看 3、CAD2019&#xff1a;点击查看4、CAD2018&#xff1a;点击查看5、Bim教程&#xff1a;点击查看 6、室内手绘&#xff1a;点击查看7、CAD三维&#xff1a;点击查看8、全屋定制&…

模板设计模式示例

本文是我们名为“ Java设计模式 ”的学院课程的一部分。 在本课程中&#xff0c;您将深入研究大量的设计模式&#xff0c;并了解如何在Java中实现和利用它们。 您将了解模式如此重要的原因&#xff0c;并了解何时以及如何应用模式中的每一个。 在这里查看 &#xff01; 目录 …

账号被暂时禁用使用VScode不能上传代码的解决办法

最近项目在开发的过程中突然不能提交代码&#xff0c;然后使用git账号登录gitee&#xff0c;发现账号账号不能登录了&#xff0c;不知道什么原因导致的禁用&#xff0c;这个账号sunjiaoshou01是被行方同步数据导致的禁用&#xff0c;一问管理员就说是可能一个月没登录会自动封禁…

地图库地之图地图窝_「方舆」秦朝地图及行政区划

秦朝是中国历史上一个极为重要的朝代&#xff0c;由战国时期的秦国发展起来的统一大国&#xff0c;它结束了自春秋起五百年来分裂割据的局面&#xff0c;成为中国历史上第一个大一统的中央集权制国家。秦朝统一六国时&#xff0c;国土面积为214万平方公里&#xff0c;后北收河套…

智能柜台C端代码规范

语法上建议&#xff1a;一、建议尽量使用””代替””上述比较好上述HX0188是一个字符串&#xff0c;用!替代比较好二、引用的组件/插件在当前vue文件内并未使用例&#xff1a;chk_bcip\src\business\common\views\ common-auditwait.vueDevice._$和Utils.AppUtils 都未使用&am…

华为云电脑和马云无影比_阿里云打造未来电脑无影,却因为5G限制,很难达到普及...

在9月17日&#xff0c;在2020阿里巴巴云栖大会上&#xff0c;阿里云发布了第一台云电脑"无影"&#xff0c;极致的简约&#xff0c;一张卡片大小的机器就等于一台电脑了。看到这款电脑的宣传片&#xff0c;真的是极致的未来感&#xff0c;随随便便一块小透明玻璃就是电…

SQL SERVER 2016研究三

2016 SQL SEVER 全程加密程式 column encryption settingEnabled; 重点&#xff1a;需要使用.Net Framework 4.6 新建一个程式如下&#xff1a; 1、创建链接数据库&#xff0c;必选栏位&#xff0c;影响加密。 2、或者在web.config文件数据链接字符串增加如下语句&#xff1a; …

小车故障灯亮显示大全_史上最全汽车故障灯大全,留着一定有用!

大家好&#xff0c;我是汽修小诺&#xff0c;喜欢有关汽车知识的小伙伴请关注我哦&#xff0c;感谢大家&#xff01;现在有车的朋友越来越多&#xff0c;开车途中难免会遇到汽车故障显示灯亮&#xff0c;从而不知道什么原因&#xff0c;有的朋友不敢开&#xff0c;等修理厂来检…

策略设计模式示例

本文是我们名为“ Java设计模式 ”的学院课程的一部分。 在本课程中&#xff0c;您将深入研究大量的设计模式&#xff0c;并了解如何在Java中实现和利用它们。 您将了解模式如此重要的原因&#xff0c;并了解何时以及如何应用模式中的每一个。 在这里查看 &#xff01; 目录 …

vscode修改json.maxItemsComputed配置解决提示

由于要测试明细查询打印业务&#xff0c;分页每页显示30行&#xff0c;要打印30页以上的数据&#xff0c;在打印的过程中会出现分页的问题&#xff0c;这里使用仿真工具测试&#xff0c;需要修改mock数据&#xff0c;造数据&#xff0c;超过5000行就有提示了&#xff0c;需要扩…

【面试题系列|前端面试题】前端高频面试题总结(2021年最新版)

面试过不少前端从业者&#xff0c;简历写的平平淡淡&#xff0c;别人会的技能他也都会&#xff0c;看起来什么都掌握一些&#xff1b;有些会请过来当面聊一下&#xff0c;有些就直接拒绝了&#xff08;如果是公司内要求独立完成项目的岗位&#xff0c;简历里放很多学习时候的DE…

观察者设计模式示例

本文是我们名为“ Java设计模式 ”的学院课程的一部分。 在本课程中&#xff0c;您将深入研究大量的设计模式&#xff0c;并了解如何在Java中实现和利用它们。 您将了解模式如此重要的原因&#xff0c;并了解何时以及如何应用模式中的每一个。 在这里查看 &#xff01; 目录 …

震惊!2021年数十个技术领域图谱曝光,包含Golang、区块链、人工智能、架构师等领域学习路线

前言:不知道你是否和我一样,刚开始学习某个技术领域的时候缺乏坚持的动力,没有一个清晰的学习路线,学习的过程中没有人指导,遇到问题没人一起解答,想深入学习某个领域而又无从下手,不知道该从何处学起?这不,你想要的技术图谱来啦。有了这款武功秘籍,不光能开阔视野,…

70多套java必练项目,适合小白上手!

导读&#xff1a;这些项目不管是找工作练手&#xff0c;还是公司使用当作模板进一步改进&#xff0c;亦或者是当作毕业设计&#xff0c;都很有借鉴意义&#xff01; 编译器建议使用&#xff1a;IDEA,Myeclipse,eclipse,HB-X等都可以。 数据库建议使用&#xff0c;mysql,oracle,…