Comparer les performances des modèles à n-grammes
Vous savez maintenant réaliser une analyse de sentiment en convertissant du texte en différentes représentations à n-grammes et en les donnant en entrée à un classifieur. Dans cet exercice, nous allons effectuer une analyse de sentiment sur les mêmes critiques de films qu’auparavant en utilisant deux modèles à n-grammes : des unigrammes et des n-grammes jusqu’à n égal à 3.
Nous comparerons ensuite les performances selon trois critères : la précision du modèle sur l’ensemble de test, le temps d’exécution du programme et le nombre de variables générées lors de la création de la représentation à n-grammes.
Cet exercice fait partie du cours
Feature Engineering pour le NLP en Python
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
start_time = time.time()
# Splitting the data into training and test sets
train_X, test_X, train_y, test_y = train_test_split(df['review'], df['sentiment'], test_size=0.5, random_state=42, stratify=df['sentiment'])
# Generating ngrams
vectorizer = ___
train_X = vectorizer.fit_transform(train_X)
test_X = vectorizer.transform(test_X)
# Fit classifier
clf = MultinomialNB()
clf.fit(train_X, train_y)
# Print accuracy, time and number of dimensions
print("The program took %.3f seconds to complete. The accuracy on the test set is %.2f. The ngram representation had %i features." % (time.time() - start_time, clf.score(test_X, test_y), train_X.shape[1]))