Ich habe mit Python mit dem maschinellen Lernen begonnen (ich habe auch angefangen, in Qiita zu posten). Datenvorbereitung

</ i> Schön, Sie kennenzulernen

Ich bin Ingenieur in einem mittelständischen Unternehmen. Plötzlich beschloss ich zusammenzufassen, was ich in Qiita gelernt hatte. Vorerst werde ich das maschinelle Lernen, das ich studiere, zusammenfassen. (Wenn Sie sich das Herz brechen, machen Sie eine Pause mit einem anderen Thema, das leicht zu schreiben ist.) Ich habe übrigens vor, hauptsächlich Python als Sprache zu verwenden.

</ i> Bitte beachten Sie!

――Ich mag eher die Art zu berühren und zu verstehen als die Theorie, also sind es viele verschiedene Dinge. ――Weil es Analphabet ist, denke ich, dass es schwer zu verstehen sein wird. ―― Aus diesem Grund denke ich, dass es viele Dinge gibt, die Sie dazu bringen, es zu lesen, aber bitte verstehen Sie!

  • Sanftes Tsukkomi ist willkommen

</ i> Zusammenfassung in 3 Zeilen

――Lass uns maschinelles Lernen mit Twitter-Daten studieren. ――Dieses Mal werden wir über die Daten und die Umgebungsvorbereitung sprechen, die verwendet werden sollen. ――Nächstes Mal plane ich, Tweets zu gruppieren und die Ähnlichkeit zu berechnen.

</ i> Datensatz

Zu Beginn meines Studiums habe ich verschiedene Dinge mit "Iris" und "Titanic" ausprobiert, die in Nachschlagewerken und Tutorials so wie sie sind erscheinen, aber ich habe kein Interesse an Daten. Ich bin überhaupt nicht in meinen Kopf gekommen ...

Ich habe es mir anders überlegt und mich entschieden, ** Twitter ** -Daten zu verwenden, deren Analyse interessant zu sein scheint. Um es noch faszinierender zu machen (?), Werde ich mich dieses Mal auf Tweets über "** Parfüm **" konzentrieren. (Hinweis: Es ist eine Nocchi-Schule)

Übrigens, als ich einen Tweet mit "Parfüm" bekam und ihn mir ansah, stellte ich fest, dass die Anzahl der Tweets geringer war als erwartet (250 / 1h) und noch geringer, als ich Tweets ausschloss, die Bots zu sein schienen. Ich frage mich, ob es viele Fans gibt, die keine Tweets veröffentlichen. (Ich frage mich, ob Sie private Tweets ohne Benutzernamen veröffentlichen können ... Muri ...)

Infolgedessen ist die Anzahl der Daten etwas gering, daher möchte ich in Zukunft die Anzahl der Künstler zum Vergleich erhöhen. (Kandidaten: ** CAPSULE **, ** Sakanaction ** ...)

Was speziell mit maschinellem Lernen zu tun ist, ist ... ** Ich denke, während ich mich bewege **.

</ i> So bereiten Sie Daten vor

Wir haben bereits eine Umgebung erstellt, in der Tweets über Parfüm mithilfe der Streming-API gesammelt und mit der elastischen Suche gesammelt werden können. Speichern Sie dieses Mal einige Daten aus Elasticsearch in einer Datei (** es.log ) und verwenden Sie ein lokales Skript ( tw_ml.py **) für maschinelles Lernen und andere Aktivitäten, um das Lernen zu beschleunigen. Ich denke.

Es sieht wie folgt aus.

構成図.jpg

Das Datenformat ist wie folgt. (Da es sich beim Speichern um einen Wörterbuchtyp handelt, ist an das Unicode-Objekt "u" angehängt.)

es.log(1 Auszug, Daten sind Dummy)


[{u'_score': 1.0, u'_type': u'raw', u'_id': u'AVZkL6ZevipIIzTJxrL7', u'_source': {u'retweeted_status': u'True', u'text': u'Perfume\u306e\u597d\u304d\u306a\u6b4c', u'user': u'xxxxxxxxxx', u'date': u'2016-08-07T08:45:27', u'retweet_count': u'0', u'geo': u'None', u'favorite_count': u'0'}, u'_index': u'tweet'}]

Um es.log aus Python zu lesen, öffnen Sie es mit Codecs und verwenden Sie ast, um es in das Wörterbuch zurückzugeben. Derzeit gibt es 265 Fälle, aber wenn ich der Meinung bin, dass die Datenmenge nicht ausreicht, werde ich sie erneut von Elasticsearch erhalten und erhöhen.

tw_ml.py(Auszug)


import codecs
import ast
with codecs.open("es.log", "r", "utf-8") as f:
    es_dict = ast.literal_eval(f.read())
    print "doc:%d" % len(es_dict)  # doc:265

</ i> Umgebung, Hauptbibliotheken usw.

--Script-Ausführungsumgebung

  • Windows7 64bit

  • Python2.7

  • Haupt-Python-Bibliotheken

  • numpy 1.11.1

  • scipy 0.12.0

  • scikit-learn 0.16.0

  • mecab-python 0.996

Mecab wird übrigens für die japanische morphologische Analyse verwendet, aber "** mecab-ipadic-neologd **" wird für das Wörterbuch verwendet. Wenn ich das nicht benutzen würde, würden sogar "Kashiyuka", "Ah-chan" und "Nocchi" nicht als Worte angesehen werden ... lol

  • Selbst wenn Sie mecab-ipadic-neologd verwenden, ist "Nocchi" Katakana und "Notch"! Gefährlich! !!

tw_ml.py(Auszug)


MECAB_OPT = "-Ochasen -d C:\\tmp\\mecab-ipadic-neologd\\"
t = mc.Tagger(MECAB_OPT)

</ i> Dann ...

Ich dachte, aber da es lang geworden ist, werde ich ab dem nächsten Mal das Hauptthema des maschinellen Lernens machen! Lol Vorerst habe ich vor, Tweets zu gruppieren und Ähnlichkeiten zu berechnen.

</ i> Es war hilfreich! (Hauptsächlich wie man schreibt)

Recommended Posts