[PYTHON] Créez un système de synthèse bon marché avec des composants AWS

Contenu de cet article

--Création d'un système de synthèse (type d'extraction) --Construire une configuration opérationnelle sur AWS

Non présenté dans cet article

--Contenu de l'algorithme de résumé


Au travail, on m'a demandé "Puis-je créer un système de synthèse?", Alors j'ai essayé de le construire. Mon lieu de travail gère un site d'actualités et ma motivation est de «publier un résumé dans les actualités publiées».

Certes, le site d'actualités d'une grande entreprise de presse a également un résumé en trois lignes, ce qui est un bon contenu pour ceux qui n'ont pas le temps de lire l'article en entier.

Il est préférable que les éditeurs rédigent leurs propres résumés, mais la création de résumés semble être une compétence particulière (j'ai entendu parler des éditeurs).

Je pense qu'il y a une demande de récapitulation automatique à de tels moments.

Alors, qu'est-ce que la synthèse automatique?

Il existe deux principaux types de récapitulation automatique.

Le premier est __ type de génération d'instruction __.

Il s'agit d'un type dans lequel l'algorithme interprète la signification du document d'entrée et crée un texte résumé en __good feeling __ (afin qu'il puisse montrer une tendance similaire aux données d'apprentissage).

Depuis que l'apprentissage profond est devenu populaire, il a enfin atteint un niveau pratique.

Et l'autre est le __type __ extrait.

Ce type sélectionne N textes (généralement une unité de texte) qui peuvent bien exprimer la signification de l'ensemble du document à partir du texte d'entrée.

Il existe un niveau d'algorithme pratique avant même l'apprentissage en profondeur [^ 1]

Si vous pensez que "la synthèse automatique est intéressante", veuillez également consulter cet article.

Cette fois, nous utiliserons l'algorithme de 2004 appelé LexRank parmi les types d'extraction.

Pour le dire clairement, il s'agit d'un algorithme de l'idée qu '"une phrase dans laquelle le même mot apparaît fréquemment est sûrement importante".

Qiita a également publié des articles avec des idées intéressantes jusqu'à présent.

Cette fois, les données cibles sont du texte d'actualité. Les textes d'actualité sont caractérisés par "les mots utilisés sont aussi unifiés que possible" et "la structure logique de la phrase est claire".

Pour cette raison, il est difficile que des erreurs de division morphologique se produisent, et je pense que la pondération graphique de LexRank est également facile à travailler __. Et mon fantôme a chuchoté: "Eh bien, ça va."

C'est pourquoi cette fois, j'ai sauté l'enquête rigoureuse et l'ai mise en œuvre en premier. [^ 2]

Configuration système des composants AWS

Je l'ai fait comme ça.

要約システム.png

Les points sont les suivants.

La répartition des rôles est la suivante.

La taille minimale du RDS est suffisante. La communication avec RDS n'a lieu que quelques fois par jour et les connexions simultanées ne se produisent pas. J'ai donc choisi db.t3.micro.

Avec cette configuration, le coût d'exploitation est d'environ 2 000 yens par mois. De plus, la majeure partie est le coût de fonctionnement de RDS.

Qu'est-ce que ECS Fargate?

D'une manière ou d'une autre, il est sorti légèrement, mais Fargate est un service de conteneur qui utilise Docker. Les frais informatiques ne sont engagés que lorsque vous le souhaitez. La configuration d'un travail par lots est également très simple.

Procédure de travail

Je ne peux pas introduire les commandes pour diverses raisons, mais les images de travail sont dans cet ordre.

  1. Implémenté sur la machine locale.
  2. Placez le code implémenté dans l'image Docker. Créez une image Docker sur votre ordinateur local.
  3. Créez un cluster ECS dans la console AWS.
  4. Créez un ECR (référentiel Docker) dans la console AWS. Poussez l'image Docker locale vers ECR.
  5. Définissez la tâche dans ECS.
  6. Configurez la planification des tâches dans ECS.

Mise en œuvre de la coopération avec Wordpress

J'ai un package d'API Wordpress pour Python, alors utilisez ceci (https://python-wordpress-xmlrpc.readthedocs.io/en/latest/).

Il y a d'autres ce genre de chose, donc celui-ci aurait pu convenir.

Implémentation Lexrank

La mise en œuvre de Japanese Lexrank est présentée dans Blog Recruit Technologies.

Puisqu'il s'agit de la version Python 2, j'ai utilisé l'implémentation de la version Python 3.

Il existe un Package Lexrank, donc cela peut convenir. Cependant, puisque c'est une prémisse que l'élément de formulaire est divisé, il est divisé en éléments de formulaire à l'avance avec Mecab etc. et séparés par un espace.


J'ai donc introduit un système de synthèse de type d'extraction utilisant LexRank.

Si le texte en question est comme un texte d'actualité, je pense qu'il fonctionnera assez bien.

La création d'une configuration sans serveur Docker + sur AWS est également devenue plus facile, il semble donc qu'elle puisse également être utilisée pour créer un système de travail par lots.

[^ 1]: La question "Quand avez-vous commencé le Deep Learning?" Semble se poser, mais quand il s'agit de traitement du langage naturel, c'est vers 2015? J'ai le sentiment que le résumé automatique généré s'est amélioré depuis environ 2017 __. On a l'impression que l'encodeur-décodeur utilisant RNN est devenu une percée. [^ 2]: Pour le moment, je n'ai fait qu'une simple évaluation. Généralement, ROUGE-N et BLEU sont utilisés pour évaluer l'algorithme de synthèse. Cependant, il est assez difficile d'amener les gens du côté des entreprises à comprendre ROUGE-N et BLEU. Cette fois, je l'ai fait à peu près avec Accuracy. Il peut être exprimé dans Excel. ʻAccuracy = N (document avec résumé que j'ai jugé OK) / N (nombre de documents d'entrée) `

Recommended Posts

Créez un système de synthèse bon marché avec des composants AWS
Créez un environnement WardPress sur AWS avec Pulumi
Créer un fichier deb avec Docker
[AWS] Construire ECR avec AWS CDK
Créer un système de recommandation avec python
Créer une application Web avec Django
Créer une application Web de type Flask / Bottle sur AWS Lambda avec Chalice
[AWS / Tello] Construction d'un système d'exploitation de drones sur le cloud
Créer un environnement Tensorflow avec Raspberry Pi [2020]
Émettre une URL signée avec AWS SQS
Créez un environnement d'API rapide avec docker-compose
Créez un système stellaire avec le script Blender 2.80
[Linux] Créer un environnement Jenkins avec Docker
Créez un environnement virtuel pour python avec pyenv
Construisez une machine d'acquisition de capture avec Selenium
Créer un référentiel privé avec AWS CodeArtifact
Créez un environnement Python moderne avec Neovim
Construire une bibliothèque statique (.a) avec waf
[Linux] Construction de l'environnement Docker avec Amazon Linux 2
Construisez un système de mesure de précision sous-pixel avec Jetson Nano + caméra USB + OpenCV + Scikit-image
Créer un serveur local avec une commande sur une seule ligne [Mac]
Créer un environnement de développement de langage C avec un conteneur
Essayez Tensorflow avec une instance GPU sur AWS
Créez un environnement python avec ansible sur centos6
[Python] Créer un environnement de développement Django avec Docker
Créer un environnement de construction python3 avec Sublime Text3
Créez un environnement Django avec Vagrant en 5 minutes
[AWS] Construisons un cluster ECS avec CDK
[Memo] Créez un environnement virtuel avec Pyenv + anaconda
Créez un environnement virtuel avec pyenv et venv
Créer un environnement de développement Django à l'aide de Doker Toolbox
AWS Step Functions pour apprendre avec un exemple
Construire un environnement Python avec OSX Elcapitan
Créez rapidement un environnement Python Django avec IntelliJ
Créer un environnement d'apprentissage automatique Python avec des conteneurs
Créer un environnement d'exécution python avec VS Code
[AWS] J'ai essayé de créer un environnement Python avec un environnement de développement eb [Elastic Beanstalk]
[AWS] J'ai créé un BOT de rappel avec LINE WORKS
Créez facilement du HPC sur AWS avec un cluster AWS Cfn authentique
# 2 Créez un environnement Python avec une instance EC2 d'AWS (ubuntu18.04)
Créez un environnement virtuel python avec virtualenv et virtualenvwrapper
Créez un environnement python pour chaque répertoire avec pyenv-virtualenv
Créer un environnement de développement d'applications d'apprentissage automatique avec Python
Créez un environnement virtuel python avec virtualenv et virtualenvwrapper
Créer une couche pour AWS Lambda Python dans Docker
Construisez AWS EC2 et RDS avec Terraform Terraform 3 minutes de cuisson
Créez un environnement de développement avec Poetry Django Docker Pycharm
Construire un environnement Django pour Win10 (avec espace virtuel)
Construire un environnement de calcul numérique avec pyenv et miniconda3