Ich mag Runden, deshalb wollte ich immer das Wort verbreiten. "Rhythmus" ist ein interessanter und tiefer Teil. Ich habe mehrmals versucht, die Texte zu schreiben, aber es sah nicht richtig aus (es wurde wie ein Mist, und die Geschichte war im Hinblick auf den Rhythmus chaotisch). Wenn Sie dann die Quelle der Texte eingeben, warum nicht etwas wie "Rhythmus" ausgeben? ?? Ich werde es versuchen. ~~ (Hast du in deiner Jugend Liebeslieder oder Texte geschrieben? Lol.) ~~
Selbst wenn Sie den Reim in einem Biss sagen, ändert sich der Klang abhängig von der Aussprache ("so" und "soo") und so weiter. Wenn diesmal die Vokale [a, i, u, e, o] in derselben Reihenfolge sind, wird dies als "rym" angesehen. Eine Romaji-Konvertierung ist erforderlich, aber [kakashi] [link](hier erwähnt) macht es möglich. Vorerst werde ich die Textdaten mit den Texten eines Songs eines bestimmten Rapper als Eingabedaten verwenden. ~~ (Apropos "Kakashi", "Robo oder Kakuyamako-like von KICK THE CAN CREW" fällt mir ein) ~~ [link]:https://crimnut.hateblo.jp/entry/2018/08/29/180455
from pykakasi import kakasi
import re
with open("gennama.txt","r") as f:
data = f.read()
kakasi = kakasi()
kakasi.setMode('H', 'a')
kakasi.setMode('K', 'a')
kakasi.setMode('J', 'a')
conv = kakasi.getConverter()
filename = data
data = conv.do(filename)
data_re = re.sub(r"[^aeiou]+","",data)
print(data_re)#Ausgabe oeauiaau...
Ich habe es mit kakasi
in Romaji konvertiert und nur das Ziel [a, i, u, e, o] mit re.sub ()
extrahiert. Als nächstes möchte ich die Eingabedaten nach einer bestimmten Regel teilen und den Teil verarbeiten, in dem die Vokale übereinstimmen, aber ich verliere mich hier. Es ist schwer zu sagen, was Sie tun möchten und was die "Lyrik" ist. Ich hatte mir Sorgen um die Form der Eingabedaten gemacht und wie man sie transformiert, aber ich konnte sie nicht erstellen, also dachte ich vorerst darüber nach, den Reim zu quantifizieren.
~~ ("Alle sagten, dass der entwickelte Reim gut ist. In der Ginza-Linie von YOSHI (Hunger Ranger)" Der Klang von [in] ist angenehm. Ich denke diesmal nicht an [n]) ~~
#Schneiden Sie das kürzere Wort in Scheiben, und wenn es im anderen enthalten ist, betrachten Sie es als "Reim" und fügen Sie seine Länge als Partitur hinzu
def make_score(word_a, word_b):
score = 0
if len(word_a) > len(word_b):
word_len = len(word_b)
for i in range(word_len):
for j in range(word_len + 1):
if word_b[i:j] in word_a:
score += len(word_b[i:j])
else:
word_len = len(word_a)
for i in range(word_len):
for j in range(word_len + 1):
if word_a[i:j] in word_b:
score += len(word_a[i:j])
return score
Ich glaube, ich konnte mit dieser Punktzahl die "Quantifizierung des Reims" ausdrücken. Es war in Ordnung, nur das Match am Ende des Wortes zu erzielen, aber ich beschloss, das Wort in Scheiben zu schneiden. ~~ Alle japanischen Verben enden mit dem Ton "u". Es ist nicht wünschenswert, nur mit Verben ~~ zu verweilen
Übrigens sind die Eingabedaten noch ungewiss, aber lassen Sie uns über die Ausgabe bis jetzt nachdenken. Die Ausgabe ist irrelevant, aber es ist eine "lyrische". .. Man kann sagen, dass die "Quantifizierung des Reims" zwischen den Wörtern ähnlich ist. Wenn Sie Ihr Lieblingswort in eines der Wörter eingeben, wird das Wort mit hoher Ähnlichkeit aus den Daten empfohlen. Die Eingabedaten sind die Texte eines bestimmten Wrappers, die Teilungsmethode ist gemäß der Textkarte leer und die vorherigen werden unter dieser Bedingung zusammengefasst. ~~ Ich denke, Catch Copy und Dajare sind auch Reime. Meistens auch Wörter. Das Ziel während der Runde ist ebenfalls angenehm. Ich denke, dass das Treten auf den Reim das Gefühl stärkt, gute Dinge zu sagen. ~~
from pykakasi import kakasi
import re
with open("./gennama.txt","r", encoding="utf-8") as f:
data = f.read()
#Diesmal "hoge hoge hoge...Weil es nur durch das Leerzeichen wie "split" geteilt wird()Nur Vorbehandlung
data_sp = data.split()
target_word_origin = "Gennama"
kakasi = kakasi()
kakasi.setMode('H', 'a')
kakasi.setMode('K', 'a')
kakasi.setMode('J', 'a')
conv = kakasi.getConverter()
#Konvertiere nach Romaji
target_word = conv.do(target_word_origin)
text_data = conv.do(data).split()
text_data = list(text_data)
#Lass nur Vokale
target_word_vo = re.sub(r"[^aeiou]+","",target_word)
vowel_data = [re.sub(r"[^aeiou]+","",text) for text in text_data]
#vowel_Erstellen Sie ein Wörterbuch, damit Sie die Daten vor der Vokalkonvertierung aus dem Datenindex sehen können.
dic = {k:v for k,v in enumerate(data_sp)}
#Schneiden Sie das kürzere Wort in Scheiben, und wenn es im anderen enthalten ist, betrachten Sie es als "Reim" und fügen Sie seine Länge als Partitur hinzu
def make_score(word_a, word_b):
score = 0
if len(word_a) > len(word_b):
word_len = len(word_b)
for i in range(word_len):
for j in range(word_len + 1):
if word_b[i:j] in word_a:
score += len(word_b[i:j])
else:
word_len = len(word_a)
for i in range(word_len):
for j in range(word_len + 1):
if word_a[i:j] in word_b:
score += len(word_a[i:j])
return score
#Übergeben Sie Daten nur mit Vokalen und beliebigen Wörtern. Holen Sie sich den Index und die Punktzahl als Satz, damit Sie die ursprünglichen Wörter später verstehen können.
def get_idx_score(vowel_data, target_word):
ranking = []
for i, word_b in enumerate(vowel_data):
score = make_score(target_word, word_b)
ranking.append([i, score])
return sorted(ranking, key=lambda x:-x[1])
ranking = get_idx_score(vowel_data, target_word_vo)
print(target_word_origin)
for i in range(len(ranking)):
idx = ranking[i][0]
score = ranking[i][1]
print("Ergebnis:" + str(score))
print("Wort:" + dic[idx])
Ich habe die fertigen Texte als Eingabedaten verwendet, aber selbst wenn ich die Wörter in den Texten für target_word verwende, kommt der Teil, der sich reimt, nicht immer an die Spitze. Dies sollte der Fall sein, und die Methode zum Teilen der Eingabedaten ist angemessen. Ich konnte jedoch konkreter über den unvernünftigen Teil nachdenken, da die Gliederung erstellt wurde. Auch das Problem wurde klar.
Ich konnte die Richtung sehen. Die Eingabe ist eine Liste meiner eigenen Wörter, und die Ausgabe ist ein Gefühl, das Wörter empfiehlt, die sich wie diesmal aus der Eingabe reimen lassen. Auf diese Weise finde ich es interessant zu wissen, dass Sie in Ihren eigenen Worten verweilen können. Wenn Sie Texte wie Sie selbst schreiben möchten, sollte der zentrale Teil der Texte vervollständigt werden, wenn Sie aufschreiben, was Sie sagen möchten, ohne sich um den Reim zu sorgen. In Zukunft wird es notwendig sein, die Methode zur Aufteilung von Eingabedaten in Wörter und zur Bewertung von Reimen zu verbessern. Ich möchte die Eingabefreiheit als meine eigenen Wörter angeben (ich möchte Dialekte und eindeutige Phrasen beibehalten), also werde ich verschiedene Dinge ausprobieren. (Das einfache Extrahieren durch Teilwortbindung scheint nicht das gewünschte Ergebnis zu erzielen.)
* Unter Memorandum
Ich bin ein Anfänger in der Programmierung. Nachdem ich online gelernt hatte, als ich versuchte, etwas zu machen, versuchte ich, alles zu verwenden, was ich gelernt hatte, die Eingabedaten zu kratzen und die Morphologie zu analysieren ... Ich dachte, dass die Ausgabe fertige Texte, LSTM usw. verwenden würde. Nichts ging weiter. Wie im Text erwähnt, waren die Eingabe und Ausgabe unvernünftig, und was ich tun wollte, war nicht konkret, also warf ich es raus. Ich wollte etwas, das ich vorerst gemacht hatte, und versuchte, jemandes Codierung zu quetschen, aber ich konnte niemanden finden, der dasselbe tat. (Eine Person, die auf den ursprünglichen Reim treten will, hat versucht zu quetschen ...)
Was diesmal den Fluss veränderte, war die "inhaltsbasierte Filterung von Empfehlungen" bei der Überprüfung des Online-Lernens, und wenn die Ähnlichkeit auf "Quantifizierung des Reims" gesetzt würde, wäre es möglich, Empfehlungen abzugeben. Dachte ich plötzlich. Eigentlich habe ich immer noch auf die Ähnlichkeit geachtet, aber ich konnte mir nicht vorstellen, wie ich sie verwenden sollte. Es scheint einfach zu sein, also habe ich es versucht, aber es hat nicht die gewünschte Ausgabe erzeugt. Hier wurde klar, worum es ging. Außerdem dachte ich, dass die Eingabedaten eine Liste von Wörtern sein könnten, wie die diesmal verwendeten Texte.
Was ich sagen möchte, ist, dass es wichtig ist, zuerst ein allgemeines Framework wie dieses zu erstellen. Die zu verwendenden Daten sollten etwas sein, das die Ausgabe grob vorhersagen kann, und die Verwendung des fertigen Produkts kann später in Betracht gezogen werden. Es gibt auch Links zu Dingen, die Sie nicht für unnötig halten. Als ich weniger motiviert war zu studieren, wollte ich mich daran erinnern.
Recommended Posts