mirror of
https://git.roussel.pro/telecom-paris/pact.git
synced 2026-02-09 02:20:17 +01:00
La négation était prise en compte au mauvais endroit
This commit is contained in:
@@ -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):
|
||||||
|
|
||||||
|
#On change la valeur du score associé au mot-clé
|
||||||
|
#si la phrase contient une négation
|
||||||
|
if (isNegative(sentence)):
|
||||||
|
temp[1] = -temp[1]
|
||||||
|
|
||||||
for key in keys:
|
for key in keys:
|
||||||
if (key in sentence):
|
if (key in sentence):
|
||||||
|
|
||||||
|
|
||||||
#On change la valeur du score associé au mot-clé
|
|
||||||
#si la phrase contient une négation
|
|
||||||
if (isNegative(sentence)):
|
|
||||||
temp[1] = -temp[1]
|
|
||||||
|
|
||||||
#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é]]")
|
||||||
|
|||||||
Reference in New Issue
Block a user