esper_Twitter4j和Esper:在Twitter上跟踪用户情绪
esper
對于復(fù)雜事件處理和Twitter API的新手,我希望這是一個簡短的教程,可以幫助他們Swift起步。 管理大數(shù)據(jù)并從中挖掘有用的信息是當(dāng)前技術(shù)中最熱門的討論主題。 來自Twitter,Facebook和Linkedin等社交網(wǎng)絡(luò)的半結(jié)構(gòu)化數(shù)據(jù)的爆炸式增長使Hadoop,Cassandra等技術(shù)成為每個技術(shù)對話的一部分。 為了不落后于競爭,所有以客戶為中心的組織都在積極參與制定社會戰(zhàn)略。
公司可以從社交網(wǎng)絡(luò)中獲取什么數(shù)據(jù)? 為初學(xué)者考慮基于位置的服務(wù),定向廣告和算法股權(quán)交易。 IDC Insights擁有一些有關(guān)大數(shù)據(jù)與業(yè)務(wù)分析之間關(guān)系的信息博客 。 Barb Darrow在gigaom.com上的博客文章中解釋說,除非可以使用合適的分析工具進(jìn)行篩選,否則大數(shù)據(jù)本身將毫無意義。
公司經(jīng)常聽取社交信息,以了解客戶對產(chǎn)品的興趣或看法。 他們還試圖確定“影響者”(在社交圖中聯(lián)系最多的人),以便他們可以向此類人員提供更好的報價,并從他們的營銷中獲得更大的收益。 參與股票交易的公司想知道在Twitter上討論了哪些公開貿(mào)易公司,以及用戶對此的看法。
從IBM這樣的大公司到規(guī)模較小的初創(chuàng)企業(yè),每個人都在競相利用大數(shù)據(jù)管理和分析的大部分機(jī)會。 Web上免費(fèi)提供了許多有關(guān)大數(shù)據(jù)的文檔,例如IBM“ Big數(shù)據(jù)平臺”的這本電子書。 但是,其中很多僅涉及理論。 Jouko Ahvenainen在回應(yīng)Barb Darrow的上述帖子時指出,“許多談?wù)摯髷?shù)據(jù)機(jī)會的人過于籠統(tǒng),談?wù)摰氖歉玫目蛻衾斫?#xff0c;更好的銷售等。實際上,您必須非常具體,您利用什么以及如何使用”。
聽起來合理,不是嗎? 因此,我開始通過制作一個想法原型來進(jìn)一步研究這一點(diǎn),這是我知道的唯一好的選擇。 如果我能做到,那么任何人都可以做到。 該代碼非常簡單。 但是,這就是重點(diǎn)。 自己編寫CEP框架非常復(fù)雜,但使用起來卻不是。 同樣,Twitter使通過REST API獲取信息變得非常容易。
| 大數(shù)據(jù)– http://www.bigdatabytes.com/managing-big-data-starts-here/ |
Iphone從來沒有變好。
iPhone從未 如此出色。
如您所見,在句子中僅添加一個單詞就完全改變了含義。 因此,自然語言處理被認(rèn)為是計算機(jī)科學(xué)中最棘手的問題之一。 您可以使用斯坦福大學(xué)提供的免費(fèi)在線講座來學(xué)習(xí)“自然語言處理”。 此鏈接直接帶您進(jìn)入克里斯托弗·曼寧(Christopher Manning)關(guān)于自然語言分析的第一堂課。 但是,以我的觀點(diǎn),在社交媒體和現(xiàn)代通用術(shù)語中普遍使用縮寫詞使這項工作變得容易一些。 諸如“ lol”和“ AFAIK”之類的縮寫準(zhǔn)確地表達(dá)了含義。 使用“大聲笑”項目“有趣”和“ AFAIK”可能表示用戶“不確定”他或她自己。
下面提供的代碼使用Twitter4j api收聽實時Twitter提要,使用Esper CEP收聽事件并在達(dá)到閾值時提醒我們。 您可以從http://twitter4j.org/en/index.html下載twitter4j二進(jìn)制文件或源文件,也可以從http://esper.codehaus.org/下載Esper。 在執(zhí)行代碼之前,請確保創(chuàng)建一個Twitter帳戶(如果您沒有的話),并在此處閱讀Twitter的指南和概念及其流API。 Twitter目前僅允許通過用戶名和密碼組合進(jìn)行身份驗證,但不久之后將逐步淘汰該方法,以支持oAuth身份驗證。 另外,請密切注意其“訪問和速率限制”部分。
下面的代碼在一個線程中使用流式API。 請不要同時使用其他線程,以免達(dá)到速率限制。 持續(xù)達(dá)到命中率限制可能會導(dǎo)致Twitter將您的Twitter ID列入黑名單。 同樣重要的是要注意,流式API并不是以我們的方式發(fā)送每條推文。 Twitter通常會通過每10條推文發(fā)送1條來對數(shù)據(jù)進(jìn)行采樣。 但是,對于我們來說這不是問題,只要我們對數(shù)據(jù)中的模式感興趣,而不對任何特定的推文感興趣。 Twitter為需要無速率限制的流數(shù)據(jù)的企業(yè)提供付費(fèi)服務(wù)。 下圖顯示了數(shù)據(jù)的組成和處理。
| 圖。 代碼中尚未實現(xiàn)的圖表和數(shù)據(jù)庫 |
清單1.表示快樂事件的標(biāo)準(zhǔn)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偵聽器已創(chuàng)建。 此偵聽器和CEP偵聽器開始偵聽。 每個Twitter帖子都被解析為“大聲笑”。 每次找到“哈哈”,都會生成一個快樂事件。 每當(dāng)最近10秒鐘內(nèi)“ lol”的總數(shù)超過2時,CEP偵聽器都會發(fā)出警報。
該代碼建立了一個長期運(yùn)行的線程來獲取Twitter提要。 每次達(dá)到閾值時,您都會在控制臺上看到輸出。 請記住要終止程序,它不會自行終止。
現(xiàn)在,您已經(jīng)可以使用此基本功能,可以通過多種方式擴(kuò)展此原型。 您可以處理其他數(shù)據(jù)提要(來自Twitter以外的其他來源),并使用Esper對來自兩個數(shù)據(jù)提要的數(shù)據(jù)進(jìn)行核對。 對于視覺上吸引人的輸出,您可以將輸出提供給某些圖表庫。 例如,每次Esper識別事件時,數(shù)據(jù)點(diǎn)都將用于在折線圖上渲染一個點(diǎn)。 如果以這種方式跟蹤“快樂事件”,那么該圖將本質(zhì)上顯示Twitter用戶在一段時間內(nèi)不斷變化的快樂水平。
請在評論部分中提供您的反饋,并通過+1與他人分享,如果您希望看到更多有關(guān)此主題的信息,請告訴我。
參考:通過我們的JCG合作伙伴 使用Twitter4j和Esper跟蹤Twitter上的用戶情緒 ? Mahesh Gadgil在“ 簡單而實用”博客上。
翻譯自: https://www.javacodegeeks.com/2012/03/twitter4j-and-esper-tracking-user.html
esper
總結(jié)
以上是生活随笔為你收集整理的esper_Twitter4j和Esper:在Twitter上跟踪用户情绪的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OpenMap教程–第1部分
- 下一篇: 电脑主板黄灯亮屏点不亮(电脑主板亮黄灯是