Analyzing Twitter sentiment with new Workflows processing capabilities
Mete Atamel
Cloud Developer Advocate
The Workflows team recently announced the general availability of iteration syntax and connectors!
Iteration syntax supports easier creation and better readability of workflows that process many items. You can use a for loop to iterate through a collection of data in a list or map, and keep track of the current index. If you have a specific range of numeric values to iterate through, you can also use range-based iteration.
Connectors have been in preview since January. Think of connectors like client libraries for workflows to use other services. They handle authentication, request formats, retries, and waiting for long-running operations to complete. Check out our previous blog post for more details on connectors. Since January, the number of available connectors has increased from 5 to 20.
The combination of iteration syntax and connectors enables you to implement robust batch processing use cases. Let’s take a look at a concrete sample. In this example, you will create a workflow to analyze sentiments of the latest tweets for a Twitter handle. You will be using the Cloud Natural Language API connector and iteration syntax.
APIs for Twitter sentiment analysis
The workflow will use the Twitter API and Natural Language API. Let’s take a closer look at them.
Twitter API
To use the Twitter API, you’ll need a developer account. Once you have the account, you need to create an app and get a bearer token to use in your API calls. Twitter has an API to search for Tweets.
Here's an example to get 100 Tweets from the @GoogleCloudTech handle using the Twitter search API:
Natural Language API
Natural Language API uses machine learning to reveal the structure and meaning of text. It has methods such as sentiment analysis, entity analysis, syntactic analysis, and more. In this example, you will use sentiment analysis. Sentiment analysis inspects the given text and identifies the prevailing emotional attitude within the text, especially to characterize a writer's attitude as positive, negative, or neutral.
You can see a sample sentiment analysis response here. You will use the score
of documentSentiment
to identify the sentiment of each post. Scores range between -1.0 (negative) and 1.0 (positive) and correspond to the overall emotional leaning of the text. You will also calculate the average and minimum sentiment score of all processed tweets.
Define the workflow
Let’s start building the workflow in a workflow.yaml
file.
init
step, read the bearer token, Twitter handle, and max results for the Twitter API as runtime arguments. Also initialize some sentiment analysis related variables:In the searchTweets
step, fetch tweets using the Twitter API:
In the processPosts
step, analyze each tweet and keep track of the sentiment scores. Notice how each tweet is analyzed using the new for-in
iteration syntax with its access to the current index
.
Under the processPosts
step, there are multiple substeps. The analyzeSentiment
step uses the Language API connector to analyze the text of a tweet and the next two steps calculate the total sentiment and keep track of the minimum sentiment score and index:
Once outside the processPosts
step, calculate the average sentiment score, and then log and return the results
Deploy and execute the workflow
To try out the workflow, let’s deploy and execute it.
Deploy the workflow:
Execute the workflow (don’t forget to pass in your own bearer token):
After a minute or so, you should see the see the result with sentiment scores:
Next
Thanks to the iteration syntax and connectors, we were able to read and analyze Tweets in an intuitive and robust workflow with no code. Please reach out to @meteatamel and krisabraun@ for questions and feedback.