[PYTHON] Créer un nuage de mots à partir de programmes académiques

introduction

Je voulais étudier les tendances de la Société d'intelligence artificielle (JSAI2020) à laquelle j'ai participé l'autre jour, j'ai donc créé Word Cloud à partir du titre de la conférence du programme.

Qu'est-ce que Word Cloud?

La fréquence d'apparition des mots dans une phrase est vérifiée et la taille des caractères est modifiée en fonction de la fréquence. Vous avez peut-être vu un nuage de mots créé à partir de tweets et de mots visualisés qui marmonnent beaucoup.

Préparation du texte

J'ai téléchargé les documents de la conférence JSAI2020 à partir de ici, ouvert un fichier appelé index.html et copié la liste des sessions dans le Bloc-notes.

Si le programme est publié au format PDF, vous pouvez extraire le texte comme suit.


from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
from pdfminer.pdfpage import PDFPage

input_path = './Program.pdf'
output_path = 'Program.txt'

manager = PDFResourceManager()

with open(output_path, "wb") as output:
    with open(input_path, 'rb') as input:
        with TextConverter(manager, output, codec='utf-8', laparams=LAParams()) as conv:
            interpreter = PDFPageInterpreter(manager, conv)
            for page in PDFPage.get_pages(input):
                interpreter.process_page(page)

Supprimer les informations inutiles

Supprime du texte les informations non relatives à la conférence, telles que la date et le présentateur. Comme le présentateur était entouré de (), les caractères entre () ont été supprimés de ‍‍‍‍. Les expressions régulières sont utilisées pour spécifier les caractères entre () et l'heure / la date.

import re

with open('Program.txt', mode='rt', encoding='utf-8') as fo:
    Program = fo.read()

#[]À()Conversion en
Program = Program.replace("[", "(")
Program = ProgramP.replace("]", ")")
#()Supprimer les caractères inclus dans(Cette fois[]Le code ci-dessus est obligatoire car il ne peut pas être supprimé.)
Program = re.sub(r'\([^)]*\)', '', Program)
#Supprimer l'heure / la date
Program = re.sub(r'((0?|1)[0-9]|2[0-3])[:][0-5][0-9]?', '', Program)
Program = re.sub(r'2020([0-1]?[0-9])Mois([0-3]?[0-9])journée?', '', Program)
Program = re.sub('Heure / lieu', '', Program)
Program = re.sub('session', '', Program)
Program = re.sub('Liste d'annonces', '', Program)
Program = re.sub('Lieu', '', Program)

with open('Program_new.txt', 'w') as f:
  print(Program, file=f)

Créer un nuage de mots

from matplotlib import pyplot as plt
from wordcloud import WordCloud

with open('Program_new.txt', mode='rt', encoding='utf-8') as fo:
    cloud_text = fo.read()

#font_path spécifie la police japonaise sur votre terminal
word_cloud = WordCloud(width=640, height=480, font_path="/System/Library/AssetsV2/com_apple_MobileAsset_Font6/c7c8e5cb889b80fff0175bf138a7b66c6f027f21.asset/AssetData/ToppanBunkyuMidashiGothicStdN-ExtraBold.otf").generate(cloud_text)
word_cloud.to_file('wordcloud4.png')

plt.imshow(word_cloud)
plt.axis('off')
plt.show()

wordcloud3.png

Recommended Posts

Créer un nuage de mots à partir de programmes académiques
J'ai créé un outil pour créer un nuage de mots à partir de wikipedia
Créer un programme académique avec optimisation des combinaisons
Si vous souhaitez créer Word Cloud.
Racler votre article Qiita pour créer un nuage de mots
Créez un Dataframe pandas à partir d'une chaîne.
Créer une instance d'une classe prédéfinie à partir d'une chaîne en Python
Créer une API qui renvoie les données d'un modèle à l'aide de turicreate
Créez un nuage de mots avec uniquement des mots positifs / négatifs sur Twitter
Comment créer un clone depuis Github
Créer un classement à partir des résultats des matchs JFL
Créer un compteur de fréquence de mots avec Python 3.4
Créer un fichier deb à partir d'un package python
Comment créer un référentiel à partir d'un média
Créez une application de mots anglais avec python
Créer un bloc de données à partir d'Excel à l'aide de pandas
WEB grattage avec python et essayez de créer un nuage de mots à partir des critiques
J'ai créé un package pour créer un fichier exécutable à partir du code source Hy
Modifier Excel à partir de Python pour créer un tableau croisé dynamique
Comment créer un objet fonction à partir d'une chaîne
Créer un tableau C à partir d'une feuille Python> Excel
Créer un fichier qui peut être exécuté dans le langage de script
[Pandas Python] Créer un DataFrame vide à partir d'un DataFrame existant
Créez une interface utilisateur de jeu à partir de zéro avec pygame2!
Créer une table d'enregistrement à partir des résultats de correspondance JFL
Créer un arbre phylogénétique à partir de Biopyton en utilisant ClustalW2
Créer un classement des scores à partir des résultats de match JFL
Créer un arbre de décision à partir de 0 avec Python (1. Présentation)
Créer un objet datetime à partir d'une chaîne en Python (Python 3.3)
Créer un compte à partir de la création d'un serveur de messagerie CentOS
Comment utiliser NUITKA-Utilities hinted-compilation pour créer facilement un fichier exécutable à partir d'un script Python
Comment créer un article à partir de la ligne de commande
Recevez des données de dictionnaire à partir de programmes Python avec AppleScript
De l'achat d'un ordinateur à l'exécution d'un programme sur python
Créer un nombre aléatoire avec une densité de probabilité arbitraire
Script Python qui crée un fichier JSON à partir d'un fichier CSV
[Python] Créez un fichier de distribution pour le programme Tkinter avec cx_Freeze
Générez Word Cloud à partir de données de cas d'essai avec python3
Créez un environnement d'apprentissage automatique à partir de zéro avec Winsows 10
Introduction à l'apprentissage automatique à partir de Simple Perceptron