Enregistrez les résultats de la recherche sur Twitter au format texte. Enregistrez divers résultats de recherche dans du texte, lisez le texte et effectuez une analyse morphologique. De là jusqu'à ce que la phrase soit générée par la chaîne de Markov et que le tweet soit POSTÉ.
twmarkov.py
#!/user/bin/env python
# -*- coding: utf-8 -*-
from requests_oauthlib import OAuth1Session
import json
import sys
import MeCab
import random
import re
while True:
search_words = raw_input(u"words: ")
C_KEY = "*************************************"
C_SECRET = "*************************************"
A_KEY = "*************************************"
A_SECRET = "*************************************"
def Search_words():
url = "https://api.twitter.com/1.1/search/tweets.json?"
params = {
"q": unicode(search_words, "utf-8"),
"lang": "ja",
"result_type": "recent",
"count": "100"
}
tw = OAuth1Session(C_KEY,C_SECRET,A_KEY,A_SECRET)
req = tw.get(url, params = params)
tweets = json.loads(req.text)
for tweet in tweets["statuses"]:
f = open("tweet.txt" , "aw")
lists = (tweet["text"].encode("utf-8"))
if "http" in lists:
lists = lists.split("http", 1)[0]
lists = lists.split("@")[0]
lists = lists.split("RT")[0]
f.write(lists)
f.flush()
f.close()
def Mecab_file():
f = open("tweet.txt","rb")
data = f.read()
f.close()
mt = MeCab.Tagger("-Owakati")
wordlist = mt.parse(data)
wordlist = wordlist.rstrip(" \n").split(" ")
markov = {}
w = ""
for x in wordlist:
if w:
if markov.has_key(w):#Parties qui ne fonctionnent pas dans Python 3
new_list = markov[w]
else:
new_list =[]
new_list.append(x)
markov[w] = new_list
w = x
choice_words = wordlist[0]
sentence = ""
count = 0
while count < 90:
sentence += choice_words
choice_words = random.choice(markov[choice_words])
count += 1
sentence = sentence.split(" ", 1)[0]
p = re.compile("[!-/:-@[-`{-~]")
sus = p.sub("", sentence)
words = re.sub(re.compile("[!-~]"),"",sus)
twits = words + " 【tweet from twmarkov】"
url = "https://api.twitter.com/1.1/statuses/update.json"
params = {"status": twits,"lang": "ja"}
tw = OAuth1Session(C_KEY,C_SECRET,A_KEY,A_SECRET)
req = tw.post(url, params = params)
if req.status_code == 200:
print "Success! Your Tweet"
else:
print req.status_code
if search_words:
Search_words()
Mecab_file()
else:
break
Les tweets des résultats de recherche sont de plus en plus stockés dans tweet.txt enregistrés en tant que fichier externe. Je ne suis pas satisfait que le résultat du tweet ne soit pas intéressant si la quantité de texte est trop grande ou trop petite.
Si vous le frappez avec cron, vous pouvez simplement en faire un bot. Dans ce cas, il peut être préférable de choisir la ligne de repère ou la ligne de temps d'utilisation au lieu de l'API de recherche.
Lorsque vous l'exécutez en tant qu'application WEB, cela ressemble à ceci. (J'ai supprimé le programme du serveur, donc je ne l'ai pas maintenant)
if markov.has_key(w):
Est le processus
if w in markov:
Remplacer par.
Recommended Posts