Skip to main content

DeepPavlov (Sentiment Analysis)

This article explains how to set up sentiment analysis using https://deeppavlov.ai/ and a pre-built Docker image.

Installing DeepPavlov

git clone https://github.com/LiveHelperChat/sentiment && cd sentiment
docker-compose -f docker-compose.yml pull
wget https://livehelperchat.com/var/deep.tgz
tar zxfv deep.tgz
rm -f deep.tgz

Run DeepPavlov:

docker-compose -f docker-compose.yml up

Run DeepPavlov as a service:

docker-compose -f docker-compose.yml up -d

Testing the installation:

curl -X POST "http://localhost:5000/model" -H "accept: application/json" -H "Content-Type: application/json" -d "{\"x\":[\"all went no so good, but could have been better\"]}"

If the installation was successful, you should see output similar to this:

[["neutral"]]

Configuring Live Helper Chat

The requirements for this setup are:

  • Sentiment should be set on chat close.
  • Sentiment analysis should only run for chats with operator participation.
  • A relevant chat subject should be set based on the sentiment.

This configuration uses webhooks.

Configuring the REST API Call

This setup sends only messages from the operator and visitor that occurred after the chat became pending to the bot. The {{msg_all_since_transfer_content}} placeholder is used for this purpose. You can also use other placeholders if needed.

The configuration expects a 200 header in the output, and the sentiment evaluation should be contained in the first element of the response.

Configuring the Bot

For simplicity, the bot configuration includes:

  • chat.close: This trigger is executed when a chat is closed.
  • Set sentiment: This trigger is executed if the REST API returns a sentiment.
  • very_negative, negative, neutral, positive, very_positive: These triggers set a subject based on the sentiment.

chat.close trigger:

Set sentiment trigger:

Currently, only very_positive and neutral evaluations are defined. You can add the missing evaluations in a similar way.

very_positive and neutral triggers:

The first text message is for debugging. The second response sets a subject with ID 1.

Configuring the Webhook

The webhook is configured to listen for the chat close event and to only trigger for chats that had operator involvement.

That concludes the setup.