[PYTHON] Rechercher des informations sur Pokemon Haunting sur Twitter

Depuis la sortie de Pokemon GO, je veux vraiment voir les informations Twitter de manière efficace. Essayez word2vec avec Python3 pour rechercher des données de bouche à oreille et atteindre les informations souhaitées.

Préparation préalable

Cliquez ici pour Installation de Python Cliquez ici pour Installation de Mecab + neologd

  1. Installez Meacab
  2. Confirmez que python3 fonctionne sur la ligne de commande
  3. Ajouter un module complémentaire à Eclipse (STS)
  4. Installation du module avec pip3
  5. HelloWold
  6. Obtenez des informations sur Twitter
  7. Création de modèles de formation et extraction de données

essayons!

2. Confirmez que python3 fonctionne sur la ligne de commande

[murotanimari]$  python3 --version
Python 3.5.2
[murotanimari]$ pip3 --version
pip 8.1.2 from /Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages (python 3.5)

3. Ajouter un module complémentaire à Eclipse (STS)

http://pydev.org/updates/からPyDevをインストールすると、PyDevProjectが作成可能になるので、新規に作成します。

4. Installation du module avec pip3

pip3 install gensim
pip3 install argparse
pip3 install prettyprint

pip3 install word2vec
pip3 install print
pip3 install pp
pip3 install nltk #Je n'en ai pas besoin en japonais
pip3 install tweepy
pip3 install scipy

# for japanese
brew install mecab
brew install mecab-ipadic
pip3 install mecab-python3
  1. HelloWold

HelloWorld.py


import nltk
nltk.download('all');

import argparse
from gensim.models import word2vec

print("Hello, World!")

6. Obtenez des informations sur Twitter

ParseJP.py


#!/usr/bin/env python
# -*- coding: utf-8 -*- 

import nltk
import sys
import tweepy
import json
import subprocess
import datetime
import MeCab

from tweepy.streaming import StreamListener
from tweepy import OAuthHandler
from tweepy import Stream
from numpy.core.multiarray import empty

#Variables that contains the user credentials to access Twitter API 
access_token = "*****************"
access_token_secret = "*****************"
consumer_key = "*****************"
consumer_secret = "*****************"

#This is a basic listener that just prints received tweets to stdout.
class StdOutListener(StreamListener):
    def on_data(self, data):
        jsondata = json.loads(data)
        sentence = jsondata["text"]
        
        try:
            #print(sentence)
            t = MeCab.Tagger("-Ochasen")
            tagged = t.parse(sentence)
            #print(tagged)
            out = "";
            for item in tagged.split('\n'):
                item = str(item).strip()
                if item is '':
                    continue
                
                fields = item.split("\t")
                #print(fields)
                found = ""
                if 'EOS' not in item:
                    if "nom" in fields[3]:
                        found = fields[2]
                    if "verbe" in fields[3]:
                        if "Verbe auxiliaire" not in fields[3]:
                            found = fields[2]
                    
                if("//" not in str(found).lower()):
                    if(found.lower() not in ["rt","@","sex","fuck","https","http","#",".",",","/"]):
                        if(len(found.strip()) != 0):
                            found = found.replace("'", "/'");
                            out += found + " "
                            
            today  = datetime.date.today()
            cmd  = "echo '"+ out + "' >> /tmp/JP" + today.isoformat() +".txt"
            #print(cmd)
            subprocess.check_output(cmd, shell=True)
                    
            return True
        except:
            print("Unexpected error:",found, sys.exc_info()[0])
            return True
            
    def on_error(self, status):
        print(status)

#### main method
if __name__ == '__main__':

    #This handles Twitter authetification and the connection to Twitter Streaming API
    l = StdOutListener()
    auth = OAuthHandler(consumer_key, consumer_secret)
    auth.set_access_token(access_token, access_token_secret)
    stream = Stream(auth, l)

    #This line filter Twitter Streams to capture data by the keywords: 'python', 'javascript', 'ruby'
    #stream.filter(track=['#pokemongo','#PokemonGo', '#PokémonGo', '#Pokémon' ,'#Pokemon', '#pokemon'], languages=["en"])    
    stream.filter(track=['#Pokémon','#pokemongo','#PokemonGo', '#PokémonGo', '#Pokémon' ,'#Pokemon', '#pokemon'], languages=["ja"])    
    #stream.filter(track=['#pokemon'], languages=["en"])
    

7. Création de modèles de formation et extraction de données

Pour le moment, vérifions si les données peuvent être obtenues correctement sur la ligne de commande.

python


>>> # !/usr/bin/env python
... # -*- coding:utf-8 -*-
... from gensim.models import word2vec
>>>
>>> data = word2vec.Text8Corpus('/tmp/JP2016-07-23.txt')
>>> model = word2vec.Word2Vec(data, size=200)
>>> model.most_similar(positive=u'Pokemon')
[('Pokémon', 0.49616560339927673), ('ND', 0.47942256927490234), ('Montre Youkai', 0.4783376455307007), ('I', 0.44967448711395264), ('9', 0.4415249824523926), ('j', 0.4309641122817993), ('B', 0.4284788966178894), ('CX', 0.42728638648986816), ('l', 0.42639225721359253), ('bvRxC', 0.41929835081100464)]
>>>
>>> model.most_similar(positive=u'Pikachu')
[('SolderingArt', 0.7791135311126709), ('61', 0.7604312896728516), ('Pokémon', 0.7314165830612183), ('suki', 0.7087007761001587), ('Chu', 0.6967192888259888), ('docchi', 0.6937340497970581), ('Art tardif', 0.6864794492721558), ('EjPbfZEhIS', 0.6781727075576782), ('Soudure', 0.6571916341781616), ('latteart', 0.6411304473876953)]
>>>
>>> model.most_similar(positive=u'Pikachu')
[('le tabac', 0.9689614176750183), ('Créer', 0.9548219442367554), ('Shibuya', 0.9207605123519897), ('EXCJ', 0.9159889221191406), ('Désinvolte', 0.8906601667404175), ('Obtenez la poubelle', 0.7719830274581909), ('Il y a', 0.6942187547683716), ('Je vous remercie', 0.6873651742935181), ('S'il vous plaît', 0.6714405417442322), ('GET', 0.6686745285987854)]
>>>
>>> model.most_similar(positive=u'Pokémon rare')
[('table', 0.8076062202453613), ('Hayami', 0.8065655827522278), ('Habitat', 0.7529213428497314), ('obtenir', 0.7382372617721558), ('dernier', 0.7039971351623535), ('Version japonnaise', 0.6925774216651917), ('base', 0.6455932855606079), ('300', 0.6433809995651245), ('YosukeYou', 0.6330702900886536), ('Enoshima', 0.6322115659713745)]
>>>
>>> model.most_similar(positive=u'Génération de masse')
[('Zone', 0.9162761569023132), ('le chaos', 0.8581807613372803), ('Gare de Sakuragicho', 0.7103563547134399), ('EjPbfZEhIS', 0.702730655670166), ('Okura', 0.6720583438873291), ('Tonomachi', 0.6632444858551025), ('Librairie Imai', 0.6514744758605957), ('丿', 0.6451742649078369), ('Paris', 0.6437439918518066), ('entrée', 0.640221893787384)]

Je suis curieux de connaître la base et Enoshima avec des Pokémon rares! Qu'en est-il de la gare de Sakuragicho, Okura, Tonomachi, Imai Shoten, etc. en raison de l'épidémie?

Post-scriptum: Bonus

J'ai commencé à traiter des données avec Deploy to EC2. Si vous n'avez pas d'argent, vous ne pouvez pas le publier en tant qu'API w
Remarque:La précision est encore faible, veuillez donc vérifier vos véritables intentions.!!!!

▼ Pokemon "Spot" Review Classement des mots-clés par Twitter& word2vec
1.Parc Kinshi
2.Préfecture d'Aichi
3. gamespark 
4.Nagoya
5.parc
6.Rue commerçante
7.Trois lieux
8.Parc Ohori
▼ Classement des mots-clés de bouche à oreille Pokemon "Mass Flush" par Twitter& word2vec
1.Collaboration d'événements Pokemon
2.Gare de Sakuragicho
3.Okura
4.Nishi Shinjuku
5.Rue commerçante
6.Paris
7.Parc central
8.Fukushima
9.Librairie Imai
▼ Pokemon "Rare Pokemon" Review Classement des mots-clés par twitter& word2vec
1.Légende
2.Fausse rumeur
3.Habitat
4.Minuit
5.Maison privée
6.est
7.Miu deux
8.Informations sur le canular
9.mise à jour
10.Évaluation
11.Ville de Mamitsuka, ville d'Isezaki, préfecture de Gunma

Post-scriptum: neologd

https://github.com/neologd/mecab-ipadic-neologd Si vous lisez attentivement, il semble que vous puissiez installer la dernière version avec install-mecab-ipadic-neologd comme indiqué ci-dessous.

git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git
cd mecab-ipadic-neologd
/usr/local/lib/mecab/dic/mecab-ipadic-neologd
./bin/install-mecab-ipadic-neologd -n
echo `mecab-config --dicdir`"/mecab-ipadic-neologd"

vi /usr/local/etc/mecabrc
dicdir = /usr/local/lib/mecab/dic/mecab-ipadic-neologd

Postscript: Ajout d'un dictionnaire utilisateur

Ajoutez un dictionnaire utilisateur en vous référant à here. Entrez la liste des noms de stations, les parcs de Tokyo et les noms de monstres.

cd /usr/local/lib/mecab/dic/ipadic
# add pokemon list
/usr/local/libexec/mecab/mecab-dict-index -u pokemon.dic -f utf-8 -t utf-8 /mnt/s3/resources/pokemons.csv
# add station list
/usr/local/libexec/mecab/mecab-dict-index -u station.dic -f utf-8 -t utf-8 /mnt/s3/resources/stations.csv
/usr/local/libexec/mecab/mecab-dict-index -u park.dic -f utf-8 -t utf-8 /mnt/s3/resources/park.csv

# copy into dict folder
cp pokemon.dic /usr/local/lib/mecab/dic/mecab-ipadic-neologd/ 
cp station.dic /usr/local/lib/mecab/dic/mecab-ipadic-neologd/
cp park.dic /usr/local/lib/mecab/dic/mecab-ipadic-neologd/

prime

J'ajouterai le résultat d'essayer avec le modèle de données de wikipedia en 2018.

La vie d'une femme est "amour"
Ajouter le "mariage" à la vie d'une femme est une "affaire"
Soustraire le «mariage» de la vie d'une femme est une «sagesse»
La réponse du vénérable modèle de données WikiPedia

26166696_645464965624132_9085888345293241147_n.jpg

Au fait, si vous cherchez par recherche d'emploi, succès, cas, vous trouverez six usines de retraitement ...

Recommended Posts

Rechercher des informations sur Pokemon Haunting sur Twitter
Collecter des informations sur Twitter avec Python (API Twitter)
Obtenez des images par recherche par mot-clé sur Twitter
Collecter des informations depuis Twitter avec Python (construction de l'environnement)
Recherche affinée des valeurs de race Pokemon à l'aide de Python
Recherchez vous-même à partir des méthodes du modèle de Django
Collecte d'informations sur Twitter avec Python (analyse morphologique avec MeCab)
[Pour les débutants] Lire les informations d'authentification DB à partir des variables d'environnement
Recherchez et enregistrez l'image de Tomono Kafu depuis Twitter
Rechercher sur Twitter avec Python
Rechercher des fichiers volumineux sous Linux à partir de la ligne de commande
Collecte d'informations sur Twitter avec Python (intégration de MySQL et Python)