sentlex icon indicating copy to clipboard operation
sentlex copied to clipboard

Tools and Libraries for Lexicon-Based Sentiment Analysis

sentlex

Sentlex is a python library for performing lexicon based sentiment analysis. It currently ships:

  • A lexicon class library with implementations for a home grown sentiment lexicon, and SentiWordNet v3.0
  • A sentiment classifier class library with various algorithm implementations, including a negation detection algorithm.

Getting Started

In [1]: import sentlex
 
In [2]: import sentlex.sentanalysis
 
In [3]: input_text='''we had a great time at the tirreno hotel, very friendly and helpful, nothing was ever too much trouble. 
the rooms were in excellent condition, very clean and comfortable.'''
 
In [4]: SWN = sentlex.SWN3Lexicon()
 
In [5]: classifier = sentlex.sentanalysis.BasicDocSentiScore()
 
In [6]: classifier.classify_document(input_text, tagged=False, L=SWN, a=True, v=True, n=False, r=False, negation=False, verbose=False)
Out[6]: (1.1118254346272922, 0.16043343653250774)
 
In [7]: classifier.resultdata
Out[7]:
{'annotated_doc': 'we/PRP had/VBD##NEGAT:NONEG##POS:0.00986842105263##NEG:0.0263157894737 a/DT great/JJ##NEGAT:NONEG##POS:0.3125##NEG:0.0 time/NN at/IN the/DT tirreno/NN hotel/NN ,/, very/RB friendly/RB and/CC helpful/JJ##NEGAT:NONEG##POS:0.25##NEG:0.0 ,/, nothing/NN was/VBD##NEGAT:NONEG##POS:0.0288461538462##NEG:0.0 ever/RB too/RB much/RB trouble./NNP the/DT rooms/NNS were/VBD##NEGAT:NONEG##POS:0.0288461538462##NEG:0.0 in/IN excellent/NN condition/NN ,/, very/RB clean/JJ##NEGAT:NONEG##POS:0.286764705882##NEG:0.0441176470588 and/CC comfortable/JJ##NEGAT:NONEG##POS:0.195##NEG:0.09 ./.',
 'doc': 'we had a great time at the tirreno hotel, very friendly and helpful, nothing was ever too much trouble. the rooms were in excellent condition, very clean and comfortable.',
 'found_list': ['had/VBD',
  'great/JJ',
  'helpful/JJ',
  'was/VBD',
  'were/VBD',
  'clean/JJ',
  'comfortable/JJ'],
 'resultneg': 0.16043343653250774,
 'resultpos': 1.1118254346272922,
 'tokens_found': 7,
 'tokens_negated': 0,
 'unscored_list': []}

Sentiment Lexicons

In [1]: import sentlex
 
In [2]: SWN = sentlex.SWN3Lexicon()
 
In [3]: SWN.getadjective('good')
Out[3]: (0.6190476190476191, 0.0)
 
In [4]: SWN.getverb('amuse')
Out[4]: (0.75, 0.0)
 
In [5]: SWN.getadjective('terrible')
Out[5]: (0.0, 0.65625)

##SentiWordNet v3.0 This library ships the SentiWordNet v3.0, distributed under Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) license..