[PYTHON] Automatische Erzeugung von Sadamasashi Kawayanagi

Dieser Artikel wurde am 7. Tag des IT-Adventskalenders mit dem Thema ** "Sadamasashi x IT" ** veröffentlicht.

Die 450 von Masashi Sada gesungenen Songs werden morphologisch analysiert, um Texte in 5 und 7 Tönen zu sammeln. Wenn Sie sie kombinieren, haben Sie ein Programm, das ** Sadamasashi Kawayanagi ** singt.

Sadamasashi Kawayanagis Ergebnis der automatischen Generierung

――Inarizushi, nicht geschickt, Liebe ist gut »Ah, ich kann die vorbeiziehende Liebe nicht erreichen

Generierungsalgorithmus

スクリーンショット 2015-12-04 17.51.48.png

450 Songtexte URL-Generierungs-Tool

lyric.py


# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals
from bs4 import BeautifulSoup
import requests

# uta-Eine Spalten-URL des Songs von Mr. Masashi Sada im Internet
urls = [
    'http://www.uta-net.com/artist/1399/0/1/',
    'http://www.uta-net.com/artist/1399/0/2/',
    'http://www.uta-net.com/artist/1399/0/3/',
]


class LyricSheet(object):
    """
Text
    """
    def __init__(self, title, song_id):
        self.title = title
        self.song_id = song_id

    def __repr__(self):
        return str(self.song_id) + ':' + self.title

    @property
    def url(self):
        _base = 'http://www.uta-net.com/user/phplib/svg/showkasi.php?ID={}'
        return _base.format(str(self.song_id))

    def write_file(self):
        with open("./data/main.txt", 'a') as text:
            response = requests.get(self.url)
            assert response.status_code == 200
            text.write(response.text)


def generate_lyrics(url):
    response = requests.get(url)
    assert response.status_code == 200
    soup = BeautifulSoup(response.text)
    songs = []

    for td in soup.tbody.find_all("td"):
        if td.a:
            _url = td.a['href']
            if 'song' in _url:
                _song_id = _url.replace('/', '').replace('song', '')
                songs.append(LyricSheet(td.a.text, _song_id))
    return songs

#Perspektive der Songlistenseite
lyrics = []
for url in urls:
    lyrics += generate_lyrics(url)

#URL-Ausgabe
for lyric in lyrics:
    print lyric.url

Sadamasashi Kawayanagi Werkzeug zur Generierung von 100.000 Phrasen

# -*- coding: utf-8 -*-
from __future__ import absolute_import, unicode_literals
from bs4 import BeautifulSoup
from janome.tokenizer import Tokenizer
import random


def cut_word(count):
    """
Anzahl der Zeichen beim Lesen von Katakana aus einer Datei:Schneiden und zurückgeben nur zählen

Beispiel)
    input - 5
    output - ["a-I-U-E-O", "Kakikukeko", "Sasis Seso"]
    """
    _tmp = []
    result = []
    path = './data/main.txt'
    f = open(path, "r")
    
    for body in f:
        soup = BeautifulSoup(body)
        for t in soup.find_all('text'):
            if t is None:
                continue
    
            for token in tokenizer.tokenize(t.text):
                #Zurücksetzen, wenn leer
                if 'Leer' in token.part_of_speech:
                    _tmp = []
    
                # _Nur Nomenklatur, Adjektive und Verben beginnen mit tmp
                if len(_tmp) == 0:
                    if 'Hilfsverb' in token.part_of_speech:
                        continue
    
                    if 'Suffix' in token.part_of_speech:
                        continue
    
                    if 'Nicht unabhängig' in token.part_of_speech:
                        continue
    
                    if 'Nummer' in token.part_of_speech:
                        continue
    
                    if 'Substantiv' in token.part_of_speech or 'Adjektiv' in token.part_of_speech or 'Verb' in token.part_of_speech:
                        pass
                    else:
                        continue

                _tmp.append(token)
                #Lesen beim Lesen von Katakana
                reading = ''.join([_token.reading for _token in _tmp])
                if len(reading) == count:
                    s = ''.join([_token.surface for _token in _tmp])
                    if '¥' not in s:
                        # debug
                        # result.append(s + '    :' + ''.join([_.surface + _.part_of_speech for _ in _tmp]))
                        result.append(s)
                    _tmp = []
                elif len(reading) > count:
                    #zurücksetzen
                    _tmp = []
        f.close()
        return result

tokenizer = Tokenizer()

word_seven = cut_word(7)
word_five = cut_word(5)

for x in xrange(100000):
    print random.choice(word_five), random.choice(word_seven), random.choice(word_five)

print len(word_five), len(word_seven)

Ungelöstes Problem: Kann nicht nach guter Kawayanagi-Reihenfolge sortieren

Als Ergebnis der Generierung von 100.000 Kawayanagi-Phrasen wurde beispielsweise eine große Menge dummer Kawayanagi wie "Sprechen, Miso-Suppe werden, ich bin glücklich" und "Kusafue ist dein Augenkalender" generiert. Es kann vom Menschen leicht identifiziert werden, aber wenn es darum geht, eine konkrete und gute Definition von Kawayanagi zu klären, ist es ein schwieriges Problem, weil es schwierig ist, es zu verbalisieren.

Ich fragte einen Freund, der an der Fakultät für Englische Literatur studiert hatte

Ich habe mich mit einer detaillierten Person beraten. Als ich einem Freund der Fakultät für Englische Literatur einen Satz zeigte, wurde darauf hingewiesen, dass es viele Sätze gab, für die die Abhängigkeit nicht festgestellt wurde. Als zukünftige Aufgabe scheint es, dass wir einen Filter entwickeln können, der bessere Phrasen extrahiert, indem wir eine Abhängigkeitsanalyse durchführen und bewerten, ob er eingerichtet ist oder nicht.

Was ist guter Sadamasashi Kawayanagi?

Nur wenige Menschen können richtig zwischen Haiku und Kawayanagi unterscheiden. Es ist keine Zeit, die Lachgeschichten aufzulisten, die als ** "Es ist ein guter Kawayanagi" ** gelobt wurden. Dieses Mal dachte ich über die Extraktionslogik des guten Sadamasashi Kawayanagi in Bezug auf das moderne Haiku nach, das eine lange Geschichte hat und untersucht wird.

Der französische Literaturwissenschaftler Takeo Kuwahara veröffentlichte in der Novemberausgabe 1946 von Iwanami Shotens Magazin "World" ** "Zweite Kunst über zeitgenössisches Haiku" ** In seiner Dissertation wurde Haiku als "zweite Kunst" bezeichnet. Er argumentierte, dass es von der Kunst unterschieden werden sollte und verursachte damals auf dem Podium große Kontroversen (zweite Kunstkontroverse). Aus menschlicher Sicht auf dem Podium wies ein französischer Gelehrter zurück, dass Haiku weniger künstlerisch als andere Künste sei, aber der berühmte Dichter zu dieser Zeit konnte nicht gut argumentieren und er konnte nicht mit dem Gelehrten konkurrieren. Es ist eine Geschichte, die geworfen hat.

Kuwahara antwortete auf die Frage ** "Was ist Kunst?" ** "Was beeindruckt das menschliche Herz. Und Kunst ist sinnvoll, um tief zu denken." **. Es heißt auch, dass ** Kunst bedeutungslos ist, es sei denn, "die Erfahrung des Autors wird im Betrachter reproduziert" **. Mit anderen Worten, es ist ein gemeinsamer Eindruck. Ich fand es unabdingbar, Eindrücke zwischen dem Autor und dem Betrachter für den guten Sadamasashi Kawayanagi auszutauschen. Nach dem Lesen extrahierte ich die Sätze, die mich an die Szene denken lassen. Auf der anderen Seite werden Phrasen, die nur eine Liste von Wörtern sind, ausgeschlossen.

Eine Phrase, die ausgeschlossen wurde, weil es sich nur um eine Liste von Wörtern handelte

――Alive, schmerzhafte Wurmzähne sind Kirarin »Sehen Sie, fragen Sie und besuchen Sie Kasumi Gras

schließlich

Es wird gesagt, dass Mr. Sadamasashis Lied aus irgendeinem Grund die Herzen berührt. Einer der Gründe, warum es seit 40 Jahren von den Menschen geliebt wird, ist, dass es sich hervorragend dazu eignet, Eindrücke auszutauschen, indem es die Zuschauer, die das Lied gehört haben, an seinen hervorragenden Ausdruck erinnert. es könnte sein.

Schließlich werde ich 100.000 Sätze Sadamasashi Kawayanagi anhängen. Ich möchte die Modellierung und Programmierung der Logik überlassen, um den nachfolgenden Forschern gutes Kawayanagi zu entlocken.

Wenn Sie den gewünschten Satz twittern, wird er in Zukunft hilfreich und hilfreich sein. Vielen Dank für Ihre Aufmerksamkeit heute.

Recommended Posts

Automatische Erzeugung von Sadamasashi Kawayanagi
Automatische Mosaikerzeugung
Automatische Generierung von Collagenvorlagen
Automatische Quizgenerierung mit COTOHA
Automatisches Update des Python-Moduls
Automatische Generierung des PyCharm-Testcodes
[Lass uns mit Python spielen] Ziel ist die automatische Satzgenerierung ~ Abschluss der automatischen Satzgenerierung ~