Skip to main content Skip to complementary content

MeaningCloud

The Qlik MeaningCloud connector uses the Sentiment Analysis API to fetch the sentiment score for a text. The Sentiment Analysis API returns other sentiment information such as, subjectivity, irony, and agreement.

Information note

In previous versions of the Qlik Web Connectors, the MeaningCloud API was accessible through the Sentiment and Text Analytics Connector.

Supported offerings

  • Qlik Sense Desktop
  • Qlik Sense Enterprise on Windows
  • QlikView

This connector must be installed separately.

Ways to access your data

To access your MeaningCloud data, you need to authenticate the connector with your MeaningCloud API key. Your MeaningCloud API key is the same as your license key.

Loading data from tables

Tables that can be loaded
Table Description
Sentiment Use this table to fetch a single sentiment score for the full text.
Information noteThe MeaningCloud Sentiment Analysis API supports Catalan, English, French, Italian, Portuguese, and Spanish. The language of the text is detected automatically by default.

Table parameters

Before running a table to return sentiment analysis for your text, you must configure the request type by setting the table parameters.

Table request parameters
Parameter Description
URL to content Enter the URL for the text that you want to analyze. Only non-authenticated HTTP and FTP are supported.
Text content Type the text that you want to analyze. You cannot enter text and use URL to content simultaneously.
Text type Plain text or markup. If you are analyzing text with markup, such as HTML or XML, select markup to prevent analyzing markup tags.
Language

Select the language or leave as default to automatically detect the language. If you are analyzing short strings, we recommend selecting the text language.

Sentiment model To learn about the MeaningCloud sentiment models, see How do sentiment models work?
Expand global polarity If you choose to enable this parameter, less weight is applied to syntactic relationships.

Response

The table returns the following information:

Table responses and values
Response Value Possible values

status

Shows the status of the API call.

OK

ERROR

status_info    
model Shows the extraction model and language. The extraction model is always general.

_en

_ca

_es

_fr

_pt

_it

score_tag Shows the global sentiment score of the text.

P+

P

NEU

N

N+

NONE

agreement Shows the agreement of sentiment among the parts of the text.

AGREEMENT

DISAGREEMENT

subjectivity Shows whether the text is subjective or objective.

OBJECTIVE

SUBJECTIVE

confidence Shows the confidence of the sentiment analysis. Integer from 0-100.
irony Shows whether the text was analyzed as ironic.

NONIRONIC

IRONIC

Analyzing text

The most effective way to use the MeaningCloud connector is to have a script pass rows of data to the MeaningCloud API to generate a new table with sentiment scores for each row of data.

Using a For/Next loop

Example:  

LET noRows = NoOfRows('Timeline');   for i=0 to $(noRows)-1   LET TextEncoded = Peek('text_urlEncoded', $(i), 'Timeline'); MeaningCloudConnector_Sentiment_Overall: LOAD status as SentimentOverall_status, status_info as SentimentOverall_status_info, model as SentimentOverall_model, score_tag as SentimentOverall_score_tag, score_tag_expanded as SentimentOverall_score_tag_expanded, agreement as SentimentOverall_agreement, subjectivity as SentimentOverall_subjectivity, confidence as SentimentOverall_confidence, irony as SentimentOverall_irony FROM [$(vQwcConnectionName)] (URL IS [http://localhost:5555/data?connectorID=TextAnalyser_MeaningCloudConnector&table=SentimentOverall&text=$(TextEncoded)&txtf=plain&lang=auto&egp=n&appID=], qvx); next

Peek - script function

NoOfRows - chart function

Text is not URL encoded

If you are using text data from a source which is not already URL encoded, you can write a script that encodes the text before sending it to the sentiment analyzer.

Sub fEncodeText(str) str=replace(str, '%', '%25'); // should be first str=replace(str, '#', '%23'); str=replace(str, ' ', '%20'); str=replace(str, '$', '%24'); str=replace(str, '&', '%26'); str=replace(str, '+', '%2B'); str=replace(str, ',', '%2C'); str=replace(str, '/', '%2F'); str=replace(str, '\', '%5C'); str=replace(str, ':', '%3A'); str=replace(str, ';', '%3B'); str=replace(str, '=', '%3D'); str=replace(str, '?', '%3F'); str=replace(str, '@', '%40'); str=replace(str, '[', '%5B'); str=replace(str, ']', '%5D'); str=replace(str, '>', '%3E'); str=replace(str, '<', '%3C'); str=replace(str, chr(10), '%0A'); // Line feed. str=replace(str, chr(39), '%27'); // 39 Apostrophe EncodedText=str; End sub LET noRows = NoOfRows('Timeline'); for i=0 to $(noRows)-1 LET EncodedText=""; LET TextNotEncoded = Peek('text', $(i), 'Timeline'); CALL fEncodeText('$(TextNotEncoded)'); MeaningCloudConnector_SentimentOverall: LOAD status as SentimentOverall_status, status_info as SentimentOverall_status_info, model as SentimentOverall_model, score_tag as SentimentOverall_score_tag, score_tag_expanded as SentimentOverall_score_tag_expanded, agreement as SentimentOverall_agreement, subjectivity as SentimentOverall_subjectivity, confidence as SentimentOverall_confidence, irony as SentimentOverall_irony FROM [$(vQwcConnectionName)] (URL IS [http://localhost:5555/data?connectorID=TextAnalyser_MeaningCloudConnector&table=SentimentOverall&text=$(EncodedText)&txtf=plain&lang=auto&egp=n], qvx); next
Information note URL encoding should be done using UTF-8.

Peek - script function

NoOfRows - chart function

Using the Sentiment table to get sentiment data for comments

The most effective way to use the MeaningCloud Connector is to pass data from a table into to the MeaningCloud Connector to produce a new table with the connector results. The example script below loads a table from an xlsx file, passes rows of data into the MeaningCloud connector, and produces a new table.

Example:  

LOAD comment, handle FROM [lib://AttachedFiles/comments.xlsx] (ooxml, embedded labels, table is Sheet1); LET noRows = NoOfRows('Sheet1'); for i=0 to $(noRows)-1 let comment = Peek('comment', $(i), 'Sheet1'); let handle = Peek('handle', $(i), 'Sheet1'); MeaningCloudConnector_Sentiment: LOAD status as Sentiment_status, status_info as Sentiment_status_info, model as Sentiment_model, score_tag as Sentiment_score_tag, agreement as Sentiment_agreement, subjectivity as Sentiment_subjectivity, confidence as Sentiment_confidence, irony as Sentiment_irony, length as Sentiment_length, '$(comment)' as comment, // include original table columns in new table '$(handle)' as handle // include original table columns in new table FROM [http://localhost:5555/data?connectorID=TextAnalyser_MeaningCloudConnector&table=Sentiment&text=$(comment)&appID=&loadAccessToken=1h7jh3i6h3o7k] (qvx); next //remove original table from memory drop table Sheet1;

When you load data with a script like the one above, you should see one table called MeaningCloudConnector_Sentiment that has all of the MeaningCloud sentiment fields plus the two columns from the original data table. The original table that is used to pass data into the RegEx engine should not be available in Qlik Sense.

Working with the MeaningCloud API quota limits

The Qlik Web Connectors use the MeaningCloud API to extract data from MeaningCloud and load it into your Qlik Sense app. While reloading you MeaningCloud-based app, you might receive an error message that the connector has reached the MeaningCloud API rate limit and that all subsequent API calls will fail until the connector falls back under the throttling limit. If you receive this error message, then you have exceeded one of the API rate limits.

You receive an error message that you have reached the API rate limit

Reference - MeaningCloud developer documentation

You can refer to the MeaningCloud API documentation to learn more about the requirements and restriction imposed by the MeaningCloud API.

Troubleshooting

You receive an error message that you have reached the API rate limit

Possible cause  

You have exceeded the API limits that are imposed on the Qlik Web Connectors by one of the MeaningCloud APIs.

Proposed action  

To reduce the impact of reaching the API rate limits, develop your app with the following in mind:

  • Extract only the data you need.
  • Reload one MeaningCloud-based application at a time.
  • Ensure that loops in your script that make API calls will not result in infinite loops.

Did this page help you?

If you find any issues with this page or its content – a typo, a missing step, or a technical error – let us know how we can improve!