--Erstellte ein Zusammenfassungssystem (Extraktionstyp) --Erstellen einer Betriebskonfiguration unter AWS
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.
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]
Ich habe es so gemacht.
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.
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.
Ich kann die Befehle aus verschiedenen Gründen nicht einführen, aber die Arbeitsbilder sind in dieser Reihenfolge.
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.
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