[PYTHON] Ich möchte mit dem Reim Teil1 umgehen

__ Einführung __

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.) ~~

__ Urteil des Reims __

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...

__ Quantifizierung des Reims __

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

__ Was soll ausgegeben werden __

Ü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.

__ Eindrücke, zukünftige Entwicklung __

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.)

abschließend

* 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

Ich möchte mit dem Reim Teil1 umgehen
Ich möchte mit dem Reim part3 umgehen
Ich möchte mit dem Reim part2 umgehen
Ich möchte mit dem Reim part5 umgehen
Ich möchte mit dem Reim part4 umgehen
Ich möchte mit dem Reim part7 (BOW) umgehen
Ich möchte mit dem Reim part6 umgehen (einmal organisieren)
Ich möchte mit dem Reim part8 umgehen (einmal fertig)
Ich möchte ssh mit dem Befehl expected automatisieren! Teil 2
Ich möchte den Fortschrittsbalken anzeigen
Ich möchte das Erscheinungsbild von zabbix anpassen
Ich möchte die Aktivierungsfunktion Mish verwenden
Ich möchte den Fortschritt in Python anzeigen!
Ich möchte den Dateinamen von DataLoader sehen
Ich möchte das Ausführungsergebnis von strace erfassen
Ich möchte in der Django-Verschiebungstabelle scrollen, aber ...
Ich möchte die Optimierung mit Python und CPlex behandeln
Ich möchte SUDOKU lösen
Ich möchte mit Python-Datenklasse nach hinten erben
Ich möchte die Grundlagen von Bokeh vollständig verstehen
Ich möchte in Python schreiben! (3) Verwenden Sie Mock
Ich habe versucht, den negativen Teil von Meros zu löschen
Ich möchte ssh mit dem Befehl expected automatisieren!
Ich möchte das Produkt zu den niedrigsten Kosten veröffentlichen
Ich möchte R-Datensatz mit Python verwenden
Ich möchte die Sicherheit der SSH-Verbindung erhöhen
[TensorFlow] Ich möchte die Indizierung für Ragged Tensor beherrschen
Ich möchte Daten mit Python analysieren können (Teil 3)
Ich möchte das neueste gcc verwenden, auch wenn ich keine Sudo-Berechtigungen habe! !!
Ich möchte initialisieren, wenn der Wert leer ist (Python)
Ich möchte die von LINE an S3 gesendeten Fotos speichern
maya Python Ich möchte die gebackene Animation wieder reparieren.
Ich möchte vorerst Selen bewegen [für Mac]
Ich möchte Daten mit Python analysieren können (Teil 1)
Ich möchte nur die SudachiPy-Normalisierungsverarbeitung verwenden
Ich möchte Betriebsinformationen über die Yahoo-Route erhalten
Ich möchte mit Numpy die japanische Flagge in die Palau-Flagge ändern
Ich möchte Daten mit Python analysieren können (Teil 4)
Ich möchte die zulässige Ausfallzeit aus der Betriebsrate berechnen
Ich möchte Daten mit Python analysieren können (Teil 2)
[Python] Ich möchte die Option -h mit argparse verwenden
Ich möchte die Authentizität eines Elements eines numpy-Arrays bestimmen
Ich möchte die Natur von Python und Pip kennenlernen
Ich möchte den Wörterbuchtyp in der Liste eindeutig machen
Ich möchte den EDINET-Code und die Wertpapiernummer zuordnen
Keras Ich möchte die Ausgabe einer beliebigen Ebene erhalten !!
Ich möchte die gültigen Zahlen im Numpy-Array ausrichten
Ich möchte die Legende der IT-Technologiewelt kennenlernen
Ich möchte vorerst eine Docker-Datei erstellen.
Ich wollte den AWS-Schlüssel nicht in das Programm schreiben
Ich möchte systemd grob verstehen
Ich habe versucht, das Wahrscheinlichkeitsintegral (I zu Integral) zu berechnen.
Ich möchte Bilder kratzen und trainieren
Ich möchte ○○ mit Pandas machen
Ich möchte Yolos Anmerkung kopieren
Ich möchte mit Python debuggen
Ich habe versucht, den Ball zu bewegen
Ich habe versucht, den Abschnitt zu schätzen.
Ich möchte den Namen der ausgeführten Funktion / Methode erhalten
Ich möchte die Ausführungszeit aufzeichnen und ein Protokoll führen.
Ich möchte automatisch hochwertige Teile aus den von mir aufgenommenen Videos finden