top of page

Analyse textuelle : comment faire un nuage de mots en python



Introduction


Le nuage de mots est une technique de visualisation pour les textes, utilisée à l'origine pour visualiser les mots-clés des sites web. Ces mots-clés sont généralement des mots uniques qui décrivent le contexte de la page web à partir de laquelle le nuage de mots est créé. Ces mots sont regroupés pour former un nuage de mots. Chaque mot de ce nuage a une taille de police et une tonalité de couleur variables. Ainsi, cette représentation permet de déterminer les mots importants. Une taille de police plus grande pour un mot indique qu'il est plus important par rapport aux autres mots du groupe.


Un nuage de mots peut être construit dans différentes formes et tailles, en fonction de la vision du créateur. Le nombre de mots joue un rôle important lors de la création d'un nuage de mots. Un plus grand nombre de mots ne signifie pas toujours un meilleur nuage de mots, car il devient encombré et difficile à lire. Un nuage de mots doit toujours être sémantiquement significatif et représenter ce pour quoi il est conçu.


Bien qu'il existe différentes manières de créer des nuages de mots, le type le plus couramment utilisé est celui basé sur la fréquence des mots dans notre corpus.



Quelles applications pour le nuage de mots ?


Le nuage de mots est utilisé dans de nombreuses applications parmi plusieurs domaines. Voici deux applications populaires des nuages de mots :


Retours des clients

Les nuages de mots sont largement utilisés dans l'industrie par les parties prenantes pour analyser les retours des utilisateurs finaux. Supposons qu'une entreprise lance un produit et souhaite connaître les avis des clients. Disons que l'entreprise a reçu 1000 commentaires de différents utilisateurs. Il serait très difficile pour les parties prenantes de lire et de prendre note de chaque commentaire. Ainsi, le nuage de mots jouerait un rôle clé pour obtenir les principaux mots-clés parmi les commentaires. Cela aiderait l'entreprise à déterminer si les retours sont positifs ou négatifs et les domaines d'amélioration respectifs. Par exemple, une entreprise "ABC" a lancé une nouvelle télévision, et en fonction des retours reçus, l'entreprise peut apporter des modifications en conséquence dans la prochaine série de télévisions.


Sujets tendances

Les agences de publicité ont souvent besoin de savoir ce qui est à la mode pour créer la prochaine publicité en lien avec les sujets tendance.



Création d'un nuage de mots en python


Voilà un quelque ligne de code pour créer un nuage à partir d'un fichier texte. Ici, j'ai récupéré du texte à partir d'une quinzaine d'annonce de job de data analyst RH sur LinkedIn.


! Penser à changer le nom et le chemin du fichier dans la partie : with open(...) !


from collections import Counter
import re
from wordcloud import WordCloud
import matplotlib.pyplot as plt
from collections import Counter
import re

# Liste de mots commun à éliminer. PS : à faire au fur et mesure selon votre texte !
french_stop_words = [
    "alors", "au", "aucuns", "aussi", "autre", "avant", "avec", "avoir", "bon", "car", "ce", "cela", "ces", "ceux",
    "chaque", "ci", "comme", "comment", "dans", "des", "du", "dedans", "dehors", "depuis", "devrait", "doit", "donc",
    "dos", "début", "elle", "elles", "en", "encore", "essai", "est", "et", "eu", "fait", "faites", "fois", "font",
    "hors", "ici", "il", "ils", "je", "juste", "la", "le", "les", "leur", "là", "ma", "maintenant", "mais", "mes",
    "mine", "moins", "mon", "mot", "même", "ni", "nommés", "notre", "nous", "ou", "où", "par", "parce", "pas", "peut",
    "peu", "plupart", "pour", "pourquoi", "quand", "que", "quel", "quelle", "quelles", "quels", "qui", "sa", "sans",
    "ses", "seulement", "si", "sien", "son", "sont", "sous", "soyez", "sujet", "sur", "ta", "tandis", "tellement",
    "tels", "tes", "ton", "tous", "tout", "trop", "très", "tu", "voient", "vont", "votre", "vous", "vu", "ça", "étaient",
    "état", "étions", "été", "être", "de", "à", "une", "un", "au", "êtes", "assurer", "direction", "in", "the", "and", "to",
    "groupe", "aux", "to", "5", "expérience", "réaliser", "participer", "ressources", "humaines", "dune", "dun", "vos",
    "essais", "with", "of", "for", "bonne", "rh", "hr", "drh", "contribuer", "outils", "ainsi", "plus", "danalyse", "etou",
    "avez"
]

# fonction pour clean and split les mots dans chaque ligne
def process_line(line):
    line = line.lower()  # Converti tout les mots en lowercase
    line = re.sub(r"[^\w\s]", "", line)  # Retire la ponctuation
    words = line.split()  # Sépare les mots
    return words

# Fonction pour filter les mots communs
def filter_stop_words(words):
    return [word for word in words if word not in french_stop_words]

# Lit le fichier de texte et compte le nombre d'occurence de chaque mots
word_count = Counter()
with open("/.../Document.txt", "r", encoding="utf-8") as f:
    for line in f:
        words = process_line(line)
        filtered_words = filter_stop_words(words)
        word_count.update(filtered_words)
# Enregistre les 20 plus commun mots
top_20_words = word_count.most_common(20)

# Affiche les 20 plus communs
for word, count in top_20_words:
    print(f"{word}: {count}")
# Créé un nuage de mots à partir du comptage
wordcloud = WordCloud(width=800, height=800, background_color="white", colormap="viridis")
wordcloud.generate_from_frequencies(word_count)

# Affiche le nuage
plt.figure(figsize=(8, 8), facecolor=None)
plt.imshow(wordcloud, interpolation="bilinear")
plt.axis("off")
plt.tight_layout(pad=0)
plt.show()

Simple et sympa !



Votre serviteur,

Thomas

Comments


bottom of page