Data Processing
Interesting, you have very interesting pandas styles that should be looked at:


def color_negative_red(val):
"""
Takes a scalar and returns a string with
the css property 'color: red' for negative
strings, black otherwise.
"""
color = 'red' if val < 0 else 'black'
return 'color: %s' % color
matrix.style.applymap(color_negative_red)

Confusion Matrix 

import model_evaluation_utils as meu
meu.display_confusion_matrix_pretty(true_labels=sentiment_category, 
                                    predicted_labels=sentiment_category_tb, 
                                    classes=['negative', 'neutral', 'positive'])


Multi Processing:

‘’
%timeit
from multiprocessing import Pool

language=df["Title"].copy()
dete = language.copy()

def langafranca(x):
    try:
        d =detect(dete.iloc[x])
        return d
    except:
        pass

if __name__ == '__main__':
    pool = Pool()                                            # Create a multiprocessing Pool
    output = pool.map(langafranca, range(len(dete)))         # process data_inputs iterable with pool    
    
‘’

    
    Here is the thing: NLP keyword. 
    
    First label a few data then get the keywords extracted with naive bases - this would give you an idea of the keywords.
    Then use the keywords to get synonyms with naive bases.