[PYTHON] Informationen werden durch Twitter-Suche gesammelt, morphologische Analysen werden durchgeführt, Sätze werden von der Markov-Kette generiert und Tweets werden erstellt.

Speichern Sie Suchergebnisse auf Twitter im Textformat. Speichern Sie verschiedene Suchergebnisse im Text, lesen Sie den Text und führen Sie eine morphologische Analyse durch. Von dort bis der Satz von der Markov-Kette generiert wird und der Tweet POSTED ist.

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):#Teile, die in Python 3 nicht funktionieren
					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

Suchergebnis-Tweets werden immer mehr in tweet.txt gespeichert und als externe Datei gespeichert. Ich bin unzufrieden, dass das Tweet-Ergebnis nicht interessant ist, wenn die Textmenge zu groß oder zu klein ist.

Wenn Sie es mit Cron treffen, können Sie es einfach zu einem Bot machen. In diesem Fall ist es möglicherweise besser, Hometimeline oder Usertimeline anstelle der Such-API zu verwenden.

Wenn Sie es als WEB-Anwendung ausführen, sieht es so aus. (Ich habe das Programm vom Server entfernt, daher habe ich es jetzt nicht.)

Hinweise zu Python 3

if markov.has_key(w):

Ist der Prozess

if w in markov:

Ersetzen mit.

Recommended Posts

Informationen werden durch Twitter-Suche gesammelt, morphologische Analysen werden durchgeführt, Sätze werden von der Markov-Kette generiert und Tweets werden erstellt.
Führen Sie eine Twitter-Suche in Python durch und versuchen Sie, Sätze mit der Markov-Kette zu generieren.