Heads up: This feature is in beta.
What is Sentiment Analysis?
Sentiment analysis uses natural language processing to analyze text-based data and give a score that sums up the mood, opinion or feeling expressed within it. It works best when applied to comments, reviews and survey responses. In Watershed's case, our sentiment analysis feature classifies what is known as the polarity of a given text - this means (1), it classifies whether the text is positive, negative, or neutral and (2), it assigns it a score that quantifies the text.
How it works
Watershed calculates sentiment for any xAPI statements that contain a result.response
with more than 3 characters and two "words", and do not have an activity.definition.type
of cmi.interaction
when the statement is received. The result.response
field is where most xAPI activity providers send through any free text associated with the learner's actions (i.e., comments, forum posts or survey responses). This field is typically excluded when it is being used as part of a question answer.
How we add the sentiment data to a statement
Each time we calculate the sentiment for a specific statement we append a result.extension
array to it that contains the below data:
{
“http://watershedlrs.com/xapi/extensions/sentiment”: {
“generalSentiment” : “positive”,
“positivePolarity” : 0.661,
“neutralPolarity” : 0.339,
“negativePolarity” : 0,
“compoundPolarity” : 0.868
}
}
Due to the immutability of xAPI statements the actual sentiment score is not added to the xAPI statement we stored in our LRS. This means then when requesting statements from the Statement API the score is not included. However, it is included when using the Data Export or Aggregation APIs.
Property | Explanation | Example value |
generalSentiment | The generalSentiment expresses in a single word the overall sentiment of the text. | "positive", "negative", "neutral" |
positivePolarity |
The positive, neutral, and negative polarity are a sum of the raw categorization of the words that are identified as positive, negative, or neutral that is then normalized it to be between -1 (most extreme negative) and +1 (most extreme positive). It does not take into account syntax, multi-word phrases, modifiers, punctuation or contrastive conjunctions. | 0.661 |
neutralPolarity | ||
negativePolarity | ||
compoundPolarity |
The compound score is computed by averaging the scores of each word in the text that is then normalized to be between -1 (most extreme negative) and +1 (most extreme positive). This is the most useful metric if you want a single measure of sentiment for the text as it measures the text as a whole taking into account syntax, multi-word phrases, modifiers, punctuation or contrastive conjunctions. |
-0.556 |
Using the sentiment data
Measures
There is a category of measures in every enterprise Watershed account called "Sentiment Analysis" which contains measures that can access all of the data contained in the extension.
Measure Name | Explanation |
General Sentiment | Expresses the LAST value of the generalSentiment extension for the filtered dimension |
Positive Sentiment | Counts the number of statements that have the value of positive in the generalSentiment extension |
Neutral Sentiment | Counts the number of statements that have the value of neutral in the generalSentiment extension |
Negative Sentiment | Counts the number of statements that have the value of negative in the generalSentiment extension |
Average Sentiment Score | Averages the value of the compoundPolarity of all statements related to the filtered report dimension |
Maximum Sentiment Score | The maximum value of the compoundPolarity from all statements related to the filtered report dimension |
Minimum Sentiment Score | The minimum value of the compoundPolarity from all statements related to the filtered report dimension |
Report Examples
Because the sentiment data is applied at the statement level you can utilize the data with any Dimension or Aggregation that applies to sentiment data.
Metric reports and time based reports
The sentiment polarity (score), and the general sentiment can be nicely expressed across all activities over time. This shows the general 'state of the union' of how learners were feeling about the content:
Metric reports can also nicely display things like the average of the compound polarity, and counts of all of the instances of the general sentiment.
Sentiment by activity or groups
Bar reports and leaderboards can easily display the sentiment 'ranking' of all of your activities. Stacked bars are particularly useful in visualizing this as they can show the counts of all of the general sentiment options in one:
Correlation and Scatter reports
You can correlate sentiment with other bits of information, such as the learners' score to see if positive or negative sentiment polarities relate to course performance:
You can also visualize this using a scatter report to see those who are both high performers, and high scorers:
What if I think the sentiment is wrong?
Sentiment analysis is a beta feature. This is because while we have utilized the best machine learning algorithms to build this feature, its “model” is still quite young. This is why we are launching it, though. We want to know your experiences with the data it generates so we can use your feedback to teach the model what it's gotten wrong so it can become smarter. If you feel that the sentiment for a specific activity is wrong, please contact the support team and they will look into it.