我是一个软件开发谁想学习开发应用程序的HANA。是的,我在Open SAP上过HANA相关的课程,我看过SAP HANA学院提供的几个视频,它们是我熟悉HANA的绝佳资源。然而,我发现自己想学更多。与其在没有有用上下文的情况下浏览HANA指南,我要求自己开发一个使用HANA的场景/应用程序。
我看到这个博客描述了一个使用twitter数据检测世界杯目标的策略,所以我想为什么不在HANA上构建这个应用程序,因为所有主要组件(除了raspberry pi)都是可用的,并且可以在HANA中轻松配置。主要组件是:
之后,我会将结果与实际事件进行比较,并描述一些可以改进的地方。
我的源代码在这里可用。
要求
–需要SAP HANA SPS6或更高版本才能进行XS出站连接。我正在使用SAP CAL中提供的SAP HANA developer edition rev 72。要获得自己的开发人员版本,请参阅
–在您的Twitter帐户中创建Twitter应用程序。有关更多信息,请参阅以下链接
1. 连接Twitter API–HANA XS Outbound Connection
要从Twitter获取数据到HANA,我需要XSJS Outbound Connection,XSJS service将tweet存储到数据库,XSJS scheduler定期运行服务。
XSJS Outbound Connection–Twitter_连接.xshttpdest
XSJS服务-TwitterCollector.xsjs文件
在服务,我想收集包含"#BELvsUSA"的tweet,这是Twitter建议的比利时对美国足球赛的标签。
如果你熟悉Twitter API,你可能会想知道为什么在我的代码中,我没有使用HTTPS协议,因为Twitter只允许HTTPS协议。这是因为我没有下载SAP加密库(sapgenpse)的权限,而sapgenpse是与HANA XS(参考)建立HTTPS出站连接的先决条件。所以我创建了php服务作为Twitter的适配器。如果我能访问图书馆,我会直接用HTTPS连接到Twitter API。
2。文本分析的全文索引
一旦我有了tweet数据,我就求助于我在tweet数据上创建的全文索引来进行文本分析。我用lingu-FULL把tweet分解成单个单词。例如:用户@juanvo官在推特上说"比利时队的进球当之无愧#BELvsUSA"。索引将提供以下信息
为什么我需要将微博分解成文字?这只是为了让我更容易排除那些没有实际进球的文字,即@SmileyElie在推特上写道:"美国有史以来最好的守门员!!!印象深刻!!!#贝尔夫苏萨"。微博包含"进球",但微博并不表示其中一支球队得分。
3。指数平滑算法
我选择的表示目标的公式是tweets提目标的百分比来表示目标是否发生了
每分钟提目标的tweets个数*100/每分钟提目标的tweets个数
当我们得到所有提目标的tweets后,返利联盟,我想执行指数平滑算法,这通常是用来消除噪声数据。让我给你看一个折线图,显示在算法之前每分钟提到目标的tweet的百分比。
我选择了SAP PAL库中可用的单指数平滑算法,应用该算法后,结果显示为绿色的线,比原来的图更平滑。
4。SAPUI5用于演示
哦,你可以看到上面的图形是SAPUI5图形。
结果
现在让我们将我们的图形与实际事件进行比较。在2014年世界杯第16轮比利时对美国的比赛中,有3个进球。
如果我能把时间线转换成我们的图表,进球发生在下面图表中粗体的绿色点上以及进球发生后,推特上提到进球的百分比增加到大约8%。
比利时在加时赛中的第一个进球肯定会让人兴奋,因为很多人都在期待一个进球。由于比利时的第二个进球,这一比例再次上升,但推特的数量没有以前多了。此外,智能建站软件,在加时赛下半场美国队的第一个进球后,推特又开始忙碌起来。这无疑给美国队带来了扭转局面的希望。不幸的是,美国队不能再进一球,输掉了比赛。twitterapi
我从search/tweets收集数据,这是一个restapi源,它从有限的最近tweets语料库中提供相关tweets。为了得到更相关的搜索结果,需要使用流式API,这需要更复杂的解决方案。然而,为了这个练习的目的,我不想在获取tweets上花费太多的精力,正如你从上图中看到的,从restapi收集到的tweets提供了足够的信息来指示目标何时发生。文本分析
在执行分析时可以进行改进,特别是当您处理来自不同语言的数据时,例如golazo在西班牙语中的意思是goal,在其他语言中可能有许多不同的变体。
我选择的文本分析也有局限性,即@Guevara_Caro在推特上写道"如果不是Howard和Beasley,#美国队将输掉几个球!#贝尔有一个很棒的团队。让我们捡起来!!#GoUSA#BELvsUSA"公司。显然,tweet包含goal一词,但整个句子并不表示目标已经发生。正则表达式(R&other programming language中有,但HANA SQL中没有)应该用来更准确地捕捉tweet中的目标。
结论