Correction IA pos neg

			
import csv

def dicoPlusMoins(nomDeFichier):
    '''
    a partir du nom de fichier csv contenant des avis positifs (1) ou négatifs (0)
    construit le dictionnaire des mots en ajoutant à chaque mot 1 si l avis est positif et enlevant 1 si l'avis est négatif
    renvoie le dictionnaire ainsi construit
    '''
    tab=[]
    dico={}
    with open(nomDeFichier,'r',encoding='utf-8') as fichier:
        lecteur=csv.reader(fichier,delimiter=';')
        for row in lecteur:
            tab.append(row)
        for element in tab:
            element[0]=element[0].split()

    for avis in tab:
        for mot in avis[0]:
            #si le mot est déjà présent dans le dictionnaire et que l'avis est positif
            if mot in dico and avis[1]=='1':
                dico[mot]+=1
            #si le mot n'est pas présent dans le dictionnaire et que l'avis est positif
            elif mot not in dico and avis[1]=='1':
                dico[mot]=1
            #si le mot est déjà présent dans le dictionnaire et que l'avis est négatif
            if mot in dico and avis[1]=='0':
                dico[mot]-=1
            #si le mot est déjà présent dans le dictionnaire et que l'avis est négatif
            elif mot not in dico and avis[1]=='0':
                dico[mot]=-1
    return dico

def dicoPlusMoinsV2(nomDeFichier):
    '''
    a partir du nom de fichier csv contenant des avis positifs (1) ou négatifs (0)
    construit le dico des mots en calculant le score de l'avis
    si le score est en accord avec l'avis (+-) on ne change rien
    sinon ajoutant 1 si l avis est positif et enlevant 1 si l'avis est négatif
    renvoie le dico
    '''
    tab=[]
    dico={}
    with open(nomDeFichier,'r',encoding='utf-8') as fichier:
        lecteur=csv.reader(fichier,delimiter=';')
        for row in lecteur:
            tab.append(row)
        for element in tab:
            element[0]=element[0].split()

    for avis in tab:
        val_avis=0
#calcul de la valeur de l'avis avec l'etat actuel du dico
        for mot in avis[0]:
            if mot in dico:
                val_avis=val_avis+dico[mot]
            else:
                dico[mot]=0
#si l'avis est + et que le score est -
        if avis[1]=='1' and val_avis<=0:
            for mot in avis[0]:
                if mot in dico:
                    dico[mot]=dico[mot]+1
                else:
                    dico[mot]=1

#si l'avis est - et que le score est +
        if avis[1]=='0' and val_avis>0:
            for mot in avis[0]:
                if mot in dico:
                    dico[mot]=dico[mot]-1
                else:
                    dico[mot]=-1
    return dico


def AnalysedeTexte(avis,dico):
    '''
    avis est une chaine de caractères
    dico est un dictionnaire. les clefs sont des mots, les valeurs sont les notes attributés à chaque mot par la fonction dicoPlusMoins
    la fonction renvoie une note attribuée à la chaine de caractères avis
    exemple :
    AnalysedeTexte("très mauvais restaurant")
    >>> -38
    Cet exemple ne peut servir de test unitaire, le dictionnaire dépendant lui même des données utilisées.
    '''
    score=0
    texte=avis.split()
    for mot in texte:
        if mot in dico:
            score=score+dico[mot]
    return avis,score