Haben Sie eine Zeit, in der Sie den Twitter-Trend ankurbeln möchten?
In einem solchen Fall erstellen wir einen Bot, der automatisch twittert, indem Sätze aus einem bestimmten Tag in Python generiert werden.
Dieses Mal werde ich den Teil des Abrufens von Sätzen von Twitter und des Bildens von Sätzen weglassen. Außerdem habe ich es ungefähr 3 Mal aktualisiert, Das allererste ist einfach, also werde ich es erklären.
Zuerst müssen wir die Nomenklatur aus dem Japanischen extrahieren. Dieses Mal werden wir eine Syntaxanalysebibliothek namens "janome" verwenden.
janome
ist ein Tool, das Japanisch in Syntax zerlegt
from janome.tokenizer import Tokenizer
tokenizer = Tokenizer()
sentence = 'Der heutige Gast war Herr Wada.'
for token in tokenizer.tokenize(sentence):
print(token)
#Das heutige Substantiv,Anwalt möglich,*,*,*,*,heute,Hongjitsu,Hongjitsu
#Hilfswörter,Union,*,*,*,*,von,Nein,Nein
#Gastnomenklatur,Allgemeines,*,*,*,*,Die Gäste,Die Gäste,Die Gäste
#Ist ein Assistent,Hilfe,*,*,*,*,Ist,C.,Beeindruckend
#Wada Nomen,Proprietäre Nomenklatur,Name der Person,Nachname,*,*,Wada,Wada,Wada
#San Nomen,Suffix,Name der Person,*,*,*,Herr.,Sonne,Sonne
#Deshi Hilfsverb,*,*,*,Besonderer Tod,Kontinuierlicher Typ,ist,Deci,Deci
#Hilfsverb,*,*,*,Besondere,Grundform,Ta,Ta,Ta
#.. Symbol,Phrase,*,*,*,*,。,。,。
Der Japaner wird so zersetzt.
Sie können damit einen Tweet aufschlüsseln, dies kann jedoch zu Rauschen führen.
Machen Sie daher nur dann einen Satz, wenn dieselbe Nomenklatur in mehreren Tweets vorhanden ist.
Manche Leute mögen das.
Erstens gibt es eine Klasse für die doppelte Extraktion.
class DuplicateChecker:
def __init__(self, tokenier: Tokenizer):
self.twitt_nouns = []
self.tokenier = tokenier
def extract_duplications(self) -> [str]:
return [x for x in set(self.twitt_nouns) if self.twitt_nouns.count(x) > 1]
def input_twitt(self, twitt: str):
tokens = self.tokenier.tokenize(twitt)
nouns = []
buffer = None
for token in tokens:
if token.part_of_speech.count("Substantiv"):
if buffer is None:
buffer = ""
buffer += token.surface
else:
if buffer is not None:
nouns.append(buffer)
buffer = None
self.twitt_nouns.extend(nouns)
Wenn ich jetzt nach Duplikaten suche, sieht es so aus:
tokenier = Tokenizer()
duplicateChecker = DuplicateChecker(tokenier)
duplicateChecker.input_twitt("Ich spürte die Möglichkeit des Streifenmusters")
duplicateChecker.input_twitt('Ich fühle nur die Möglichkeit')
duplicateChecker.input_twitt('Fühle die Möglichkeit')
nouns = duplicateChecker.extract_duplications()
nouns # ["Möglichkeit"]
(Die Produktion wurde auch vom Benutzer überprüft.)
Machen Sie einen Satz aus der zuletzt extrahierten Nomenklatur. (Diese Zeit ist angemessen.)
class SentenceGenerator:
def __init__(self, nouns:[str]):
self.nouns = nouns
self.senence_base = ["{}Ist Gras", "{}wichtig", "{}", "{}Hallo", "{}だHallo", "{}!"]
def generate(self) -> str:
index:int = int(random.uniform(0, 200)) % len(self.senence_base)
sentence = self.senence_base[index].format(self.nouns[0])
return sentence
Wenn es ausgeführt wird, sieht es so aus.
Diesmal habe ich versucht, etwas unangemessen Einfaches zu machen. Wenn es eine Antwort gibt, werde ich schreiben, wie ich sie aktualisiert habe.
Recommended Posts