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.
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.
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)
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)
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()
Recommended Posts