Analyse des tweets avec Python, Mecab et CaboCha

introduction

Cet article est l'article du 22ème jour du Calendrier de l'Avent Python 2014 - Qiita.

La semaine dernière, j'ai écrit un blog intitulé BigQuery x Perfume x tweet analysis sur le calendrier de l'Avent de mon entreprise. Là, j'ai essayé d'analyser les tweets sur Parfum collectés pendant une semaine du 12/12 (vendredi) au 12/18 (jeudi) en les donnant à BigQuery.

Cette fois, en tant que développement, je vais faire une analyse de tweet avec le traitement du langage naturel en utilisant Mecab et CaboCha m (_ _) m

Référencé

C'est pourquoi je regarde les tweets de l'élection de la Chambre des représentants - Qiita https://github.com/mima3/stream_twitter

Plutôt que de faire référence, la plupart de ce que je fais est en vente par mima_ita ...

environnement

・ Mac OSX 10.9.5 ・ Python 2.7.8

Collecte de données Twitter

Cette fois, j'ai utilisé un service appelé mention. En mention, les mots-clés définis sur l'écran de gestion peuvent facilement extraire des données de SNS. Exportez les données acquises ici vers csv à partir de l'écran de gestion, et vous êtes prêt à partir.

Les conditions spécifiées cette fois sont les suivantes.

Mot clé de recherche: Parfum|| prfm || perfume_um (prfm et perfume_um sont des balises de hachage utilisées dans les articles sur le parfum)

Mots clés à exclure: RT

SNS cible: Twitter Langue: japonais

Période: 12/12 (vendredi) -12/18 (jeudi)

Installez Mecab et Cabocha

Mecab:http://salinger.github.io/blog/2013/01/17/1/ Cabocha:http://qiita.com/ShingoOikawa/items/ef4ac2929ec19599a3cf

Si vous suivez cet article, il n'y a pas eu de problème (`・ ω ・ ´) ゞ

Code utilisé pour la collecte et l'analyse

https://github.com/mima3/stream_twitter

Cependant, ici, nous utilisons l'API Streaming pour collecter des données Twitter et les stocker dans la base de données. Cette fois, contrairement à cela, il est nécessaire de stocker ce qui a été collecté par mention et craché par csv dans la base de données.

Alors, veuillez le stocker dans SQLite avec la source suivante.

create_database.py


#!/usr/bin/python
# -*- coding: utf-8 -*-
import sqlite3
import csv

if __name__ == '__main__':
    con = sqlite3.connect("twitter_stream.sqlite")

    c = con.cursor()
    # Create table
    c.execute('''CREATE TABLE "twitte" ("id" INTEGER NOT NULL PRIMARY KEY, "createAt" DATETIME NOT NULL, "idStr" VARCHAR(255) NOT NULL, "contents" VARCHAR(255) NOT NULL);
    ''')
    c.execute('''CREATE INDEX "twitte_createAt" ON "twitte" ("createAt");''')
    c.execute('''CREATE INDEX "twitte_idStr" ON "twitte" ("idStr")''')

    # Insert data
    i = 0
    data = []
    reader = csv.reader(open("./perfume_tweet.csv"))
    for row in reader:
        id = i+1
        createAt = row[4]
        idStr = unicode(row[0],'utf-8')
        contents = unicode(row[1],'utf-8')
        t = (id,createAt,idStr,contents)
        data.append(t)
        i += 1
    con.executemany(u"insert into twitte values(?,?,?,?)",data)

    # Save (commit) the changes
    con.commit()

    # We can also close the cursor if we are done with it
    con.close()

Vous avez créé avec succès twitter_stream.sqlite dans le répertoire actuel.

Histogramme horaire

Ici, je vais reprendre le 17/12 (mercredi). Nous compterons le nombre de tweets par heure dans la journée.

 python twitter_db_hist.py "2014/12/16 15:00" "2014/12/17 15:00" 3600

figure_1.png

En regardant cela, ce qui suit peut être analysé.

・ Le fuseau horaire de 05h00 à 06h00 est le plus petit. Tout est bas de 02h00 à 06h00, donc tout le monde dort probablement en ce moment. ・ Les heures les plus fréquentes sont de 23h00 à minuit. Le nombre de tweets est généralement élevé de 18h00 à 24h00, mais le plus élevé est de 23h00 à 24h00 en fin de journée. Beaucoup de gens dorment depuis qu'ils ont tweeté sur Parfum?

C'est une idée approximative, mais vous pouvez la comprendre d'une manière ou d'une autre.

Extraction de mots fréquente

Ensuite, nous effectuerons une analyse morphologique à l'aide de Mecab. Ici, nous passerons au crible les tweets collectés pendant une semaine.

python twitter_db_mecab.py "2014/12/11 15:00" "2014/12/17 15:00" > mecab.txt

Vous trouverez ci-dessous une liste des 100 meilleurs.

word count
Perfume 10935
prfm 2739
perfume 2136
Suivre 1553
1478
Chiru 1462
Noru 1448
Ordinaire 1410
- 1347
Comme 1256
Vidéo 1218
Chan 1204
Parfum 1056
Homme 996
YouTube 945
Mutuel 889
Pendant ~ 850
Résumé 837
sougofollow 775
vivre 737
um 726
Teru 568
Apprivoiser 555
www 552
Dernières nouvelles 552
Masculin 551
Omoto 544
Ayano 544
Cercle 543
mariage 540
Fr 537
perdre son sang froid 535
Général 534
493
offre 480
tempête 433
Absent 431
journée 420
Ku 419
Yahoo Ok 413
Année 408
tu 401
Courant 398
prix 377
Temps 374
Date et l'heure 374
Chanson 364
Vue 356
Cling 350
Un 345
Noir 342
Fin 341
Œil 341
Pafukura 335
nombre 332
Ecoutez 331
of 330
chose 324
S'il vous plaît 318
yauc 308
DVD 308
Limité 307
Planche 300
billet 295
Je t'aime 285
Feuille 282
love 276
Première fois 271
Yuka 270
Naturel 263
Mois 263
:-, 262
Sa 261
Action de poisson 254
Donnez-moi 250
!: 250
Les pêches 247
Espérer 240
nowplaying 240
Music 239
FC 237
Rang 230
masque 229
Chaudrée 228
amour 219
sol 217
viens 217
217
Pomme 214
Player 213
Être 210
Sekaowa 209
Kashi 207
mp 206
la source 205
Danse 201
Son explosif 201
alors 201
Shiina 200
200

Les principaux mots sont inclus dans le tweet du Bot, il ne s'agit donc pas de données significatives. En tant que valeur sensorielle, il semble que des mots significatifs apparaissent lors de l'analyse d'un total de 500 tweets ou moins.

Au cours de cette période de collecte de données, il y a eu de nombreux tweets sur l'événement "Masked Chauder ~ YAJIO CRAZY ~ Chau University University International Collagen High School" qui s'est tenu le samedi 20 décembre. était.

Nom de l'événement lié: "Masked" "Chauder" Informations sur les billets liées: «Offre» «Yafuoku» «Prix» «yauc» «Ticket» «Fiche» (Je n'étais pas familier avec yauc, mais cela semble être une balise de hachage de Yahoo!)

Après cela, j'ai pu analyser en gros ce qui suit.

Titre de la chanson du parfum lié: "Cling" (Cling Cling) "Natural" "Love" (In love with Natural) En relation avec le chanteur: "Arashi" "Momo" "Kuro" "Sakanaction" "Sekaowa" "Ringo" "Shiina" Lié au lecteur de musique de parfum: "Écouter" "Musique" "Lecteur" "mp"

Analyse des dépendances

Ensuite, utilisons CaboCha pour agréger les relations de dépendance des clauses. Encore une fois, nous analysons une semaine de tweets.

python twitter_db_cabocha.py "2014/12/11 15:00" "2014/12/17 15:00" > cabocha.txt

Regardons le top 100 de la même manière.

phrase1 phrase2 count
Perfume Noru 582
Pendant le live Furieux www http://t 535
Noru Furieux www http://t 535
●● Furieux www http://t 535
~Chan Pendant le live 535
Ayano Omoto General mâle mariage 532
Cette Ayano Omoto General mâle 532
PerfumeMusicPlayer Ecoutez 138
RT#M. Pafukura Relier 137
Absent http://t 131
Kuu http://t 127
M. Saito http://t 127
- M. Saito 127
Relier #Pafukura http://t 125
___VAMPS ___Un ok 97
Noir ___Larque 97
___glee ___UVERworld 97
___UVERworld ___VAMPS 97
___Les pêches Noir 97
___Bz ___Un ok 97
___Larque ___Bz 97
___Pomme Shiina___GLAY ___glee 93
『[Travail BGM]perfumemix』 http://t 91
Amour Keru 90
#Perfume#J'aime le parfum Relier 89
[Espoir de diffusion] ● Calendrier des événements explosifs ● Détails___http ://t 89
Nino Beaucoup 87
"secret Arashi-chan 86
Juste juste Keru 86
radio Keru 86
chose Kariru 86
"Mariage Dengeki~perfumeoflove~___Épisode 1" http://t 84
~Chan Keru 83
Ste ___20131115』http://t 77
___MUSIC STATION 77
STATION Ste 77
Vidéo FC2: Keru 75
___Perfume ___Un ok 74
Naturel Tu me manques 68
Hamaokamoto (OKAMOTO'S) 63
Comme chose 62
Une chanson Voter 60
cette année Une chanson 60
mot 『Perfume』 58
- -#prfm#perfume_um 56
Ah ~Chan 55
Retour histoire Talk http://t 50
12/20(sol)Salle du château d'Osaka billet 50
2008-4-5 Sortie du jeu Retour histoire Talk 50
[3 princesses Retour histoire Talk 50
Agréable Retour histoire Talk 50
『PerfumeTalk 2008-4-5 Sortie du jeu 50
PerfumeMusicPlayer Ecoutez 48
Kashiyuka Informer 47
~Chan Informer 47
Perfume ~Chan 47
Comme Homme 45
Noru Informer 45
Naturel je t'aime 45
main relier 43
Sekaowa Cuisse noire 43
Ravi de vous rencontrer S'il vous plaît 43
chose y a-t-il 43
Comme Un 41
Perfume Kashiyuka 40
membre Dessiner 38
maintenant Vérifiez http://t 36
bientôt Vérifiez http://t 36
Perfume(Parfum) billet 36
En forme Un 36
co/ 1IoZn9U583 35
Cuisse noire Perfume 35
Qi Devenir 34
Perfume GLAY 33
co/ 7CRGN21Brf) 33
Un Suivez-moi 33
hiver Âge 33
___http ://t 32
(#Perfume Kuu 32
Devine Extreme Maiden 32
H ___GLAY\720 31
Noru #prfm 31
/ J Soul Brothers de troisième génération 31
Kariru ___GLAY\720 31
J Soul Brothers de troisième génération ___GLAY\720 31
(Auberge de Watts) 2015 31
Deux personnes Est 31
2015 Numéro de janvier[magazine]http://t 31
___TEAM H 31
N'hésitez pas Suivre 30
cœur Des sports 29
12/20(sol)Détails de la salle du château d'Osaka Ici 29
tu Email 28
Perfume membre 28
mot "Parfum Cosplay" 28
Dessiner ☆ Travail ultime ☆(> 28
[Prix fixe ou moins] ★ Transfert ★ Kamen Chauder YAJIO CRAZY Université Chau University International Collagen High School 12/20(sol)Salle du château d'Osaka 28
En forme Homme 28
chose Karu 27
Comme Artiste 27

Encore une fois, un total de 500 dépendances ou plus sont des bots bruyants, alors passons en revue. À propos, le Bot est les deux tweets suivants.

Nocchi A-chan du parfum Pendant le live ●● et la rage www http://t.co/4Q0fmhel2l Parfum Ayano Omoto, également connu sous le nom de "Nocchi" Mariée à un homme général? http://t.co/k6cFhLZwnZ

Je ne sais pas comment regarder la table des dépendances, donc je grep avec les noms des trois membres. Parmi les expressions dépendantes, celles qui incluent "A-chan", "Kashiyuka" et "Nocchi" sont indiquées ci-dessous. (* Extraire uniquement ceux avec des phrases bien séparées)

phrase1 phrase2 count
Kashiyuka doigt 2
Kashiyuka cheveux 2
Kashiyuka Secouer 2
Kashiyuka mignonne 1
Kashiyuka mignonne 1
Kashiyuka Tête 1
Kashiyuka jupe 1
Divin Kashiyuka 1
Kashiyuka main gauche 1
Kashiyuka voix 1
Nocchi Beau 2
A-chan ange 2
A-chan Col une pièce 1
A-chan Dumplings 1
A-chan Sourire 1

Comme vous pouvez le voir, il y avait beaucoup de choses liées à Kayuka dans l'analyse des dépendances! En regardant cette dépendance, les caractéristiques de chacune des trois personnes se révèlent, ce qui est merveilleux ...

finalement

Comme mentionné ci-dessus, avec l'aide de mima_ita, nous avons analysé les tweets sur le parfum. Avec le recul, c'est dommage que nous ayons collecté une grande quantité de bottweets qui ne sont pas nécessaires pour l'analyse dans les conditions que nous avons effectuées cette fois ...

J'ai encore beaucoup de compétences en analyse de données et en Python, donc je vais acheter ce livre qui sortira la semaine prochaine et l'étudierai (`・ ω ・ ´) ゞ Introduction à la programmation en langage Python: manuel du MIT standard mondial

Recommended Posts

Analyse des tweets avec Python, Mecab et CaboCha
[Python] Analyse morphologique avec MeCab
De Python à l'utilisation de MeCab (et CaboCha)
Utilisation de Python et MeCab avec Azure Databricks
Utiliser Python et MeCab avec Azure Functions
Utiliser mecab avec Python 3
Analyse de dépendance avec CaboCha
Analyse vocale par python
Analyse vocale par python
Analyse de données avec Python
Programmation avec Python et Tkinter
Chiffrement et déchiffrement avec Python
[Analyse de co-occurrence] Analyse de co-occurrence facile avec Python! [Python]
Collecte d'informations sur Twitter avec Python (analyse morphologique avec MeCab)
Analyse des émotions par Python (word2vec)
Tweet avec image en Python
Analyse de squelette planaire avec Python
Analyse morphologique japonaise avec Python
python avec pyenv et venv
Analyse des secousses musculaires avec Python
Fonctionne avec Python et R
Effectuer une analyse isocurrent des canaux en eau libre avec Python et matplotlib
Installez CaboCha dans l'environnement Ubuntu et appelez-le avec Python.
Communiquez avec FX-5204PS avec Python et PyUSB
Briller la vie avec Python et OpenCV
Robot fonctionnant avec Arduino et python
Installez Python 2.7.9 et Python 3.4.x avec pip.
Modulation et démodulation AM avec python
Analyse de la structure du squelette en trois dimensions avec Python
Grattage avec Python, Selenium et Chromedriver
Grattage avec Python et belle soupe
Text mining avec Python ① Analyse morphologique
Introduction à Hadoop et MapReduce avec Python
[GUI en Python] PyQt5-Glisser-déposer-
Lire et écrire NetCDF avec Python
J'ai aimé le tweet avec python. ..
J'ai joué avec PyQt5 et Python3
J'ai joué avec Mecab (analyse morphologique)!
Lire et écrire du CSV avec Python
Intégration multiple avec Python et Sympy
Analyse de données à partir de python (visualisation de données 1)
Analyse de régression logistique Self-made avec python
Coexistence de Python2 et 3 avec CircleCI (1.0)
Lors de l'utilisation de MeCab avec python dans virtualenv
Analyse de données à partir de python (visualisation de données 2)
Jeu Sugoroku et jeu d'addition avec Python
Modulation et démodulation FM avec Python
[Memo] Tweet sur Twitter avec Python
J'ai créé un formulaire de tweet Nyanko avec Python, Flask et Heroku
La meilleure façon d'utiliser MeCab et CaboCha avec Google Colab
Communiquez entre Elixir et Python avec gRPC
Construction de pipeline de données avec Python et Luigi
Surveiller les pannes de Mojo avec Python et Skype
Créez wordcloud à partir de votre tweet avec python3
[Didacticiel d'analyse Python en base de données avec SQL Server 2017]
Modulation et démodulation FM avec Python Partie 3
[Automation] Manipulez la souris et le clavier avec Python