Copie de capture générée automatiquement [Python]

Aperçu

Utilisez Mecab de Python pour générer des «phrases similaires» à partir de diverses données d'enseignants

référence

Utilisez MeCab de Python 3 https://qiita.com/taroc/items/b9afd914432da08dafc8

J'ai essayé de générer automatiquement des phrases de type XX en utilisant la chaîne de Markov https://www.pc-koubou.jp/magazine/4238

J'ai essayé de générer automatiquement un article de blog en utilisant la chaîne de Markov https://karaage.hatenadiary.jp/entry/2016/01/27/073000

La source

main.py


file = 'Données des enseignants/Kenshi YONEZU.txt'
roopCnt = 5
size = 2

learnText.createText(file, roopCnt, size)

learnText.py


def load_from_file(files_pattern):
    '''
Lit les fichiers qui correspondent au modèle de fichier spécifié, les fusionne, les prépare pour l'analyse, puis les renvoie.
    '''

    #Lire le texte
    text = ""
    for path in iglob(files_pattern):
        with open(path, 'r') as f:
            text += f.read().strip()

    #Supprimer certains symboles
    unwanted_chars = ['\r', '\u3000', '-', '|']
    for uc in unwanted_chars:
        text = text.replace(uc, '')

    #Suppression de la notation de la bibliothèque du ciel bleu
    unwanted_patterns = [re.compile(r'《.*》'), re.compile(r'[#.*]')]
    for up in unwanted_patterns:
        text = re.sub(up, '', text)

    return text


def split_for_markovify(text):
    '''
Divisez le texte en phrases avec des pauses et divisez les phrases en mots avec des espaces
    '''
    #Utilisez mecab pour séparer les mots
    mecab = MeCab.Tagger()
    splitted_text = ""

    #Ces caractères peuvent casser le markovify
    # https://github.com/jsvine/markovify/issues/84
    breaking_chars = [
        '(',
        ')',
        '[',
        ']',
        '"',
        "'",
    ]

    #Divisez le texte entier en phrases avec des pauses et divisez la phrase en mots avec des espaces
    for line in text.split():
        mp = mecab.parseToNode(line)
        while mp:
            try:
                if mp.surface not in breaking_chars:
                    splitted_text += mp.surface    #Ignorer si le nœud est markovify
                if mp.surface != '。' and mp.surface != '、':
                    splitted_text += ' '    #Diviser les mots avec des espaces
                if mp.surface == '。':
                    splitted_text += '\n'    #Réexpression par saut de ligne
            except UnicodeDecodeError as e:
                print(line)
            finally:
                mp = mp.next

    return splitted_text


def createText(file, roopCnt, size = 3):
    '''
Générez automatiquement des documents à partir des données des enseignants

    Parameters
    ----------
    String : file
Chemin des données de l'enseignant
    String : roopCnt
Nombre de générations
    String : size
Combien de mots bloquent

    Returns
    -------
    List
Liste des documents générés
    '''

    #Lecture de texte de l'enseignant
    rampo_text = load_from_file(file)

    #Divisez le texte dans un format apprenable
    splitted_text = split_for_markovify(rampo_text)

    #Apprenez le modèle à partir du texte.
    text_model = markovify.NewlineText(splitted_text, state_size = size)

    textList = []
    while len(textList) < roopCnt:
        time.sleep(5)
        #Générer à partir du modèle
        sentence = text_model.make_sentence()

        if(len(sentence) <= 50):
            text = ''.join(sentence.split())
            textList.append(text)
            print(text)
            continue

        while len(sentence) >= 50 :
            index = sentence.find(' ', 50)

            sliceText = sentence[:index]
            text = ''.join(sliceText.split())
            sentence = sentence[index:]

            print(text)
            textList.append(text)

Exemple de génération

De type roman

Natsume Soseki-like

Remplissez le trou du quatrième mur et récupérez la pierre noire. Après de nombreuses répétitions, je n'ai jamais été satisfait. Je suis un homme qui est peu susceptible de ramper dans la frontière absolue, alors soyez-en conscient tout de suite. "Quelle est l'âme Yamato, ou je n'ai pas avoué. En fonction de la réponse, je ne la jetterai pas.

Comme Ango Sakaguchi

En tant que condition, il est facile de tuer Utsumi et de tuer l'infirmière Moroi ou de suivre l'infirmière Moroi. Quand il est apparu dans le hall, il avait un bol à thé cassé. De cette façon, le meurtre de Chigusa était facilement terminé, et les criminels frappaient tous les deux la balle pour parier tous les jours et dormaient tous les jours. N'y a-t-il pas un exercice? »Le fait que le Dr Giant connaissait également le lecteur Avant que j'aie fini de m'essuyer le visage, la voix claire et pulpeuse de la femme n'était consciente que du jeu de grande envergure suivant. Quand la réponse est sortie, la femme de chambre est venue après moi, et quand je suis revenue, je pouvais la voir ici.

Capture de propriété semblable à une copie

Comme Naka-ku, Nagoya

C'est un 1LDK avec un verrouillage automatique pour la tranquillité d'esprit. Il y a aussi une école primaire pour les gourmands. A 5 minutes à pied de Sakae, un poêle à deux bouches idéal pour les gourmands ♪ L'appartement est à côté du parc, Populaire Nishiki 1 à distance de marche du joli poêle à deux bouches et de Sakae à proximité 1LDK à l'étage inférieur.

On dirait Higashi-ku, Nagoya

Il y a deux installations scolaires, un interphone TV et le réchauffage. C'est une ville avec un cadre de vie. Appartement Internet gratuit! C'est une propriété unique en son genre pour ceux qui ont beaucoup de types de cuisines système et qui ont une cuisine de comptoir de haute qualité et qui déplacent la ligne Sakuradori seule.

Comme les paroles

Comme Genshi Yonezu

Même au loin, je dois me souvenir de ce qui s'est passé la prochaine fois Je suis toujours triste et je me souviens de la destination de la recherche de la jalousie. Tous ceux qui sont pleins d'erreurs s'y sont habitués, y a-t-il deux personnes? Non, non, je suis désolé pour quelque temps 4. Je vous remercie pour chaque appel, alors ne dormez même pas un peu. C'est pourquoi je n'irai pas à des dizaines de milliers! Le seul produit qui soit silencieux pour le corps est doux mais clair dans le sens que je veux vous parler Dites-nous que vous ne devriez pas penser que nous le ferons même si vous l'avez gardé

B'z-ish

Si vous pouvez rester fort, ne laissez pas la rumeur que vous ne manquez pas Je n'ai pas besoin d'être formé car mes ongles sont tellement brûlés que je peux le vérifier moi-même Je ne le regrette pas et je n'ai plus besoin de toi Fixons la date à laquelle tu coules. Tu pleurais, tu restais sauvage et en larmes Je suis un étudiant transféré, on me propose toujours une porte Push!Yeah!Crush!Yeah!Weve got you come true Every time I gotta go Des paysages qui se mélangent, j'ai peur, mais j'ai toujours envie de revenir en arrière

Aimyon-ish

De plus, les joues de l'autre cœur blanc et doux de Mashimaro «Rien n’avale un rêve, c’est une ombre qui saigne en bleu. Broyez ce que vous n'avez pas choisi et montrez vos écouteurs L'amour est toujours votre diplôme d'études secondaires Bien sûr, au moins, ferme ton amour-Lock-on "J'ai l'impression d'être ici maintenant Je ne pense pas que ce soit un enfant séduisant, mais quelque part en dessous, c'est ridicule. Je vais y réfléchir, je vais refroidir mon corps et aller heureux, donc au pire ça ira mieux

Comme Nishino Kana

Ce n'est pas comme ça avant que tout le monde ne puisse arrêter les filles juste Je ne sais pas qui, mais je vais certainement le protéger, donc je vais me connecter, je peux enfin vous rencontrer. Merci pour votre travail acharné maintenant! nana c'est un adieu, je me sens toujours agité Je ne sais pas comment je déteste ça de toute façonJe ne sais pas quand j'aime çaJe ne t'entends pas rire Même si je ne pouvais pas le rencontrer, l'enfant était debout

Je voulais générer un nom de technique de dessin animé ...

Bleach | Art et chant http://ort.yh.land.to/bleach/chantp.html Je l'ai essayé, mais de nombreux mots n'étaient pas enregistrés dans le dictionnaire et une erreur de génération a été générée. Est-il difficile de faire des bandes dessinées avec des mots fréquemment inventés dans les séries SF?

Recommended Posts

Copie de capture générée automatiquement [Python]
Exécuter automatiquement le fichier python
Catch Ctrl-C en Python
Formater automatiquement le code Python avec Vim
Créer automatiquement la documentation Python avec Sphinx
[Python] Analyse du XML généré aléatoirement [ElementTree]