forked from nickpereira/edm4466-devoir4
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdevoir4-JHR.py
68 lines (52 loc) · 3.25 KB
/
devoir4-JHR.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# coding : utf-8
#EXPLICATIONS : Voici le résultat final de mon devoir. Malheureusement, je ne peux vérifier si le tout
#fonctionne, et ce, probablement puisque j'utilise Windows. Une erreur s'affiche en tout temps à partir
#du 888 caractère du CSV (UnicodeDecodeError: 'charmap' codec can't decode byte 0x9d in position 888:
#character maps to <undefined>). J'ai même tenté de supprimé une ligne du CSV original, mais cela n'a pas été
#concluant.
#
# J'ai commencé par lié le CSV au script, puis m'assurer d'aller chercher les paires de mots
# dans les textes qui représentent la quatrième colonne du document -> doc = tal(inter[3]).
# J'ai ensuite fait la lemmatisation (étape 4) et la recherche des paires de mots (étape 5). Lors de
# mes premiers tests, j'avais omis d'ajouter une boucle me permettant d'aller cibler les termes "islam" et
# "musulm" (étape 6). Toutefois, à la suite de nos échanges par courriel, j'ai réalisé qu'il me
# manquait cette étape. Il se peut toutefois qu'il y ait une erreur à cet endroit, car, tel qu'expliqué
# plus haut, je ne peux le tester. J'ai terminé mon travail en faisant ressortir les résutlats.
import csv, spacy
from collections import Counter
# martineau = "martineau.csv"
martineau = "../martino.csv" ### ICI, JE FAIS SIMPLEMENT DONNER LE CHEMIN VERS LE FICHIER POUR QUE TON SCRIPT FONCTIONNE SUR MON ORDI
tal = spacy.load("fr_core_news_md")
# f = open(martineau)
f = open(martineau, encoding="utf-8") ### CHANGER CETTE LIGNE AINSI RÈGLE-T-IL LE PROBLÈME??
interventions = csv.reader(f)
next(interventions)
tousMots = []
# bigrams = [] ### INUTILE PUISQUE LA VARIABLE «BIGRAMS» EST UTILISÉE PLUS BAS COMME VARIABLE TEXTE
for inter in interventions:
doc = tal(inter[3])
print(inter[1]) ### JE FAIS AFFICHER LA DATE POUR VOIR LA PROGRESSION DE TON SCRIPT
#ÉTAPE 1 = avoir les tokens
# tokens = [token.text for token in doc]
#print(tokens)
#ÉTAPE 2 = LEMMATISATION (pour enlever les )
#lemmes = [token.lemma_ for token in doc]
#ÉTAPE 3 = enlever les mots vides
#tokens = [token.text for token in doc if token.is_stop == False]
#ÉTAPE 4 = après vérification, cette étape est censée lemmatiser, enlever les mots vides et la ponctuation
#Les 2 étapes précédentes ne sont donc pas nécessaires.
mots = [token.lemma_ for token in doc if token.is_stop == False and token.is_punct == False]
#ÉTAPE 5 = paires de mots
for x, y in enumerate(mots[:-1]):
bigrams = ("{} {}".format(mots[x],mots[x+1]))
#ÉTAPE 6 = condition pour que l'un de ces deux mots contienne les chaînes de caractères «islam*» ou «musulm*»
if "islam" in bigrams or "musulm" in bigrams:
tousMots.append(bigrams)
print(len(tousMots)) ### SIMPLE AFFICHAGE POUR MESURER LA PROGRESSION DU SCRIPT
#ÉTAPE 7 = résultats
freq = Counter(tousMots)
print(freq.most_common(51))
print(len(tousMots))
### TOUT FONCTIONNE SUPER BIEN!
### DÉSOLÉ QUE TU AIES ÉPROUVÉ TANT DE PROBLÈMES DURANT LA SESSION EN RAISON DE MON INCAPACITÉ À TROUVER DES SOLUTIONS QUI FONCTIONNENT AUSSI BIEN SOUS WINDOWS QUE SOUS MACOS...
### TU ME DIRAS SI LA SOLUTION PROPOSÉE À LA LIGNE 26 DONNE DES RÉSULTATS...