Führen Sie eine Twitter-Suche in Python durch und versuchen Sie, Sätze mit der Markov-Kette zu generieren.

Erhalten Sie Tweets mit einem beliebigen Schlüsselwort mithilfe der Twitter-API. Speichern Sie die erfassten Daten als Text und übergeben Sie sie an MeCab. Führen Sie eine morphologische Analyse durch und versuchen Sie, mit der Markov-Kette einen Satz zu bilden.

Dieses Mal habe ich die Zählung auf 140 gehalten, damit sie so wie sie ist für Tweets verwendet werden kann. Sie können versuchen, es lang zu machen. Die Genauigkeit ist gering. Ich habe gerade die Großartigkeit der komprimierten Zeitung erkannt.

markov.py



#!/user/bin/env python
# -*- coding: utf-8 -*-
from requests_oauthlib import OAuth1Session
import json
import sys
import MeCab
import random


while True:
	search_words = raw_input(u"Keyword?: ")
	
	C_KEY = "******************************"
	C_SECRET = "******************************"
	A_KEY = "******************************"
	A_SECRET = "******************************"


	def Limit_Status():
		url = "https://api.twitter.com/1.1/application/rate_limit_status.json"
		params = {}
		tw = OAuth1Session(C_KEY,C_SECRET,A_KEY,A_SECRET)
		req = tw.get(url, params = params)
		if req.status_code == 200:
			limit = req.headers["x-rate-limit-remaining"]
			print ("API remain: " + limit)
		return Limit_Status
	
	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("test.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("test.txt","rb")
		data = f.read()
		f.close()

		mt = MeCab.Tagger("-Owakati")
		wordlist = mt.parse(data)
 
		markov = {}
		w1 = ""
		w2 = ""
		w3 = ""
		w4 = ""
		w5 = ""
		w6 = ""
		w7 = ""
		w8 = ""
		for word in wordlist:
			if w1 and w2 and w3 and w4 and w5 and w6 and w7 and w8:
				if (w1,w2,w3,w4,w5,w6,w7,w8) not in markov:
					markov[(w1,w2,w3,w4,w5,w6,w7,w8)] = []
				markov[(w1,w2,w3,w4,w5,w6,w7,w8)].append(word)
			w1,w2,w3,w4,w5,w6,w7,w8 = w2,w3,w4,w5,w6,w7,w8,word
		count = 0
		sentence = ""
		w1,w2,w3,w4,w5,w6,w7,w8 = random.choice(markov.keys())
    
		while count < 140:
			if markov.has_key((w1,w2,w3,w4,w5,w6,w7,w8)) == True:
				tmp = random.choice(markov[(w1,w2,w3,w4,w5,w6,w7,w8)])
				sentence += tmp
				w1,w2,w3,w4,w5,w6,w7,w8 = w2,w3,w4,w5,w6,w7,w8,tmp
				count +=1
			if " " in sentence:
				sentence = sentence.split(" ", 1)[0]
				
		print sentence
	
	if search_words:
		Search_words()
		Mecab_file()
		Limit_Status()
	else:
		break

Ich habe versucht, mit 8 Ketten zu arbeiten. Es stellte sich als uninteressant heraus, wenn ich nicht bei ungefähr 4 Ketten anhielt.

Ursprünglich wollte ich alle unnötigen Daten aus Json-Daten entfernen, aber mein Wissen ist derzeit begrenzt. Wenn http im Text enthalten ist, habe ich vorerst versucht, es mit split zu entfernen.

Wenn test.txt nicht im selben Verzeichnis vorhanden ist, wird es wie gewohnt generiert. Wenn ja, überschreiben Sie es.

Die Schleife in While wird unterbrochen, wenn sie ausgeführt wird, ohne dass ein Suchwort eingegeben wird. Es kann sinnvoll sein, verschiedene Suchwörter separat zu speichern.

Ich habe versucht, es zu bearbeiten. Schärfen Sie die nicht benötigten Teile mit regulären Ausdrücken. Zufällige Auswahlmöglichkeiten wie "desu" und "masu", damit das Ende des Satzes nicht seltsam wird.

Ich fand, dass dieser praktischer war.

	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):
					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)
		
			random_words_list = [u"。", u"ist.", u"Es ist."]
			last_word = random.choice(random_words_list)
	
		print re.sub(re.compile("[!-~]"),"",sus), last_word

Recommended Posts

Führen Sie eine Twitter-Suche in Python durch und versuchen Sie, Sätze mit der Markov-Kette zu generieren.
WEB Scraping mit Python und versuchen, aus Bewertungen eine Wortwolke zu machen
Versuchen Sie, ein Unterfenster mit PyQt5 und Python zu öffnen
Versuchen Sie, mit Python3 eine Zeichenfolge aus einem Bild zu extrahieren
[Python] Versuchen Sie, Zeichen aus Bildern mit OpenCV und pyocr zu erkennen
Versuchen Sie, mit Python eine Lebenskurve zu zeichnen
So generieren Sie ein Python-Objekt aus JSON
Versuchen Sie, in Python einen "Entschlüsselungs" -Code zu erstellen
Versuchen Sie, Python-Dokumente automatisch mit Sphinx zu generieren
Schritte zum Erstellen eines Twitter-Bots mit Python
Versuchen Sie, mit Python eine Diedergruppe zu bilden
Versuchen Sie, mit Talking Head Anime aus einem einzigen Bild zu verschönern [Python-Vorbereitung]
Lassen Sie uns ein Befehls-Standby-Tool mit Python erstellen
Probieren Sie die DB-Operation mit Python aus und visualisieren Sie sie mit d3
Crawlen mit Python und Twitter API 1-Einfache Suchfunktion
Vom Kauf eines Computers bis zur Ausführung eines Programms auf Python
Holen Sie sich mit Python eine große Menge von Starbas Twitter-Daten und probieren Sie die Datenanalyse Teil 1 aus
Suche nach Twitter-Tweets mit Python
Versuchen Sie, mit Python schnell und einfach auf die Twitter-API zuzugreifen
Hasch mit Python und entkomme dem Ego eines bestimmten Ministers
Sammeln von Informationen von Twitter mit Python (Integration von MySQL und Python)
Versuchen Sie einfach, einen Webhook mit ngrok und Python zu erhalten
Lern-Roadmap, mit der Sie Services mit Python von Grund auf neu entwickeln und veröffentlichen können
Ich habe einen Server mit Python-Socket und SSL erstellt und versucht, über den Browser darauf zuzugreifen
Versuchen Sie es mit morphologischer Analyse und Markov-Kette mit Django (Ari mit viel Raum für Verbesserungen)
Wiederholen Sie mit While. Skript zum Twittern oder Suchen vom Terminal aus
Versuchen Sie, Facebook mit Python zu betreiben
[Lambda] [Python] Von Lambda auf Twitter posten!
Versuchen Sie, eine Python-Umgebung mit Visual Studio Code & WSL zu erstellen
So erstellen Sie eine Überwachungskamera (Überwachungskamera) mit Opencv und Python
Crawlen mit Python und Twitter API 2-Implementierung der Benutzersuchfunktion
Holen Sie sich Daten von VPS MySQL mit Python 3 und SQL Alchemy
Ich möchte den vollständigen Text mit elasticsearch + python durchsuchen
Ich habe versucht, mit Selenium und Python einen regelmäßigen Ausführungsprozess durchzuführen
Versuchen Sie, Google Map und Geography Map mit Python anzuzeigen
[Python] Generiere ein Passwort mit Slackbot
Mit Python 3 einfach auf Twitter posten
Übergeben Sie die Liste von Python an C ++ als Referenz in pybind11
Versuchen Sie, Ihrer IFC-Datei mit IfcOpenShell Python eine Wand hinzuzufügen
[Python] Eine Dateninfrastruktur zum Erfassen und Veröffentlichen von Tweets von der Twitter-API in BigQuery wurde auf GCP aufgebaut (mit negativer / positiver Bewertung).
[AWS lambda] Stellen Sie mit lambda verschiedene Bibliotheken bereit (generieren Sie eine Zip-Datei mit einem Kennwort und laden Sie sie auf s3 hoch) @ Python
Einführung und Verwendung der Python-Flasche ・ Versuchen Sie, einen einfachen Webserver mit Anmeldefunktion einzurichten
Informationen werden durch Twitter-Suche gesammelt, morphologische Analysen werden durchgeführt, Sätze werden von der Markov-Kette generiert und Tweets werden erstellt.
2. Erstellen Sie mit Python einen Entscheidungsbaum von 0 und verstehen Sie ihn (2. Grundlagen des Python-Programms)
Setzen Sie Cabocha 0.68 in Windows ein und versuchen Sie, die Abhängigkeit mit Python zu analysieren
[Python] Ich habe einen Twitter-Bot erstellt, der freundschaftliche Tweets mit Markov-Kettenregeln generiert.
Versuchen Sie, Breiten- / Längen- und Weltkoordinaten mit Python ineinander umzuwandeln
Versuchen Sie, mit Python (2) eine Erfassungssoftware zu erstellen, die so genau wie möglich ist.
Erstellen Sie mit Mecab aus Python3 ein Tool, das Furigana automatisch mit HTML schüttelt
Lösen mit Ruby, Perl, Java und Python AtCoder AGC 033 Eine Suche mit Breitenpriorität
Versuchen Sie, Foldl und Foldr mit Python: Lambda zu machen. Auch Zeitmessung
Versuchen Sie, den RSS-Feed von arXiv mit Python von Raspeye auf Twitter zu twittern
Migration von Python2 zu Python3 (Python2 wird als virtuelle Umgebung neu erstellt und existiert gleichzeitig)
Suchen Sie mit tweepy nach Twitter-Keywords und schreiben Sie die Ergebnisse in Excel
Stellen Sie von Python aus eine Verbindung zu postgreSQL her und verwenden Sie gespeicherte Prozeduren in einer Schleife.
PPLM: Eine einfache Deep-Learning-Technik zum Generieren von Sätzen mit bestimmten Attributen
Versuchen Sie, Python-Code zu schreiben, um Go-Code zu generieren. - Versuchen Sie, JSON-to-Go usw. zu portieren