Apache Storm的实时情绪分析示例

实时情感分析是指处理自然语言文本(或语音)流以提取主观信息。 琐碎的用例用于构建推荐引擎或查找社交媒体趋势。

我选择了Apache Storm作为实时处理引擎。 Storm非常强大(我们正在生产中使用它),并且非常容易在其之上实现自定义逻辑。

我编写了一个非常简单的项目( 源代码 ),该项目可以实时进行情感分析(使用随机句子作为输入数据)。 范围是获取随机句子作为输入,然后执行一些情感分析。 最终确定当前句子的分数是还是负,并保持结果。

simple_sentiment_analysis_storm_pipeline

实现逻辑如下:

  1. (虚拟喷口)带有随机句子的Feed管道。
  2. (加粗螺栓)阻止任何对计分无用的单词。 创建一个不包含无用词(例如文章)的新句子,并将其传递给下一个组件。
  3. (正计分)获得句子(修饰的)句子并提供正分。
  4. (负计分螺栓)获得句干并提供负分。
  5. (最终得分螺栓)比较正负分数,并确定此句子是正数还是负数。
  6. (持久性螺栓)持久化处理的数据:
    原始句子,修改句子以及最终,正面和负面分数
    作为持久性存储,我选择了Apache HBase (仅供参考),它以批处理模式存储事件。 使用Storm(Tick Tuple)的内部触发机制,每1秒触发一次批量持久性(可配置)。 除了HBase之外,我们还可以轻松使用Redis,Cassandra,MongoDB或Elasticsearch(所有这些在此用例中均有效)。

每个词干和计分螺栓都在内存数据库中使用虚拟对象,其中包含可用于对每个句子进行评分/加粗的所有相对单词。

为了在单个节点或集群中运行此示例,可以使用Storm项目Flux 。 整个拓扑管道是使用单个配置文件( topology.yaml )定义的。

示例运行:

Local execution:
storm jar target/sentiment-analysis-storm-0.0.1-SNAPSHOT.jar org.apache.storm.flux.Flux --local src/test/resources/flux/topology.yaml -s 10000

Cluster execution:
storm jar target/sentiment-analysis-storm-0.0.1-SNAPSHOT.jar org.apache.storm.flux.Flux --remote src/test/resources/flux/topology.yaml --c nimbus.host=localhost

另外,有一个简单的JUnit测试( SentimentAnalysisTopologyTest ),该测试在本地执行相同的拓扑。

您可以查看自述文件以了解详细信息。 至于先决条件,您可以检查我的最新帖子 ,以安装单个本地HBase实例和带有2个Workers的本地Storm集群。

这是使用Apache Storm进行情感分析的非常简单的方法。 我希望有更多的空闲时间来撰写新文章,并提供用于情感分析的切实可行的解决方案。

翻译自: https://www.javacodegeeks.com/2015/12/real-time-sentiment-analysis-example-apache-storm.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值