[PYTHON] Erstellen Sie ein billiges Zusammenfassungssystem mit AWS-Komponenten

Inhalt dieses Artikels

--Erstellte ein Zusammenfassungssystem (Extraktionstyp) --Erstellen einer Betriebskonfiguration unter AWS

In diesem Artikel nicht vorgestellt


Bei der Arbeit wurde ich gefragt, ob ich ein Zusammenfassungssystem erstellen kann. Also habe ich versucht, es zu erstellen. Mein Arbeitsplatz betreibt eine Nachrichtenseite, und meine Motivation ist es, "eine Zusammenfassung in den veröffentlichten Nachrichten zu veröffentlichen".

Sicherlich enthält die Nachrichtenseite eines großen Zeitungsunternehmens auch eine dreizeilige Zusammenfassung, die für diejenigen, die keine Zeit haben, den vollständigen Artikel zu lesen, ein guter Inhalt ist.

Für Redakteure ist es am besten, ihre eigenen Zusammenfassungen zu schreiben, aber das Erstellen von Zusammenfassungen scheint eine besondere Fähigkeit zu sein (ich habe von den Redakteuren gehört).

Ich denke, in solchen Zeiten besteht Bedarf an einer automatischen Zusammenfassung.

Was ist eine automatische Zusammenfassung?

Es gibt zwei Haupttypen der automatischen Zusammenfassung.

Der erste ist __ Anweisungstyp __.

Dies ist ein Typ, bei dem der Algorithmus die Bedeutung des Eingabedokuments interpretiert und einen Text erstellt, der in __gutes Gefühl __ zusammengefasst ist (so dass er eine Tendenz ähnlich wie Trainingsdaten zeigen kann).

Seit Deep Learning populär geworden ist, hat es endlich ein praktisches Niveau erreicht.

Und der andere ist der __extrahierte __Typ.

Dieser Typ wählt N Texte (im Allgemeinen eine Texteinheit) aus, die die Bedeutung des gesamten Dokuments gut aus dem Eingabetext ausdrücken können.

Es gibt eine praktische Ebene von Algorithmen, noch bevor tiefes Lernen [^ 1]

Wenn Sie der Meinung sind, dass "automatische Zusammenfassung interessant ist", lesen Sie bitte auch diesen Artikel.

Dieses Mal werden wir den 2004er Algorithmus namens LexRank unter den Extraktionstypen verwenden.

Einfach ausgedrückt ist es ein Algorithmus der Idee, dass "ein Satz, in dem dasselbe Wort häufig vorkommt, sicherlich wichtig ist".

Qiita hat bisher auch Artikel mit interessanten Ideen veröffentlicht.

Diesmal sind die Zieldaten Nachrichtentext. Nachrichtentexte zeichnen sich aus durch "die verwendeten Wörter sind so einheitlich wie möglich" und "die logische Struktur des Satzes ist klar".

Aus diesem Grund ist es schwierig, Fehler in der morphologischen Unterteilung aufzutreten, und ich bin der Meinung, dass die Graphgewichtung von LexRank auch einfach zu verarbeiten ist __. Und mein Geist flüsterte: "Nun, das ist okay."

Deshalb habe ich diesmal die strenge Untersuchung übersprungen und sie zuerst umgesetzt. [^ 2]

Systemkonfiguration von AWS-Komponenten

Ich habe es so gemacht.

要約システム.png

Die Punkte sind wie folgt.

Die Rollenverteilung ist wie folgt.

Die Mindestgröße von RDS ist ausreichend. Die Kommunikation mit RDS erfolgt nur wenige Male am Tag, und es finden keine gleichzeitigen Verbindungen statt. Also habe ich "db.t3.micro" gewählt.

Mit dieser Konfiguration betragen die Betriebskosten etwa 2.000 Yen pro Monat. Darüber hinaus sind das meiste die Betriebskosten von RDS.

Was ist ECS Fargate?

Irgendwie kam es leicht heraus, aber Fargate ist ein Containerservice, der Docker verwendet. Computerkosten fallen nur dann an, wenn Sie dies möchten. Das Einrichten eines Stapeljobs ist ebenfalls sehr einfach.

Arbeitsablauf

Ich kann die Befehle aus verschiedenen Gründen nicht einführen, aber die Arbeitsbilder sind in dieser Reihenfolge.

  1. Auf dem lokalen Computer implementiert.
  2. Fügen Sie den implementierten Code in das Docker-Image ein. Erstellen Sie ein Docker-Image auf Ihrem lokalen Computer.
  3. Erstellen Sie einen ECS-Cluster in der AWS-Konsole.
  4. Erstellen Sie eine ECR (Docker-Repository) in der AWS-Konsole. Schieben Sie das lokale Docker-Image auf ECR.
  5. Definieren Sie die Aufgabe in ECS.
  6. Richten Sie die Aufgabenplanung in ECS ein.

Implementierung der Zusammenarbeit mit Wordpress

Ich habe ein Wordpress-API-Paket für Python. Verwenden Sie dieses (https://python-wordpress-xmlrpc.readthedocs.io/en/latest/).

Es gibt andere solche Dinge, also könnte diese in Ordnung gewesen sein.

Lexrank-Implementierung

Die Implementierung des japanischen Lexrank wird in Recruit Technologies Blog vorgestellt.

Da dies die Python 2-Version ist, habe ich die Implementierung von Python 3-Version verwendet.

Es gibt ein Lexrank-Paket, daher ist dies möglicherweise in Ordnung. Da dies jedoch die Voraussetzung ist, dass das Formularelement geteilt wird, wird es vorab mit Mecab usw. in Formularelemente unterteilt und durch Leerzeichen getrennt.


Deshalb habe ich mit LexRank ein Zusammenfassungssystem für Extraktionstypen eingeführt.

Wenn der vorliegende Text wie ein Nachrichtentext ist, denke ich, dass er ziemlich gut funktionieren wird.

Das Erstellen einer serverlosen Docker + -Konfiguration unter AWS ist ebenfalls einfacher geworden, sodass es anscheinend auch zum Erstellen eines Batch-Job-Systems verwendet werden kann.

[^ 1]: Die Frage "Wann hast du angefangen, tief zu lernen?" Scheint aufzutauchen, aber wenn es um die Verarbeitung natürlicher Sprache geht, geht es um 2015? Ich habe das Gefühl, dass die generierte automatische Zusammenfassung seit etwa 2017 besser wird __. Es fühlt sich an, als wäre der Encoder-Decoder mit RNN ein Durchbruch geworden. [^ 2]: Vorerst habe ich nur eine einfache Bewertung vorgenommen. Im Allgemeinen werden ROUGE-N und BLEU verwendet, um den Zusammenfassungsalgorithmus zu bewerten. Es ist jedoch ziemlich schwierig, Leute auf der Geschäftsseite dazu zu bringen, ROUGE-N und BLEU zu verstehen. Diesmal habe ich es ungefähr mit Genauigkeit gemacht. Es kann in Excel ausgedrückt werden. Genauigkeit = N (Dokumente mit Zusammenfassungen, die ich als OK beurteilt habe) / N (Anzahl der Eingabedokumente)

Recommended Posts

Erstellen Sie ein billiges Zusammenfassungssystem mit AWS-Komponenten
Erstellen Sie mit pulumi eine WardPress-Umgebung auf AWS
Erstellen Sie eine Deb-Datei mit Docker
[AWS] ECR mit AWS CDK erstellen
Erstellen Sie ein Empfehlungssystem mit Python
Erstellen Sie eine Webanwendung mit Django
Erstellen Sie mit Chalice eine flaschen- / flaschenähnliche Webanwendung auf AWS Lambda
[AWS / Tello] Aufbau eines Systems zum Betrieb von Drohnen in der Cloud
Erstellen Sie eine Tensorflow-Umgebung mit Raspberry Pi [2020]
Geben Sie eine signierte URL mit AWS SQS aus
Erstellen Sie mit Docker-Compose eine schnelle API-Umgebung
Erstellen Sie ein Sternensystem mit Blender 2.80-Skript
[Linux] Erstellen einer Jenkins-Umgebung mit Docker
Erstellen Sie mit pyenv eine virtuelle Umgebung für Python
Erstellen Sie mit Selenium eine Capture-Erfassungsmaschine
Erstellen Sie ein privates Repository mit AWS CodeArtifact
Erstellen Sie mit Neovim eine moderne Python-Umgebung
Erstellen Sie zusammen mit waf eine statische Bibliothek (.a)
[Linux] Aufbau einer Docker-Umgebung mit Amazon Linux 2
Erstellen Sie mit Jetson Nano + USB-Kamera + OpenCV + Scikit-Bild ein System zur Messung der Subpixelgenauigkeit
Erstellen Sie einen lokalen Server mit einem einzeiligen Befehl [Mac]
Erstellen Sie eine Entwicklungsumgebung für die C-Sprache mit einem Container
Versuchen Sie Tensorflow mit einer GPU-Instanz unter AWS
Erstellen Sie eine Python-Umgebung mit ansible auf centos6
[Python] Erstellen Sie mit Docker eine Django-Entwicklungsumgebung
Erstellen Sie mit Sublime Text3 eine Python3-Build-Umgebung
Erstellen Sie mit Vagrant in 5 Minuten eine Django-Umgebung
[AWS] Erstellen wir einen ECS-Cluster mit CDK
[Memo] Erstellen Sie eine virtuelle Umgebung mit Pyenv + anaconda
Erstellen Sie eine virtuelle Umgebung mit pyenv und venv
Erstellen Sie mit der Doker Toolbox eine Django-Entwicklungsumgebung
AWS-Schrittfunktionen zum Lernen anhand eines Beispiels
Erstellen einer Python-Umgebung mit OSX Elcapitan
Erstellen Sie mit IntelliJ schnell eine Python Django-Umgebung
Erstellen Sie eine Python-Umgebung für maschinelles Lernen mit Containern
Erstellen Sie eine Python-Ausführungsumgebung mit VS-Code
[AWS] Ich habe BOT mit LINE WORKS daran erinnert
Erstellen Sie HPC einfach auf AWS mit echtem AWS Cfn Cluster
# 2 Erstellen Sie eine Python-Umgebung mit einer EC2-Instanz von AWS (ubuntu18.04).
Erstellen Sie eine virtuelle Python-Umgebung mit virtualenv und virtualenvwrapper
Erstellen Sie mit pyenv-virtualenv eine Python-Umgebung für jedes Verzeichnis
Erstellen Sie mit Python eine Entwicklungsumgebung für maschinelles Lernen
Erstellen Sie eine virtuelle Python-Umgebung mit virtualenv und virtualenvwrapper
Erstellen Sie in Docker eine Ebene für AWS Lambda Python
Erstellen Sie AWS EC2 und RDS mit Terraform Terraform 3 Minuten Garzeit
Erstellen Sie eine Entwicklungsumgebung mit Poetry Django Docker Pycharm
Erstellen einer Django-Umgebung für Win10 (mit virtuellem Speicherplatz)
Erstellen einer numerischen Berechnungsumgebung mit pyenv und miniconda3