J'ai commencé l'apprentissage automatique avec Python (j'ai également commencé à publier sur Qiita) Préparation des données

</ i> Ravi de vous rencontrer

Je suis ingénieur dans une entreprise de taille moyenne. Du coup, j'ai décidé de résumer ce que j'avais appris en Qiita. Pour l'instant, je vais résumer le machine learning que j'étudie. (Si vous vous brisez le cœur, faites une pause avec un autre thème facile à écrire) Au fait, je prévois d'utiliser principalement Python comme langage.

</ i> Attention!

«J'aime la manière de toucher et de comprendre plutôt que la théorie, donc c'est beaucoup de choses diverses. «Parce qu'il est analphabète, je pense que ce sera difficile à comprendre. ――Pour cette raison, je pense qu'il y a beaucoup de choses qui vous donnent envie de le lire, mais comprenez s'il vous plaît!

  • Gentle Tsukkomi est le bienvenu

</ i> Résumé en 3 lignes

―― Étudions l'apprentissage automatique en utilisant les données Twitter. ――Cette fois, nous parlerons des données et de la préparation de l'environnement à utiliser. ――La prochaine fois, je prévois de regrouper les tweets et de calculer la similitude.

</ i> Ensemble de données

Au début de mon étude, j'ai essayé diverses choses en utilisant "iris" et "Titanic" qui apparaissent dans les livres de référence et les tutoriels tels quels, mais je ne m'intéresse pas aux données. Je ne suis pas du tout entré dans ma tête ...

J'ai changé d'avis et j'ai décidé d'utiliser des données ** Twitter ** qui me semblent intéressantes à analyser. Aussi, pour le rendre plus intriguant (?), Je vais me concentrer sur les tweets sur "** Parfum **" cette fois. (Note: c'est une école Nocchi)

Au fait, quand j'ai reçu un tweet contenant "Parfum" et que je l'ai regardé, j'ai trouvé que le nombre de tweets était plus petit que prévu (250 / 1h), et encore moins quand j'ai exclu les tweets qui semblaient être des bots. Je me demande s'il y a beaucoup de fans qui ne publient pas de tweets. (Je me demande si vous pouvez publier des tweets privés sans nom d'utilisateur ... Muri ...)

Par conséquent, le nombre de données est un peu petit, alors j'aimerais augmenter le nombre d'artistes à des fins de comparaison à l'avenir. (Candidats: ** CAPSULE **, ** Sakanaction ** ...)

Ce qu'il faut faire spécifiquement avec l'apprentissage automatique, c'est ... ** Je réfléchis en bougeant **.

</ i> Comment préparer les données

Nous avons déjà créé un environnement pour collecter des tweets sur le parfum à l'aide de l'API Streming et les accumuler avec la recherche élastique. Cette fois, afin d'accélérer l'étude, enregistrez certaines données d'Elasticsearch dans un fichier (** es.log ) et essayez le machine learning avec un script local ( tw_ml.py **). Je pense.

Cela ressemble à ce qui suit.

構成図.jpg

Le format des données est le suivant. (Puisqu'il s'agit d'un type de dictionnaire lors de l'enregistrement, l'objet Unicode a "u" attaché.)

es.log(1 extrait, les données sont factices)


[{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'}]

Pour lire es.log depuis Python, ouvrez-le avec les codecs et utilisez ast pour le renvoyer dans le dictionnaire. Pour le moment, il y a 265 cas, mais si je pense que la quantité de données est insuffisante, je vais la récupérer auprès d'Elasticsearch et l'augmenter.

tw_ml.py(Extrait)


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> Environnement, bibliothèques principales, etc.

  • Environnement d'exécution de script
  • Windows7 64bit
  • Python2.7

--Bibliothèques Python principales

  • numpy 1.11.1
  • scipy 0.12.0
  • scikit-learn 0.16.0
  • mecab-python 0.996

D'ailleurs, Mecab est utilisé pour l'analyse morphologique japonaise, mais "** mecab-ipadic-neologd **" est utilisé pour le dictionnaire. Si je ne l'utilisais pas, même "Kashiyuka", "Ah-chan" et "Nocchi" ne seraient pas considérés comme des mots ... lol

  • Cependant, même si vous utilisez mecab-ipadic-neologd, "Nocchi" est katakana et "notch"! Dangereux! !!

tw_ml.py(Extrait)


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

</ i> Alors ...

J'ai pensé, mais comme c'est devenu long, je ferai le sujet principal de l'apprentissage automatique à partir de la prochaine fois! Lol Pour le moment, je prévois d'essayer de regrouper les tweets et de calculer la similitude.

</ i> C'était utile! (Principalement comment écrire)

Recommended Posts