[PYTHON] Génération automatique de Sadamasashi Kawayanagi

Cet article a été publié le 7ème jour du Calendrier de l'Avent IT avec le thème ** "Sadamasashi x IT" **.

Les 450 chansons chantées par Masashi Sada sont analysées morphologiquement pour recueillir des paroles en 5 et 7 tons. Si vous les combinez, vous aurez un programme qui chante ** Sadamasashi Kawayanagi **.

Résultat de la génération automatique de Sadamasashi Kawayanagi

――Inarizushi, pas adroit, l'amour est bon ――Ah, je ne peux pas atteindre l'amour qui passe

Algorithme de génération

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

Outil de génération d'URL de 450 paroles de chansons

lyric.py


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

# uta-Une colonne URL de la chanson de M. Masashi Sada sur le net
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):
    """
Paroles
    """
    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

#Perspective de la page de liste de chansons
lyrics = []
for url in urls:
    lyrics += generate_lyrics(url)

#Sortie URL
for lyric in lyrics:
    print lyric.url

Sadamasashi Kawayanagi outil de génération de 100000 phrases

# -*- 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):
    """
Nombre de caractères lors de la lecture de katakana à partir d'un fichier:Couper et retourner ne compte que

Exemple)
    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):
                #Réinitialiser si vide
                if 'Vide' in token.part_of_speech:
                    _tmp = []
    
                # _Seules la nomenclature, les adjectifs et les verbes commencent par tmp
                if len(_tmp) == 0:
                    if 'Verbe auxiliaire' in token.part_of_speech:
                        continue
    
                    if 'suffixe' in token.part_of_speech:
                        continue
    
                    if 'Non indépendant' in token.part_of_speech:
                        continue
    
                    if 'nombre' in token.part_of_speech:
                        continue
    
                    if 'nom' in token.part_of_speech or 'adjectif' in token.part_of_speech or 'verbe' in token.part_of_speech:
                        pass
                    else:
                        continue

                _tmp.append(token)
                #Lire en lisant 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:
                    #réinitialiser
                    _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)

Problème non résolu: impossible de trier par bon ordre Kawayanagi

À la suite de la génération de 100 000 phrases de Kawayanagi, par exemple, une grande quantité de Kawayanagi ridicules tels que «Parler, devenez soupe miso, je suis heureux» et «Kusafue est le calendrier» de vos yeux a été généré. Il peut être facilement identifié par les humains, mais lorsqu'il s'agit de clarifier une définition concrète et bonne de Kawayanagi, c'est un problème difficile car il est difficile de le verbaliser.

J'ai demandé à un ami diplômé de la Faculté de littérature anglaise

J'ai consulté une personne détaillée. Quand j'ai montré une phrase à un ami de la Faculté de littérature anglaise, on m'a fait remarquer qu'il y avait de nombreuses phrases pour lesquelles la dépendance n'était pas établie. En tant que tâche future, il semble que nous puissions développer un filtre qui extrait de meilleures phrases en effectuant une analyse de dépendance et en notant s'il est établi ou non.

Qu'est-ce que le bon Sadamasashi Kawayanagi?

Il est rare qu'une personne soit capable de distinguer correctement le haïku et le Kawayanagi. Il n'y a pas de temps pour lister les histoires de rire qui ont été saluées comme ** "C'est un bon Kawayanagi" **. Cette fois, j'ai réfléchi à la logique d'extraction du bon Sadamasashi Kawayanagi en référence au haïku moderne, qui a une longue histoire et est à l'étude.

Le professeur Takeo Kuwahara, un érudit littéraire français, publié dans le numéro de novembre 1946 de la revue Iwanami Shoten "World" ** "Second Art-About Contemporary Haiku-" ** Il a fait valoir qu'il devrait être distingué de l'art et a causé beaucoup de controverse sur le podium à cette époque (deuxième controverse sur l'art). D'un point de vue humain du côté du podium, un érudit français a rejeté le fait que le haïku était moins artistique que les autres arts, mais le célèbre poète de l'époque ne pouvait pas bien argumenter, et il ne pouvait pas rivaliser avec le savant. C'est une histoire qui a jeté.

Kuwahara a répondu à la question ** "Qu'est-ce que l'art?" ** "Qu'est-ce qui impressionne le cœur humain. Et l'art est significatif de penser profondément." **. Il déclare également que ** l'art n'a pas de sens à moins que "l'expérience de l'auteur ne soit reproduite dans le spectateur" **. En d'autres termes, c'est une impression partagée. J'ai pensé qu'il était indispensable de partager l'impression entre l'auteur et le spectateur pour un bon Sadamasashi Kawayanagi. Après avoir lu, j'ai extrait les phrases qui me font penser à la scène. En revanche, les phrases qui ne sont qu'une liste de mots sont exclues.

Une phrase qui a été exclue car ce n'était qu'une liste de mots

――Je suis vivant, douloureux, les dents de ver sont du kirarin ――Voir, demander et visiter l'herbe de Kasumi

à la fin

On dit que la chanson de M. Sadamasashi touche le cœur pour une raison quelconque. L'une des raisons pour lesquelles il est aimé par les gens depuis 40 ans est qu'il est excellent dans la méthode de partage des impressions en faisant penser au spectateur la scène au cœur du spectateur qui a écouté la chanson en raison de son excellente expression. Ça pourrait être.

Enfin, je vais joindre 100 000 phrases de Sadamasashi Kawayanagi. Je voudrais laisser la modélisation et la programmation de la logique pour extraire le bon Kawayanagi aux chercheurs suivants.

Si vous tweetez la phrase que vous aimez, ce sera utile et utile à l'avenir. Merci pour votre attention aujourd'hui.

Recommended Posts

Génération automatique de Sadamasashi Kawayanagi
Génération automatique de mosaïques
Génération automatique de modèles de collage
Génération automatique de quiz avec COTOHA
Mise à jour automatique du module Python
Génération automatique du code de test PyCharm
[Jouons avec Python] Viser la génération automatique de phrases ~ Achèvement de la génération automatique de phrases ~