Présentation
L'objet de ce travail est l'analyse du lien entre le langage utilisé par un candidat lors de la campagne municipale française de 2026 et ses résultats électoraux. Le travail se base sur une analyse lexicale à partir des sorties dans la presse, de la profession de foi des candidats, des posts de leur parti sur les réseaux sociaux ou de toute autres données relatives à leur campagne.
Section 1 : Fonctions de tris
La fonction suivante permet de transformer un texte brut en une liste de mots. Elle supprime du texte brut les chiffres, les tirets [("-") en prenant soin de conserver les mots composés] et tous les autres caractères spéciaux, puis, sépare les mots entre eux.
import re
def process_textA(**texts):
result = {}
for var_name, text in texts.items():
if isinstance(text, (list, tuple)):
text = ' '.join(text)
text = text.lower()
cleaned_text = re.sub(r'[!"#$%&\()*+,./\:;<=>?@\[\\\]^_`{|}~\d]', '', text)
cleaned_text = re.sub(r'\s+-\s+|-\s+|\s+-', ' ', cleaned_text)
cleaned_text = re.sub(r"[a-zA-Zàâäéèêëïîôöùûüœæç]+[\u0027\u2019]", '', cleaned_text)
cleaned_text = re.sub(r"[0-9]",'', cleaned_text)
words = cleaned_text.split()
result[var_name] = words
return result
# Utilisation de la fonction
# De la forme result = process_textA(Indiv1=[text1,yaourt], text2=text2, text3=text3)
text1 = '''Bonjour je m'appelle Jean-Pierre et j'ai 30 ans! l’agglomération'''
text2 = '''Je - suis Marie j'ai 25 ans et je je vis à Lyon'''
text3 = '''Salut moi c'est Jean-Paul aujourd'hui'''
yaourt = '''Yaourt'''
result = process_textA(Indiv1=[text1,yaourt], text2=text2, text3=text3)
print(result)
L'avantage du dictionnaire Python, c'est qu'il nous permet de stocker, au sein d'un même objet, l'individu (comme clé) et ses discours (comme valeurs associées à la clé).
(subsec) Les Stop Words (dits Mots Vides)
Les stop words sont des mots indispensables à la compréhension d'une phrase mais qui, dans le cadre d'une analyse textuelle, n'ont pas d'utilité à la détermination du sujet ou du ton d'un texte.
Plusieurs listes de stop words en Français sont disponible librement sur internet, nous utiliserons ici les packages Python 'stopwords-iso' (Lien: https://github.com/stopwords-iso/stopwords-iso) et 'python-stop-words' (Lien: https://github.com/Alir3z4/python-stop-words).
Une liste de stop words n'est jamais exhaustive et varie en fonction des sensibilités et des besoins de chacun. Dans le prompt suivant, on utilisera l'objet 'SUP' pour compléter la liste.
!pip install stopwordsiso
!pip install stop_words
import stopwordsiso
from stopwordsiso import stopwords
wordsPACK = stopwords("fr")
from stop_words import get_stop_words
stop_words = get_stop_words('fr')
# Ajout manuel de Stopwords
SUP = { }
# Fusionnement
LISTE = set(stop_words) | set(wordsPACK) | SUP
JSON comme méthode de sérialisation
L'analyse textuelle repose très souvent sur du traitement de fichiers.
Elle requiert ainsi des étapes de prétraitement, c'est le cas lorsque
l'on veut transposer du texte contenu dans un PDF en texte brut par exemple.
Ces scripts et ces appels peuvent être exigeants en ressources et doivent pourtant
être lancés à chaque ouverture de l'IDE.
On peut simplifier cela en faisant appel à la sérialisation : cette méthode
de codage nous permet de constituer en un fichier, une base de données d'objets Python.
Ainsi, au lieu d'appeler chacuns des fichiers et de les traiter à chaque fois pour
stocker l'information dans un objet Python, on appelle directement les objets.
On utilise ici JSON pour sérialiser.
- Il est lisible et facilement modifiable à partir d'un bloc note;
- Il est translanguage : il peut être exploité en Python, en R, comme en Javascript;
- Il fait partie de la bibliothèque standard Python : Aucune autre installation nécessaire.