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
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 ...
・ Mac OSX 10.9.5 ・ Python 2.7.8
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)
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 (`・ ω ・ ´) ゞ
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.
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
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.
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 |
1 | 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"
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 | 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
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 ...
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