Python2 + mot2vec

Ce que j'ai fait

Enregistrez le tweet avec tweepy et mettez-le dans word2vec pour jouer Je l'ai copié et collé en référence à divers endroits, il n'y a donc pas beaucoup de nouveauté. L'un des objectifs était d'avoir 'Hota-Man + Woman = Lori'.

environnement

CentOS7 Anaconda2-4.1.0

supposition

tweepy MeCab mecab-python gensim

code

Je me fiche d'être redondant ici et là.

TwStream.py


# -*- encoding:utf-8 -*-

import sys
import os
import re
import time
import tweepy

HERE = os.path.abspath(os.path.dirname(__file__))

CK = ''
CS = ''
AT = ''
AS = ''

class MyListener(tweepy.StreamListener):
	def __init__(self):
		super(MyListener, self).__init__()

	def on_status(self, status):
		try:
			tw = status.text.strip()
			#Tweet japonais uniquement
			if re.search(u'[Ah-Hmm-Vers le bas]', tw) is not None:
				with open(HERE + '/stream.txt', 'a') as f:
					#Il n'y a pas d'onglet dans le tweet, alors utilisez-le comme délimiteur
					f.write(tw.encode('utf-8') + '\n\t\n')
				print tw.encode('utf-8')
		except tweepy.TweepError as e:
			print e.reason
			if  'u\'code\': 88' in e.reason:
				print 'wait 15 min'
				time.sleep(15*60)

	def on_error(self, status_code):
		print 'error ', status_code
		if status_code == 420:
			print 'wait 15 min'
			time.sleep(15*60)
		time.sleep(10)

	def on_limit(self, status):
		print 'limit'
		time.sleep(10)

	def on_timeout(self, status):
		print 'timeout'
		time.sleep(10)

if __name__ == '__main__':
	while True:
		try:
			auth = tweepy.OAuthHandler(CK, CS)
			auth.set_access_token(AT, AS)
			print 'auth set'

			st = tweepy.Stream(auth, MyListener())
			print 'sampling'
			st.sample()

		except tweepy.TweepError as e:
			st.disconnect()
			print e.reason
			if 'u\'code\': 88' in e.reason:
				print 'wait 15 min'
				time.sleep(15*60)
		except KeyboardInterrupt:
			st.disconnect()
			break
		except:
			st.disconnect()
			continue

Renommez maintenant "stream.txt" en "raw.txt ".

W2V.py


# -*- encoding:utf-8 -*-

import sys
import os
import MeCab
import gensim
from gensim.models import word2vec

#Chemin de ce fichier
HERE = os.path.abspath(os.path.dirname(__file__))
sys.path.append(HERE)

#Module fait maison
from MeCabRW import *
from ProcStr import *

if __name__ == '__main__':
    MODEL = HERE + '/twitter.model'

    try:
        #Charger s'il y a un modèle
        print 'loading model'
        model = word2vec.Word2Vec.load(MODEL)
        print 'model loaded'
    except:
        #Créer sinon
        print 'model not loaded'
        print 'creating model'
        # mt = MeCab.Tagger('-Owakati')Est possible
        mt = mtWakatiNeo()
        avoid = ['RT']
        mecabParseRW(HERE + '/raw.txt', HERE + '/sep.txt', mt, avoid)

        #Lire les données de la division
        corp = word2vec.Text8Corpus(HERE + '/sep.txt')
        #Vous permet d'analyser phrase par phrase
        phrcorp = gensim.models.Phrases(corp)
        model = word2vec.Word2Vec(phrcorp[corp], size=2000, min_count=2)
        model.save(MODEL)

        print 'creating done'

    pos = [u'Shota', u'femme']
    neg = [u'Homme']

    sim = model.most_similar(positive=pos, negative=neg)

    print '+: ', ' '.join([i.encode('utf-8') for i in pos])
    print '-: ', ' '.join([i.encode('utf-8') for i in neg])
    print
    for i, j in sim:
        print i.encode('utf-8'), '\t', j

MeCabRW.py


# -*- coding: utf-8 -*-

import re
import MeCab

def mtWakatiNeo():
    opt = '-O wakati -d /usr/lib64/mecab/dic/mecab-ipadic-neologd'
    return MeCab.Tagger(opt)

def mecabParseRW(pathIn, pathOut, mt, avoid=[]):
    with open(pathIn, 'r') as f:
        sIn = f.read()
    #url et@[id]Suppression
    sIn = re.sub('https?://[A-Za-z0-9/:%#\$&\?\(\)~\.=\+\-]+', ' ', sIn)
    sIn = re.sub('@[A-Za-z0-9_]+', ' ', sIn)
    sOut = []
    for i in sIn.split('\n\t\n'):
        if all([j not in i for j in avoid]):
            p = mt.parse(i) #Parfois ça devient Aucun ici
            if type(p) == str: #Vérification de type
                try:
                    p.decode('utf-8')
                    sOut.append(p)
                except:
                    continue
    sOut = '\n\t\n'.join(sOut)
    with open(pathOut, 'w') as f:
        f.write(sOut)
    return sOut

résultat

Collectez et exécutez environ 60 Mo de tweets

loading model
model loaded
+:Shota femme
-:Homme

Singe 0.833452105522
Macaron 0.832771897316
Lori 0.830695152283
Compliment 0.828270435333
Parlant_0.825944542885
Umehara 0.825801610947
Arisa 0.822319507599
Petit lait 0.818123817444
cent_0.817329347134
Honda Tsubasa 0.816138386726

N'est-ce pas un bon sentiment? La formule inverse a le même sentiment.

loading model
model loaded
+:Homme Lori
-:femme

Violet 0.847893893719
cent_0.824845731258
Shota 0.82099032402
Faire 0.81635427475
Tsumugi 0.813044965267
Princesse 0.812274694443
Parodie 0.809535622597
Mob 0.804774940014
Blanc 0.802413225174
Cheveux noirs 0.800325155258

Divers

Je voulais vraiment le faire avec Windows + Python3, mais cela s'est produit à cause du code de caractère et des matériaux existants. Je n'ai utilisé que Python3, donc il peut y avoir une écriture étrange.

référence

http://docs.tweepy.org/en/v3.5.0/streaming_how_to.html https://radimrehurek.com/gensim/models/phrases.html#module-gensim.models.phrases http://tjo.hatenablog.com/entry/2014/06/19/233949

Recommended Posts

Python2 + mot2vec
Python
word2vec
Analyse des émotions par Python (word2vec)
Algorithme de recherche utilisant word2vec [python]
python kafka
Les bases de Python ⑤
Python intégré
Notation d'inclusion Python
Technique Python
Étudier Python
Compte à rebours Python 2.7
Mémorandum Python
Python FlowFishMaster
Service Python
fonction python ①
Les bases de Python
Mémo Python
ufo-> python (3)
Notation d'inclusion Python
Installer python
Python Singleton
Les bases de Python ④
Mémorandum Python 2
mémo python
Python Jinja2
Incrément Python
Installer Python 3.4.3.
Essayez Python
Mémo Python
Itératif Python
Algorithme Python
[Python] Variables
Fonctions Python
Python sys.intern ()
Tutoriel Python
Fraction Python
underbar python C'est ce que
Résumé Python
Comprendre Word2Vec
Démarrer python
[Python] Trier
Remarque: Python
Les bases de Python ③
Sortie du journal python
Les bases de Python
[Scraping] Scraping Python
Mise à jour Python (2.6-> 2.7)
mémo python
Mémorandum Python
Python #sort
ufo-> python
Python nslookup
apprentissage de python
[Rpmbuild] Python 3.7.3.
Python au prorata (1)
mémorandum python
Télécharger Python