Tagging sentiment#

This tutorials shows you how to do sentiment analysis in Flair.

Tagging sentiment with our standard model#

Our standard sentiment analysis model uses distilBERT embeddings and was trained over a mix of corpora, notably the Amazon review corpus, and can thus handle a variety of domains and language.

Let’s use an example sentence:

from flair.nn import Classifier
from flair.data import Sentence

# load the model
tagger = Classifier.load('sentiment')

# make a sentence
sentence = Sentence('This movie is not at all bad.')

# predict NER tags
tagger.predict(sentence)

# print sentence with predicted tags
print(sentence)

This should print:

Sentence[8]: "This movie is not at all bad." → POSITIVE (0.9929)

Showing us that the sentence overall is tagged to be of POSITIVE sentiment.

Tagging sentiment with our fast model#

We also offer an RNN-based variant which is faster but less accurate. Use it like this:

from flair.nn import Classifier
from flair.data import Sentence

# load the model
tagger = Classifier.load('sentiment-fast')

# make a sentence
sentence = Sentence('This movie is very bad.')

# predict NER tags
tagger.predict(sentence)

# print sentence with predicted tags
print(sentence)

This should print:

Sentence[6]: "This movie is very bad." → NEGATIVE (0.9999)

This indicates that the sentence is of NEGATIVE sentiment. As you can see, its the same code as above, just loading the ‘sentiment-fast’ model instead of ‘sentiment’.

List of Sentiment Models#

We end this section with a list of all models we currently ship with Flair:

ID

Language

Task

Training Dataset

Accuracy

‘sentiment’

English

detecting positive and negative sentiment (transformer-based)

movie and product reviews

98.87

‘sentiment-fast’

English

detecting positive and negative sentiment (RNN-based)

movie and product reviews

96.83

‘de-offensive-language’

German

detecting offensive language

GermEval 2018 Task 1

75.71 (Macro F1)