[PYTHON] Suchen Sie nach Pokemon Haunting Information von Twitter

Da Pokemon GO veröffentlicht wurde, möchte ich auf jeden Fall Twitter-Informationen effizient sehen. Versuchen Sie word2vec mit Python3, um Mundpropaganda-Daten zu suchen und die gewünschten Informationen zu erhalten.

Vorbereitungen

Klicken Sie hier für Python-Installation Klicken Sie hier für Mecab + neologd Installation

  1. Installieren Sie Meacab
  2. Vergewissern Sie sich, dass Python3 in der Befehlszeile funktioniert
  3. Add-On zu Eclipse (STS) hinzufügen
  4. Modulinstallation mit pip3
  5. HelloWold
  6. Informieren Sie sich auf Twitter
  7. Erstellung von Trainingsmodellen und Datenextraktion

Lass es uns versuchen!

2. Vergewissern Sie sich, dass Python3 in der Befehlszeile funktioniert

[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. Add-On zu Eclipse (STS) hinzufügen

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

4. Modulinstallation mit pip3

pip3 install gensim
pip3 install argparse
pip3 install prettyprint

pip3 install word2vec
pip3 install print
pip3 install pp
pip3 install nltk #Ich brauche es nicht auf Japanisch
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. Informieren Sie sich auf 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 "Substantiv" in fields[3]:
                        found = fields[2]
                    if "Verb" in fields[3]:
                        if "Hilfsverb" 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. Erstellung von Trainingsmodellen und Datenextraktion

Lassen Sie uns vorerst prüfen, ob die Daten in der Befehlszeile ordnungsgemäß abgerufen werden können.

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), ('Youkai Uhr', 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), ('Späte Kunst', 0.6864794492721558), ('EjPbfZEhIS', 0.6781727075576782), ('Löten', 0.6571916341781616), ('latteart', 0.6411304473876953)]
>>>
>>> model.most_similar(positive=u'Pikachu')
[('Tabak', 0.9689614176750183), ('Erstellen', 0.9548219442367554), ('Shibuya', 0.9207605123519897), ('EXCJ', 0.9159889221191406), ('Wegschmeißen', 0.8906601667404175), ('Holen Sie sich Müll', 0.7719830274581909), ('Da ist da', 0.6942187547683716), ('Vielen Dank', 0.6873651742935181), ('Bitte', 0.6714405417442322), ('GET', 0.6686745285987854)]
>>>
>>> model.most_similar(positive=u'Seltenes Pokémon')
[('Tabelle', 0.8076062202453613), ('Hayami', 0.8065655827522278), ('Lebensraum', 0.7529213428497314), ('erhalten', 0.7382372617721558), ('neueste', 0.7039971351623535), ('japanische Version', 0.6925774216651917), ('Base', 0.6455932855606079), ('300', 0.6433809995651245), ('YosukeYou', 0.6330702900886536), ('Enoshima', 0.6322115659713745)]
>>>
>>> model.most_similar(positive=u'Massenerzeugung')
[('Bereich', 0.9162761569023132), ('Chaos', 0.8581807613372803), ('Sakuragicho Station', 0.7103563547134399), ('EjPbfZEhIS', 0.702730655670166), ('Okura', 0.6720583438873291), ('Tonomachi', 0.6632444858551025), ('Imai Buchhandlung', 0.6514744758605957), ('丿', 0.6451742649078369), ('Paris', 0.6437439918518066), ('Eingang', 0.640221893787384)]

Ich bin neugierig auf die Basis und Enoshima mit seltenen Pokémon! Was ist mit der Sakuragicho Station, Okura, Tonomachi, Imai Shoten usw. aufgrund des Ausbruchs?

Nachtrag: Bonus

Ich habe mit Deploy to EC2 begonnen, Daten zu verarbeiten. Wenn Sie kein Geld haben, können Sie es nicht als API w veröffentlichen
Hinweis:Die Genauigkeit ist immer noch gering. Überprüfen Sie daher bitte Ihre wahren Absichten.!!!!

▼ Pokemon "Spot" Bewertung Keyword-Ranking von Twitter& word2vec
1.Kinshi Park
2.Präfektur Aichi
3. gamespark 
4.Nagoya
5.Park
6.Einkaufsstraße
7.Drei Plätze
8.Ohori Park
▼ Pokemon "Massenausbruch" Mundpropaganda-Keyword-Ranking von Twitter& word2vec
1.Pokemon Event Zusammenarbeit
2.Sakuragicho Station
3.Okura
4.Nishi Shinjuku
5.Einkaufsstraße
6.Paris
7.Zentralpark
8.Fukushima
9.Imai Buchhandlung
▼ Pokemon "Rare Pokemon" Bewertung Keyword-Ranking von Twitter& word2vec
1.Legende
2.Falsches Gerücht
3.Lebensraum
4.Mitternacht
5.Privates Haus
6.Osten
7.Miu Zwei
8.Scherzinformationen
9.aktualisieren
10.Auswertung
11.Mamitsuka Stadt, Isezaki Stadt, Präfektur Gunma

Nachtrag: neologd

https://github.com/neologd/mecab-ipadic-neologd Wenn Sie sorgfältig lesen, können Sie anscheinend die neueste Version mit install-mecab-ipadic-neologd wie unten gezeigt installieren.

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

Nachtrag: Hinzufügen eines Benutzerwörterbuchs

Fügen Sie ein Benutzerwörterbuch hinzu, indem Sie auf hier verweisen. Geben Sie die Stationsnamenliste, die Parks in Tokio und die Monsternamen ein.

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/

Bonus

Ich werde das Ergebnis des Versuchs mit dem Datenmodell von Wikipedia im Jahr 2018 hinzufügen.

Das Leben einer Frau ist "Liebe"
Das Hinzufügen von "Ehe" zum Leben einer Frau ist "Affäre"
"Ehe" vom Leben einer Frau abzuziehen ist "Weisheit"
Die Antwort aus dem ehrwürdigen WikiPedia-Datenmodell

26166696_645464965624132_9085888345293241147_n.jpg

Übrigens, wenn Sie nach Jobsuche, Erfolg, Fall suchen, finden Sie sechs Wiederaufbereitungsanlagen ...

Recommended Posts

Suchen Sie nach Pokemon Haunting Information von Twitter
Sammeln von Informationen von Twitter mit Python (Twitter API)
Holen Sie sich Bilder per Stichwortsuche von Twitter
Sammeln von Informationen von Twitter mit Python (Umgebungskonstruktion)
Verbesserte Suche nach Pokemon-Rennwerten mit Python
Suchen Sie selbst anhand der Methoden in Djangos Modell
Sammeln von Informationen von Twitter mit Python (morphologische Analyse mit MeCab)
[Für Anfänger] Lesen Sie die DB-Authentifizierungsinformationen aus Umgebungsvariablen
Suchen und speichern Sie das Bild von Tomono Kafu von Twitter
Suchen Sie Twitter mit Python
Suchen Sie unter Linux über die Befehlszeile nach großen Dateien
Sammeln von Informationen von Twitter mit Python (Integration von MySQL und Python)