Visualisez la fréquence des occurrences de mots dans les phrases avec Word Cloud. [Python]

Je voudrais visualiser la fréquence d'apparition des mots à l'aide de la bibliothèque Word Cloud de python créée par amueller.

C'est ce genre de gars. constitution-compressor.png

Une description de cette bibliothèque peut être trouvée ici. http://amueller.github.io/word_cloud/index.html

1. Installation de diverses bibliothèques

1-1. Installation de la bibliothèque word_cloud

Vous pouvez facilement l'installer en récupérant simplement le code source de git.

git clone https://github.com/amueller/word_cloud
cd word_cloud
python setup.py install

1-2. Installation de diverses bibliothèques python

Contrairement à l'anglais, le japonais n'a pas de sauts de mots clairs, donc pour séparer les mots, nous utilisons un logiciel appelé MeCab pour les découper en mots. [Installer Mecab] (Http://qiita.com/kenmatsu4/items/02034e5688cc186f224b#1-1mecab installation) a été expliqué dans ce lien, vous pouvez donc l'installer en vous référant à ceci.

De plus, les bibliothèques suivantes sont également requises, alors préparez-les.

pip install beautifulsoup4
pip install requests

2. Création de Word Cloud

Maintenant que je suis prêt, j'écrirai le code tout de suite. La première consiste à importer les bibliothèques requises.

#Importer la bibliothèque
%matplotlib inline
import matplotlib.pyplot as plt
from wordcloud import WordCloud
from bs4 import BeautifulSoup
import requests
import MeCab as mc

Une fonction qui utilise MeCab pour découper des mots et les mettre dans une liste. Les parties se limitent à la nomenclature, aux verbes, aux adjectifs et aux adjoints afin de visualiser et d'extraire des mots susceptibles d'avoir un sens.

def mecab_analysis(text):
    t = mc.Tagger('-Ochasen -d /usr/local/Cellar/mecab/0.996/lib/mecab/dic/mecab-ipadic-neologd/')
    enc_text = text.encode('utf-8') 
    node = t.parseToNode(enc_text) 
    output = []
    while(node):
        if node.surface != "":  #Exclure les en-têtes et les pieds de page
            word_type = node.feature.split(",")[0]
            if word_type in ["adjectif", "verbe","nom", "adverbe"]:
                output.append(node.surface)
        node = node.next
        if node is None:
            break
    return output

Utilisez Beutiful Soup pour capturer le texte spécifié dans l'URL. Seul le texte peut être extrait selon la structure HTML de Qiita.

def get_wordlist_from_QiitaURL(url):
    res = requests.get(url)
    soup = BeautifulSoup(res.text)
    text = soup.body.section.get_text().replace('\n','').replace('\t','')
    return mecab_analysis(text)

De là, c'est la production, la génération Word Cloud. Vous pouvez exclure des mots qui n'ont pas beaucoup de sens en les spécifiant comme mots vides, alors utilisez ceci. De plus, lors de l'implémentation sur Mac, il est nécessaire de spécifier la police, donc spécifiez font_path.

def create_wordcloud(text):
    
    #Spécifiez le chemin de police en fonction de l'environnement.
    #fpath = "/System/Library/Fonts/HelveticaNeue-UltraLight.otf"
    fpath = "/Library/Fonts/Hiragino Kakugo Pro W3.otf"

    #Arrêter le réglage du mot
    stop_words = [ u'Teru', u'Est', u'Devenir', u'Être', u'Faire', u'y a-t-il', u'chose', u'cette', u'M.', u'fais le', \
             u'Donnez-moi', u'faire', u'Donnez-moi', u'alors', u'Laisser', u'fait',  u'pense',  \
             u'Il', u'ici', u'Chan', u'Kun', u'', u'main',u'À',u'À',u'Est',u'de', u'Mais', u'Quand', u'Ta', u'Shi', u'alors', \
             u'Absent', u'Aussi', u'Nana', u'je', u'Ou', u'Alors', u'Yo', u'']
     
    wordcloud = WordCloud(background_color="white",font_path=fpath, width=900, height=500, \
                          stopwords=set(stop_words)).generate(text)

    plt.figure(figsize=(15,12))
    plt.imshow(wordcloud)
    plt.axis("off")
    plt.show()

Étant donné que ce qui précède est la définition de la fonction du traitement nécessaire, nous allons créer Word Cloud en utilisant ces derniers. Séparez chaque mot en une seule chaîne et transmettez-la à la fonction de création de Word Cloud.

J'aimerais utiliser l'article de @ t_saeko "Ce que j'ai fait quand j'ai été soudainement mis dans un projet de gravure en tant que réalisateur". (Parce que c'était intéressant à lire récemment)

url = "http://qiita.com/t_saeko/items/2b475b8657c826abc114"
wordlist = get_wordlist_from_QiitaURL(url)
create_wordcloud(" ".join(wordlist).decode('utf-8'))

Ça fait du bien! wordcloud-compressor.png

Le code complet a été téléchargé sur gist.

Recommended Posts

Visualisez la fréquence des occurrences de mots dans les phrases avec Word Cloud. [Python]
[Flask & Bootstrap] Visualisez le contenu des paroles avec Word Cloud ~ Lyrics Word Cloud ~
Visualisez la gamme d'insertions internes et externes avec python
Visualisez les mots-clés dans les documents avec TF-IDF et Word Cloud
Comment compter le nombre d'occurrences de chaque élément de la liste en Python avec poids
Essayez de gratter les données COVID-19 Tokyo avec Python
Visualisez les résultats des arbres de décision réalisés avec Python scikit-learn
Calculez des millions de chiffres dans la racine carrée de 2 avec python
[Homologie] Comptez le nombre de trous dans les données avec Python
Exportez le contenu de ~ .xlsx dans le dossier en HTML avec Python
Vérifiez le comportement du destroyer en Python
Vérifier l'existence du fichier avec python
Afficher Python 3 dans le navigateur avec MAMP
Le résultat de l'installation de python sur Anaconda
Principes de base pour exécuter NoxPlayer en Python
Créer un compteur de fréquence de mots avec Python 3.4
Text mining avec Python ② Visualisation avec Word Cloud
À la recherche du FizzBuzz le plus rapide en Python
Recevez une liste des résultats du traitement parallèle en Python avec starmap
Comme c'est le 20e anniversaire de la formation, j'ai essayé de visualiser les paroles de Parfum avec Word Cloud
Sortie du nombre de cœurs de processeur en Python
[Python] Récupérez les fichiers dans le dossier avec Python
Préparer l'environnement d'exécution de Python3 avec Docker
Essayez-le avec JupyterLab en Python japonais Word Cloud.
Mathématiques Todai 2016 résolues avec Python
[Note] Exportez le html du site avec python.
Récupérer l'appelant d'une fonction en Python
Faites correspondre la distribution de chaque groupe en Python
Afficher le résultat du traitement de la géométrie en Python
[Automation] Extraire le tableau en PDF avec Python
Vérifiez la date du devoir de drapeau avec Python
Découvrez la fraction de la valeur saisie en python
Trouvez la solution de l'équation d'ordre n avec python
L'histoire de la lecture des données HSPICE en Python
[Note] À propos du rôle du trait de soulignement "_" en Python
Résolution d'équations de mouvement en Python (odeint)
Sortie sous la forme d'un tableau python
Visualisez le comportement de l'algorithme de tri avec matplotlib
Convertir le code de caractère du fichier avec Python3
[Python] Déterminez le type d'iris avec SVM
Comparez la somme de chaque élément dans deux listes avec la valeur spécifiée en Python
Comment obtenir une liste de fichiers dans le même répertoire avec python
À l'aide du classificateur Naive Bayes implémenté dans Python 3.3, calculez la similitude à partir de la fréquence de cooccurrence des mots dans les phrases et les chaînes.
Découvrez la bonne efficacité de calcul de la vectorisation en Python
Extraire le tableau des fichiers image avec OneDrive et Python
Comment obtenir le nombre de chiffres en Python
Apprenez Nim avec Python (dès le début de l'année).
Comment identifier l'élément avec le plus petit nombre de caractères dans une liste Python?
[Python] Obtenez les nombres dans l'image graphique avec OCR
[python] Récupère la liste des classes définies dans le module
le zen de Python
Explorez l'URL contenue dans le tweet Twitter avec python
L'histoire de FileNotFound en Python open () mode = 'w'
Convertissez l'image au format .zip en PDF avec Python