[Python] J'ai visualisé les paroles d'Arashi avec WordCloud et j'ai essayé de démêler ce que je voulais transmettre aux fans en 20e année de formation.

Déclencheur

Il ne reste plus qu'un an avant la suspension de l'activité des tempêtes. Cela fait 20 ans depuis l'apparition du costume transparent. Qu'est-ce que les idoles nationales actives en multijoueur voulaient transmettre à leurs fans au cours des 20 années qui ont suivi leur formation? J'aimerais vous rencontrer en personne, mais pour cette raison. J'ai donc décidé de "visualiser les paroles" et de transmettre le message que je veux transmettre aux fans ~~ le sixième membre ~~ que je transmettrai aux fans d'Arashi.

environnement

・ Python 3.7.3 ・ Windows10

Matériel de référence

"・ Utane t" (hps: // ww. Utane t. This m) ・ J'ai essayé de visualiser les paroles de Genshi Yonezu avec WordCloud.

Écoulement brutal

  1. Collecte des paroles (grattage)
  2. Transformez les paroles en mots (analyse morphologique)
  3. Visualisation (Word Cloud)

1. Collecte des paroles (grattage)

scraping_arashi.py


import requests
from bs4 import BeautifulSoup
import pandas as pd
import time

#Créer une table pour contenir les données récupérées
list_df = pd.DataFrame(columns=['Paroles'])

for page in range(1, 3):
	#Adresse du haut de la page de la chanson
	base_url = 'https://www.uta-net.com'

	#Page de liste des paroles
	url = 'https://www.uta-net.com/artist/3891/0/' + str(page) + '/'
	response = requests.get(url)
	soup = BeautifulSoup(response.text, 'lxml')
	links = soup.find_all('td', class_='side td1')
	for link in links:
		a = base_url + (link.a.get('href'))

		#Page de détail des paroles
		response = requests.get(a)
		soup = BeautifulSoup(response.text, 'lxml')
		song_lyrics = soup.find('div', itemprop='lyrics')
		song_lyric = song_lyrics.text
		song_lyric = song_lyric.replace('\n','')
		#Attendez 1 seconde pour ne pas charger le serveur
		time.sleep(1)

		#Ajouter les paroles acquises au tableau
		tmp_se = pd.DataFrame([song_lyric], index=list_df.columns).T
		list_df = list_df.append(tmp_se)

print(list_df)

#csv enregistrer
list_df.to_csv('list.csv', mode = 'a', encoding='cp932')

2. Transformez les paroles en mots (analyse morphologique)

morphological_analysis_arashi.py


from janome.tokenizer import Tokenizer
import pandas as pd
import re

#list.Lire le fichier csv
df_file = pd.read_csv('list.csv', encoding='cp932')

song_lyrics = df_file['Paroles'].tolist()

t = Tokenizer()

results = []

for s in song_lyrics:
	tokens = t.tokenize(s)
	
	r = []

	for tok in tokens:
		if tok.base_form == '*':
			word = tok.surface
		else:
			word = tok.base_form

		ps = tok.part_of_speech

		hinshi = ps.split(',')[0]

		if hinshi in ['nom', 'adjectif', 'verbe', 'adverbe']:
			r.append(word)

	rl = (' '.join(r)).strip()
	results.append(rl)
	#Remplacement du code de caractère supplémentaire
	result = [i.replace('\u3000','') for i in results]
	print(result)

text_file = 'wakati_list.txt'
with open(text_file, 'w', encoding='utf-8') as fp:
	fp.write("\n".join(result))

3. Visualisation (Word Cloud)

wordcloud_arashi.py


from wordcloud import WordCloud

text_file = open('wakati_list.txt', encoding='utf-8')
text = text_file.read()

#Chemin de la police japonaise
fpath = 'C:/Windows/Fonts/YuGothM.ttc'

#Suppression de mots qui semble dénuée de sens
stop_words = ['alors', 'Absent', 'Est', 'Faire', 'Tel quel', 'Yo', 'Teru', 'Devenir', 'chose', 'Déjà', 'Bien', 'y a-t-il', 'aller', 'Être']

wordcloud = WordCloud(background_color='white',
	font_path=fpath, width=800, height=600, stopwords=set(stop_words)).generate(text)

#L'image est wordcloud.Enregistrez png dans le même répertoire que le fichier py
wordcloud.to_file('./wordcloud.png')

↓ ↓ Et le résultat ↓ ↓

Résultat d'exécution

Ça fait du bien! wordcloud_sample.png

Résumé

En visualisant les paroles, j'ai trouvé que des mots tels que «futur», «nous», «ici» et «voir» qui ressentent la chaleur de la tempête apparaissent fréquemment (* ´ ▽ ` *).

Message de la tempête

Marchons vers l'avenir avec nous. Et je serai à vos côtés tout le temps. Un an avant la suspension de l'activité, cela provoquera un tourbillon de A, RA, SHI dans tout le Japon (~~ Message de moi, le sixième membre. ~~)

Les fans peuvent transmettre les sentiments de la tempête sans que je le dise, non?

"Nous", les fans d'Arashi, soutiendrons Arashi de toutes leurs forces jusqu'à la fin. Bonne chance ARASHI. Et si ça apparaît, oui!

en conclusion

J'ai aimé apprendre le grattage, l'analyse morphologique et comment utiliser WordCloud basé sur les chansons d'Arashi. Cela fait longtemps, mais merci d'avoir lu jusqu'ici. Si vous constatez des erreurs, je vous serais très reconnaissant de les signaler dans les commentaires.

Recommended Posts

[Python] J'ai visualisé les paroles d'Arashi avec WordCloud et j'ai essayé de démêler ce que je voulais transmettre aux fans en 20e année de formation.
Comme c'est le 20e anniversaire de la formation, j'ai essayé de visualiser les paroles de Parfum avec Word Cloud
[CleanArchitecture avec Python] Appliquez CleanArchitecture à une API simple étape par étape, et essayez de comprendre "quel type de changement est fort" dans la base de code.
[Python] J'ai essayé de visualiser la nuit du chemin de fer de la galaxie avec WordCloud!
J'ai essayé de visualiser le texte du roman "Weather Child" avec Word Cloud
J'ai essayé de visualiser facilement les tweets de JAWS DAYS 2017 avec Python + ELK
Je voulais visualiser la simulation de particules 3D avec la bibliothèque de visualisation Python Matplotlib.
Je suis un amateur le 14e jour de python, mais je veux essayer l'apprentissage automatique avec scicit-learn
Essayez le fonctionnement de la base de données avec Python et visualisez avec d3
J'ai essayé d'automatiser la mise à jour de l'article du blog Livedoor avec Python et sélénium.
Visualisez la gamme d'insertions internes et externes avec python
J'ai essayé de visualiser les caractéristiques des nouvelles informations sur les personnes infectées par le virus corona avec wordcloud
Je voulais juste extraire les données de la date et de l'heure souhaitées avec Django
J'ai essayé de comparer la vitesse de traitement avec dplyr de R et pandas de Python
Une introduction au logiciel d'interface graphique de la plate-forme de classe fait avec Python / Tkinter! (Et de nombreux Try and Error)! (Au milieu de l'écriture)
Le 15e temps réel hors ligne, j'ai essayé de résoudre le problème de l'écriture avec python
J'ai aussi essayé d'imiter la fonction monade et la monade d'état avec le générateur en Python
J'ai écrit un doctest dans "J'ai essayé de simuler la probabilité d'un jeu de bingo avec Python"
Essayez de visualiser les nutriments des flocons de maïs que le champion de M-1 Milkboy a dit avec Python
J'ai essayé de trouver l'entropie de l'image avec python
Essayez de gratter les données COVID-19 Tokyo avec Python
Je voulais résoudre le concours de programmation Panasonic 2020 avec Python
Ce que j'ai fait pour accueillir le Python2 EOL en toute confiance
[Python] J'ai essayé de visualiser des tweets sur Corona avec WordCloud
[Python] J'ai essayé de visualiser la relation de suivi de Twitter
Essayez d'automatiser le fonctionnement des périphériques réseau avec Python
Je veux connaître la nature de Python et pip
[Python] J'ai essayé de visualiser le prix en argent de "ONE PIECE" plus de 100 millions de caractères avec matplotlib.
J'ai comparé la vitesse de Hash avec Topaz, Ruby et Python
Je veux résoudre APG4b avec Python (seulement 4.01 et 4.04 au chapitre 4)
[Introduction à Python] J'ai comparé les conventions de nommage de C # et Python.
Ce à quoi j'étais accro avec json.dumps dans l'encodage base64 de Python
Je veux sortir le début du mois prochain avec Python
Exportez le contenu de ~ .xlsx dans le dossier en HTML avec Python
J'ai écrit le code pour écrire le code Brainf * ck en python
Visualisez la fréquence des occurrences de mots dans les phrases avec Word Cloud. [Python]
Je voulais résoudre le problème ABC164 A ~ D avec Python
Essayer d'implémenter et de comprendre les arborescences de segments étape par étape (python)
J'ai essayé d'améliorer l'efficacité du travail quotidien avec Python
Lorsque j'essaie d'exécuter la commande make de Makefile avec os / exec de golang, la deuxième exécution et les suivantes entraînent une erreur.
J'ai essayé d'obtenir et d'analyser les données statistiques de la nouvelle Corona avec Python: données de l'Université John's Hopkins
[Version terminée] Essayez de connaître le nombre d'habitants de la ville à partir de la liste d'adresses avec Python
FBX SDK De quelles compétences ai-je besoin pour créer un programme à l'aide de Python?
J'ai remplacé le calcul numérique de Python par Rust et comparé la vitesse
Mettez Cabocha 0.68 dans Windows et essayez d'analyser la dépendance avec Python
J'ai essayé de visualiser la tranche d'âge et la distribution des taux d'Atcoder
Ce que j'ai fait pour garder une trace de l'humidité et de la température des archives
Comment obtenir la différence de date et d'heure en secondes avec Python
Essayez d'imaginer les données d'élévation du National Land Research Institute avec Python
J'ai défini des variables d'environnement dans Docker et je les ai affichées en Python.
Je veux convertir par lots le résultat de "chaîne de caractères" .split () en Python
Je veux expliquer en détail la classe abstraite (ABCmeta) de Python
J'ai essayé d'obtenir le code d'authentification de l'API Qiita avec Python.
Je veux exprimer mes sentiments avec les paroles de Mr. Children
Le nom du fichier était mauvais en Python et j'étais accro à l'importation
J'ai essayé de vérifier et d'analyser l'accélération de Python par Cython
J'ai essayé de rationaliser le rôle standard des nouveaux employés avec Python