Tweet-Analyse mit Python, Mecab und CaboCha

Einführung

Dieser Artikel ist der 22. Tagesartikel von Python Adventskalender 2014 - Qiita.

Letzte Woche habe ich einen Blog mit dem Titel BigQuery x Parfüm x Tweet-Analyse in den Adventskalender meines Unternehmens geschrieben. Dort habe ich versucht, die Tweets über Parfüm zu analysieren, die während einer Woche von 12/12 (Freitag) bis 12/18 (Donnerstag) gesammelt wurden, indem ich sie BigQuery gegeben habe.

Dieses Mal werde ich als Entwicklung eine Tweet-Analyse mit Verarbeitung natürlicher Sprache unter Verwendung von Mecab und CaboCha m (_ _) m durchführen

Referenziert

Deshalb schaue ich in den Tweets der Wahlen zum Repräsentantenhaus nach - Qiita https://github.com/mima3/stream_twitter

Anstatt zu referenzieren, wird das meiste, was ich tue, von mima_ita zum Verkauf angeboten ...

Umgebung

・ Mac OSX 10.9.5 ・ Python 2.7.8

Twitter Datenerfassung

Dieses Mal habe ich einen Dienst namens Erwähnung verwendet. Erwähnenswert ist, dass die auf dem Verwaltungsbildschirm festgelegten Schlüsselwörter problemlos Daten aus SNS abrufen können. Exportieren Sie die hier erfassten Daten vom Verwaltungsbildschirm nach csv, und Sie können loslegen.

Die diesmal angegebenen Bedingungen sind wie folgt.

Suchbegriff: Parfüm|| prfm || perfume_um (prfm und perfume_um sind Hash-Tags, die in Posts über Perfume verwendet werden.)

Ausschließende Schlüsselwörter: RT

Ziel SNS: Twitter Sprache: Japanisch

Zeitraum: 12/12 (Freitag) -12/18 (Donnerstag)

Installieren Sie Mecab und Cabocha

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

Wenn Sie diesem Artikel folgen, gab es kein Problem (`・ ω ・ ´) ゞ

Code für Sammlung und Analyse

https://github.com/mima3/stream_twitter

Hier verwenden wir jedoch die Streaming-API, um Twitter-Daten zu sammeln und in der Datenbank zu speichern. Im Gegensatz dazu ist es diesmal erforderlich, das, was durch Erwähnung gesammelt und von csv ausgespuckt wurde, in der Datenbank zu speichern.

Speichern Sie es daher in SQLite mit der folgenden Quelle.

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()

Sie haben erfolgreich twitter_stream.sqlite im aktuellen Verzeichnis erstellt.

Stündliches Histogramm

Hier werde ich am 17.12. (Mittwoch) abholen. Wir werden die Anzahl der Tweets pro Stunde am Tag zählen.

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

figure_1.png

In diesem Zusammenhang kann Folgendes analysiert werden.

・ Die Zeitzone von 05:00 bis 06:00 ist die geringste. Von 02:00 bis 06:00 Uhr ist alles niedrig, also schlafen wahrscheinlich alle zu dieser Zeit. ・ Die häufigsten Stunden sind von 23:00 bis 24:00 Uhr. Die Anzahl der Tweets ist im Allgemeinen von 18:00 bis 24:00 Uhr hoch, am Ende des Tages jedoch von 23:00 bis 24:00 Uhr. Viele Menschen haben geschlafen, seit sie über Parfüm getwittert haben?

Das ist eine grobe Idee, aber man kann sie irgendwie verstehen.

Häufige Wortextraktion

Als nächstes werden wir eine morphologische Analyse mit Mecab durchführen. Hier werden wir die gesammelten Tweets für eine Woche sieben.

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

Unten finden Sie eine Liste der Top 100.

word count
Perfume 10935
prfm 2739
perfume 2136
Folgen 1553
1478
Chiru 1462
Noru 1448
Regulär 1410
- - 1347
Mögen 1256
Video 1218
Chan 1204
Parfüm 1056
Mann 996
YouTube 945
Gegenseitig 889
Während ~ 850
Zusammenfassung 837
sougofollow 775
Leben 737
um 726
Teru 568
Zähmen 555
www 552
Aktuelle Nachrichten 552
männlich 551
Omoto 544
Ayano 544
Kreis 543
Ehe 540
En 537
verliere das Temperament 535
Allgemeines 534
493
bieten 480
Sturm 433
Abwesend 431
Tag 420
Ku 419
Yahoo Ok 413
Jahr 408
Sie 401
Aktuell 398
Preis 377
Zeit 374
Datum (und Uhrzeit 374
Lied 364
Aussicht 356
Cling 350
Einer 345
Schwarz 342
Ende 341
Auge 341
Pafukura 335
Nummer 332
Hör mal zu 331
of 330
Ding 324
Bitte 318
yauc 308
DVD 308
Begrenzt 307
Tafel 300
Fahrkarte 295
Ich liebe dich 285
Blatt 282
love 276
Erstes Mal 271
Yuka 270
natürlich 263
Mond 263
:-, 262
Sa 261
Fischaktion 254
Gib mir 250
!: 250
Pfirsiche 247
Hoffnung 240
nowplaying 240
Music 239
FC 237
Rang 230
Maske 229
Chowder 228
Liebe 219
Boden 217
Kommen Sie 217
217
Apfel 214
Player 213
Sein 210
Sekaowa 209
Kashi 207
mp 206
Quelle 205
tanzen 201
Explosiver Sound 201
damit 201
Shiina 200
200

Die Top-Wörter sind im Bot-Tweet enthalten, daher handelt es sich nicht um aussagekräftige Daten. Als sensorischer Wert scheinen bei der Analyse von insgesamt 500 Tweets oder weniger aussagekräftige Wörter zu erscheinen.

Während dieser Datenerfassungsperiode gab es viele Tweets über die Veranstaltung "Maskierter Chauder ~ YAJIO CRAZY ~ Internationale Kollagenhochschule der Universität Chau", die am Samstag, dem 20. Dezember, stattfand. war.

Ereignisname im Zusammenhang: "Maskiert" "Chauder" Ticketinformationen im Zusammenhang mit: "Bid" "Yafuoku" "Price" "yauc" "Ticket" "Sheet" (Ich war mit Yauc nicht vertraut, aber es scheint ein Hash-Tag von Yahoo! zu sein.)

Danach konnte ich Folgendes grob analysieren.

Titel des Parfüm-Songs: "Cling" (Cling Cling) "Natural" "Love" (Verliebt in Natural) Sängerbezogen: "Arashi" "Momo" "Kuro" "Sakanaction" "Sekaowa" "Ringo" "Shiina" Parfüm Music Player im Zusammenhang mit: "Hören" "Musik" "Player" "mp"

Abhängigkeitsanalyse

Als Nächstes verwenden wir CaboCha, um die Abhängigkeitsbeziehungen von Klauseln zu aggregieren. Wieder analysieren wir die Tweets einer Woche.

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

Schauen wir uns die Top 100 genauso an.

phrase1 phrase2 count
Perfume Noru 582
Während des Lebens Wütend www http://t 535
Noru Wütend www http://t 535
●● Wütend www http://t 535
~Chan Während des Lebens 535
Ayano Omoto General männlich Ehe 532
Dies Ayano Omoto General männlich 532
PerfumeMusicPlayer Hör mal zu 138
RT#Herr Pafukura Verbinden 137
Abwesend http://t 131
Kuu http://t 127
Herr Saito http://t 127
- - Herr Saito 127
Verbinden #Pafukura http://t 125
___VAMPS ___Eins Ok 97
Schwarz ___Larque 97
___glee ___UVERworld 97
___UVERworld ___VAMPS 97
___Pfirsiche Schwarz 97
___Bz ___Eins Ok 97
___Larque ___Bz 97
___Shiina Apfel___GLAY ___glee 93
『[BGM arbeiten]perfumemix』 http://t 91
Liebe Keru 90
#Perfume#Ich mag Parfüm Verbinden 89
[Diffusionshoffnung] ● Explosiver Veranstaltungsplan ● Details___http ://t 89
Nino Viel 87
"Geheimnis Arashi-chan 86
Nur nur Keru 86
Radio Keru 86
Ding Kariru 86
"Dengeki Ehe~perfumeoflove~___Episode 1" http://t 84
~Chan Keru 83
Ste ___20131115』http://t 77
___MUSIC STATION 77
STATION Ste 77
FC2 Video: Keru 75
___Perfume ___Eins Ok 74
natürlich Ich vermisse dich 68
Hamaokamoto (OKAMOTO'S) 63
Mögen Ding 62
Ein Lied Abstimmung 60
dieses Jahr Ein Lied 60
Wort 『Perfume』 58
- - - -#prfm#perfume_um 56
Ah ~Chan 55
Hintergrundgeschichte Talk http://t 50
12/20(Boden)Osaka Castle Hall Fahrkarte 50
2008-4-5 GAME Release Hintergrundgeschichte Talk 50
[3 Prinzessinnen Hintergrundgeschichte Talk 50
Angenehm Hintergrundgeschichte Talk 50
『PerfumeTalk 2008-4-5 GAME Release 50
PerfumeMusicPlayer Hör mal zu 48
Kashiyuka Informieren 47
~Chan Informieren 47
Perfume ~Chan 47
Mögen Mann 45
Noru Informieren 45
natürlich ich liebe dich 45
Hand verbinden 43
Sekaowa Oberschenkel schwarz 43
Freut mich, dich kennenzulernen Bitte 43
Ding Gibt es 43
Mögen Einer 41
Perfume Kashiyuka 40
Mitglied Zeichnen 38
jetzt Überprüfen Sie http://t 36
demnächst Überprüfen Sie http://t 36
Perfume(Parfüm) Fahrkarte 36
Passen Einer 36
co/ 1IoZn9U583 35
Oberschenkel schwarz Perfume 35
Qi Werden 34
Perfume GLAY 33
co/ 7CRGN21Brf) 33
Einer Folge mir 33
Winter Alter 33
___http ://t 32
(#Perfume Kuu 32
Vermuten Extreme Jungfrau 32
H ___GLAY\720 31
Noru #prfm 31
/ J Soul Brothers der dritten Generation 31
Kariru ___GLAY\720 31
J Soul Brothers der dritten Generation ___GLAY\720 31
(Watts Inn) 2015 31
Zwei Personen Ist 31
2015 Januar-Ausgabe[Zeitschrift]http://t 31
___TEAM H 31
Fühlen Sie sich frei Folgen 30
Herz Sport 29
12/20(Boden)Details der Osaka Castle Hall Hier 29
Sie Email 28
Perfume Mitglied 28
Wort "Parfüm Cosplay" 28
Zeichnen ☆ Ultimative Arbeit ☆(> 28
[Festpreis oder weniger] ★ Transfer ★ Kamen Chauder YAJIO CRAZY Internationale Kollagenhochschule der Universität Chau 12/20(Boden)Osaka Castle Hall 28
Passen Mann 28
Ding Karu 27
Mögen Künstler 27

Wiederum sind insgesamt 500 oder mehr Abhängigkeiten verrauschte Bots. Lassen Sie uns also durchgehen. Der Bot ist übrigens die folgenden zwei Tweets.

Parfüm Nocchi A-chan Während des Lebens ●● und Wut www http://t.co/4Q0fmhel2l Parfüm Ayano Omoto, auch bekannt als "Nocchi" Verheiratet mit einem allgemeinen Mann? http://t.co/k6cFhLZwnZ

Ich weiß nicht, wie ich die Abhängigkeitstabelle betrachten soll, deshalb greife ich nach den Namen der drei Mitglieder. Unter den abhängigen Phrasen sind diejenigen aufgeführt, die "A-chan", "Kashiyuka" und "Nocchi" enthalten. (* Extrahiere nur diejenigen mit sauber getrennten Phrasen)

phrase1 phrase2 count
Kashiyuka Finger 2
Kashiyuka Haar 2
Kashiyuka Shake 2
Kashiyuka süß 1
Kashiyuka süß 1
Kashiyuka Kopf 1
Kashiyuka Rock 1
göttlich Kashiyuka 1
Kashiyuka linke Hand 1
Kashiyuka Stimme 1
Nocchi Wunderschönen 2
A-Chan Engel 2
A-Chan Einteiliger Kragen 1
A-Chan Knödel 1
A-Chan Lächeln 1

Wie Sie sehen können, gab es in der Abhängigkeitsanalyse viele Dinge, die mit Kayuka zu tun hatten! Wenn man diese Abhängigkeit betrachtet, werden die Eigenschaften jeder der drei Personen offenbart, was wunderbar ist ...

Schließlich

Wie oben erwähnt, haben wir mit Hilfe von mima_ita die Tweets über Parfüm analysiert. Rückblickend ist es schade, dass wir eine große Menge von Bottweets gesammelt haben, die für die Analyse unter den Bedingungen, die wir dieses Mal durchgeführt haben, nicht erforderlich sind ...

Ich habe noch viele Datenanalyse- und Python-Kenntnisse, daher werde ich dieses Buch kaufen, um es nächste Woche zu veröffentlichen, und es studieren (`・ ω ・ ´) ゞ Einführung in die Programmierung in Python-Sprache: Weltstandard-MIT-Lehrbuch

Recommended Posts

Tweet-Analyse mit Python, Mecab und CaboCha
[Python] Morphologische Analyse mit MeCab
Von Python bis zur Verwendung von MeCab (und CaboCha)
Verwenden von Python und MeCab mit Azure Databricks
Verwenden Sie Python und MeCab mit Azure-Funktionen
Verwenden Sie Mecab mit Python 3
Abhängigkeitsanalyse mit CaboCha
Sprachanalyse mit Python
Sprachanalyse mit Python
Datenanalyse mit Python
Programmieren mit Python und Tkinter
Ver- und Entschlüsselung mit Python
[Analyse des gemeinsamen Auftretens] Einfache Analyse des gemeinsamen Auftretens mit Python! [Python]
Sammeln von Informationen von Twitter mit Python (morphologische Analyse mit MeCab)
Emotionsanalyse von Python (word2vec)
Tweet mit Bild in Python
Planare Skelettanalyse mit Python
Japanische morphologische Analyse mit Python
Python mit Pyenv und Venv
Muskel-Ruck-Analyse mit Python
Funktioniert mit Python und R.
Führen Sie mit Python und Matplotlib eine Isostromanalyse offener Wasserkanäle durch
Installieren Sie CaboCha in der Ubuntu-Umgebung und rufen Sie es mit Python auf.
Kommunizieren Sie mit FX-5204PS mit Python und PyUSB
Leuchtendes Leben mit Python und OpenCV
Roboter läuft mit Arduino und Python
Installieren Sie Python 2.7.9 und Python 3.4.x mit pip.
AM-Modulation und Demodulation mit Python
Dreidimensionale Skelettstrukturanalyse mit Python
Scraping mit Python, Selen und Chromedriver
Kratzen mit Python und schöner Suppe
Text Mining mit Python ① Morphologische Analyse
Hadoop-Einführung und MapReduce mit Python
[GUI in Python] PyQt5-Drag & Drop-
Lesen und Schreiben von NetCDF mit Python
Ich mochte den Tweet mit Python. ..
Ich habe mit PyQt5 und Python3 gespielt
Ich habe mit Mecab gespielt (morphologische Analyse)!
Lesen und Schreiben von CSV mit Python
Mehrfachintegration mit Python und Sympy
Datenanalyse beginnend mit Python (Datenvisualisierung 1)
Logistische Regressionsanalyse Selbst erstellt mit Python
Koexistenz von Python2 und 3 mit CircleCI (1.0)
Bei Verwendung von MeCab mit virtualenv python
Datenanalyse beginnend mit Python (Datenvisualisierung 2)
Sugoroku-Spiel und Zusatzspiel mit Python
FM-Modulation und Demodulation mit Python
[Memo] Tweet auf Twitter mit Python
Ich habe mit Python, Flask und Heroku ein Nyanko-Tweet-Formular erstellt
Die stärkste Möglichkeit, MeCab und CaboCha mit Google Colab zu verwenden
Kommunizieren Sie mit gRPC zwischen Elixir und Python
Datenpipeline-Aufbau mit Python und Luigi
Überwachen Sie Mojo-Ausfälle mit Python und Skype
Erstellen Sie mit python3 eine Wortwolke aus Ihrem Tweet
[In-Database Python Analysis Tutorial mit SQL Server 2017]
FM-Modulation und Demodulation mit Python Part 3
[Automatisierung] Bearbeiten Sie Maus und Tastatur mit Python