Branch: master
Find file History
Permalink
Type Name Latest commit message Commit time
..
Failed to load latest commit information.
src/main
README.md Rename modules (#64) Apr 9, 2018
diagram.png Rename modules (#64) Apr 9, 2018
output.png
pom.xml Update Jet version to 0.7 (#71) Oct 16, 2018

README.md

Twitter Cryptocurrency Sentiment Analysis

Twitter content is analyzed in real time to calculate cryptocurrency trend list with its popularity index.

This demo shows how to ingest a Tweet stream and how to use streaming operations in Jet (windowing, event-time processing, streaming aggregations). It also demonstrates integrating of 3rd party NLP library into the parallel data pipeline.

Package Level Structure

At the highest level, the source code is organized into four packages

  • com.hazelcast.jet.demo The main class (JetCoinTrend) with the main method resides in this package.
  • com.hazelcast.jet.demo.core The expert Core API version of the demo classes reside in this package.
  • com.hazelcast.jet.demo.common The common data source, NLP analyzer and lookup table classes shared in both Pipeline and Core APIs resides in this package.
  • com.hazelcast.jet.demo.util The utility helper classes reside in this package.

Data Pipeline

The tweets are read from Twitter and categorized by coin type (BTC, ETC, XRP, etc). In next step, NLP sentimental analysis is applied to each tweet to calculate the sentiment score of the respective tweet. This score says whether the Tweet has rather positive or negative sentiment. Jet uses Stanford NLP lib to compute it.

For each cryptocurrency, Jet aggregates scores from last 30 seconds, last minute and last 5 minutes and prints the coin popularity table to the output like below:

Prerequisites

You'll need to have API Credentials from Twitter to make this demo work.

To obtain them, visit the following website:

Please fill in the Twitter credentials into the file below.

src/main/resources/twitter-security.properties

Building the Application

To build and package the application, run:

Please note that maven may take some time to download all dependencies on the first run since the NLP libraries are hefty in file size.

mvn clean package

Running the Application

After building the application, run the application with:

mvn exec:java