La négation était prise en compte au mauvais endroit

This commit is contained in:
Keshav Das
2023-03-23 15:39:17 +00:00
parent d3218bbc02
commit 16a46d48a4

View File

@@ -1,6 +1,3 @@
import nltk
import os
from dataclasses import dataclass
from vaderSentiment_fr.vaderSentiment import SentimentIntensityAnalyzer from vaderSentiment_fr.vaderSentiment import SentimentIntensityAnalyzer
#Emplacements des fichiers contenants le lexique et les avis #Emplacements des fichiers contenants le lexique et les avis
@@ -33,9 +30,11 @@ scoreWords.close()
### Partie analyse d'avis ### ### Partie analyse d'avis ###
file = open(reviewPath, "r", encoding='UTF-8') file = open(reviewPath, "r", encoding='UTF-8')
reviews = (file.read()).split('//') reviews = (file.read()).split('//')
#liste (partielle) de mots-clé pertinents pour un musée #liste (partielle) de mots-clé pertinents pour un musée
keys=['attente', "d'attente", 'queue', 'patienter', 'patience', 'patient', keys=['attente', "d'attente", 'queue', 'patienter', 'patience', 'patient',
'patients', 'patiente', 'patientes', 'file', 'files', 'patients', 'patiente', 'patientes', 'file', 'files',
@@ -60,10 +59,12 @@ keyWords = []
#Score moyen d'un avis #Score moyen d'un avis
averageScore = 0 averageScore = 0
vaderScore = {'neg': 0, 'neu': 0, 'pos': 0, 'compound': 0} vaderScore = {'neg': 0, 'neu': 0, 'pos': 0, 'compound': 0}
SIA = SentimentIntensityAnalyzer() SIA = SentimentIntensityAnalyzer()
#Fonction de recherche d'un mot d'un avis parmis le lexique #Fonction de recherche d'un mot d'un avis parmis le lexique
def search(word): def search(word):
if (len(word) != 0): if (len(word) != 0):
@@ -86,7 +87,7 @@ def isNegative(sentence):
vaderCriteria = ['neg', 'neu', 'pos', 'compound'] vaderCriteria = ['neg', 'neu', 'pos', 'compound']
for Review in reviews: def ReviewAnalyzer(review):
reviewScore = 0 reviewScore = 0
#miniKey donne les mots-clé contenus dans l'avis en train d'être analysé #miniKey donne les mots-clé contenus dans l'avis en train d'être analysé
@@ -98,11 +99,6 @@ for Review in reviews:
sentences = Review.split('.') sentences = Review.split('.')
for sent in sentences: for sent in sentences:
#Ces 3 lignes sont pour comparer avec le score de VADER
score = SIA.polarity_scores(sent)
for criteria in vaderCriteria:
vaderScore[criteria] += score[criteria]
#On découpe la phrase en une liste de mots #On découpe la phrase en une liste de mots
sentence = list(e.strip(',.') for e in sent.split()) sentence = list(e.strip(',.') for e in sent.split())
for Word in sentence: for Word in sentence:
@@ -113,15 +109,15 @@ for Review in reviews:
#recherche d'un éventuel mot-clé associé à ce caractère positif/négatif #recherche d'un éventuel mot-clé associé à ce caractère positif/négatif
if (temp != -1): if (temp != -1):
for key in keys:
if (key in sentence):
#On change la valeur du score associé au mot-clé #On change la valeur du score associé au mot-clé
#si la phrase contient une négation #si la phrase contient une négation
if (isNegative(sentence)): if (isNegative(sentence)):
temp[1] = -temp[1] temp[1] = -temp[1]
for key in keys:
if (key in sentence):
#Récupération des mots-clés déjà détectés dans tous les avis #Récupération des mots-clés déjà détectés dans tous les avis
cles = list(e[0] for e in keyWords) cles = list(e[0] for e in keyWords)
@@ -139,14 +135,17 @@ for Review in reviews:
#Mise à jour du score de l'avis #Mise à jour du score de l'avis
reviewScore += temp[1] reviewScore += temp[1]
#Mise à jour du score moyen de tous les avis
averageScore += reviewScore
#Caractéristiques de l'avis analysé #Caractéristiques de l'avis analysé
miniKey = set(miniKey) miniKey = set(miniKey)
print("Mots-Clé: ", miniKey) return(miniKey, reviewScore)
print("Score: ", reviewScore)
print('') for Review in reviews:
ReviewAnalayzer(Review)
#Ces 3 lignes sont pour comparer avec le score de VADER
score = SIA.polarity_scores(sent)
for criteria in vaderCriteria:
vaderScore[criteria] += score[criteria]
averageScore /= len(reviews) averageScore /= len(reviews)
print("Format: [[Mot-clé, score associé]]") print("Format: [[Mot-clé, score associé]]")