.gitattributes README.md
pip install vaderSentiment

from vaderSentiment.vaderSentiment import SentimentIntensityAnalyzer
analyser = SentimentIntensityAnalyzer()

analyser.polarity_scores("I hate watching movies")  

import nltk
from nltk.tokenize import word_tokenize, RegexpTokenizer
from nltk.sentiment.vader import SentimentIntensityAnalyzer

nltk.download('all')

import numpy as np

sentence = """I love dancing & painting"""
tokenized_sentence = nltk.word_tokenize(sentence)

from nltk import word_tokenize
from typing import List

Analyzer = SentimentIntensityAnalyzer()

pos_word_list=[]
neu_word_list=[]
neg_word_list=[]
pos_score_list=[]
neg_score_list=[]
score_list=[]
for word in tokenized_sentence:
    if (Analyzer.polarity_scores(word)['compound']) >= 0.1:
        pos_word_list.append(word)
        score_list.append(Analyzer.polarity_scores(word)['compound'])
    elif (Analyzer.polarity_scores(word)['compound']) <= -0.1:
        neg_word_list.append(word)
        score_list.append(Analyzer.polarity_scores(word)['compound'])
    else:
        neu_word_list.append(word)
        score_list.append(Analyzer.polarity_scores(word)['compound'])

print('Positive:',pos_word_list)
print('Neutral:',neu_word_list)
print('Negative:',neg_word_list) 
print('Score:', score_list)
score = Analyzer.polarity_scores(sentence)
print('\nScores:', score)

predict_log=score.values()
value_iterator=iter(predict_log)
neg_prediction=next(value_iterator)
neu_prediction=next(value_iterator)
pos_prediction=next(value_iterator)

prediction_list=[neg_prediction, pos_prediction]
prediction_list_array=np.array(prediction_list)


def predict():
        probs = []
        for text in texts:
            offset = (self.score(text) + 1) / 2.
            binned = np.digitize(5 * offset, self.classes) + 1
            simulated_probs = scipy.stats.norm.pdf(self.classes, binned, scale=0.5)
            probs.append(simulated_probs)
        return np.array(probs)

latex_special_token = ["!@#$%^&*()"]

import operator

def generate(text_list, attention_list, latex_file, color_neg='red', color_pos='green', rescale_value = False):
  print("hello")
  attention_list = rescale(attention_list)
  word_num = len(text_list)
  print(len(attention_list))
  print(len(text_list))
 
    
  text_list = clean_word(text_list)
  with open(latex_file,'w') as f:
    f.write(r'''\documentclass[varwidth]{standalone}
\special{papersize=210mm,297mm}
\usepackage{color}
\usepackage{tcolorbox}
\usepackage{CJK}
\usepackage{adjustbox}
\tcbset{width=0.9\textwidth,boxrule=0pt,colback=red,arc=0pt,auto outer arc,left=0pt,right=0pt,boxsep=5pt}
\begin{document}
\begin{CJK*}{UTF8}{gbsn}'''+'\n')
    string = r'''{\setlength{\fboxsep}{0pt}\colorbox{white!0}{\parbox{0.9\textwidth}{'''+"\n"
    for idx in range(len(attention_list)):
      if attention_list[idx] > 0:
        string += "\\colorbox{%s!%s}{"%(color_pos, attention_list[idx])+"\\strut " + text_list[idx]+"} "
      else:
        string += "\\colorbox{%s!%s}{"%(color_neg, -attention_list[idx])+"\\strut " + text_list[idx]+"} "
          
    string += "\n}}}"
    f.write(string+'\n')
    f.write(r'''\end{CJK*}
\end{document}''')

  

def rescale(input_list):
  
  the_array = np.asarray(input_list)
  the_max = np.max(abs(the_array))
  rescale = the_array/the_max
  rescale = rescale*100
  rescale = np.round(rescale, 3)
  
  '''
  the_array = np.asarray(input_list)
  the_max = np.max(the_array)
  the_min = np.min(the_array)
  rescale = ((the_array - the_min)/(the_max-the_min))*100
  for i in rescale:
    print(rescale)
  '''
  
  return rescale.tolist()

def clean_word(word_list):
	new_word_list = []
	for word in word_list:  
		for latex_sensitive in ["\\", "%", "&", "^", "#", "_",  "{", "}"]:
			if latex_sensitive in word:
				word = word.replace(latex_sensitive, '\\'+latex_sensitive)
		new_word_list.append(word)
	return new_word_list

if __name__ == '__main__':
  color_1 = 'red'
  color_2 = 'green'
  words = word_tokenize(sentence)
  word_num = len(words)
  generate(words, score_list, "sple.tex", color_1, color_2)


