Zusammenfassung von Text: AnsÀtze, Algorithmen, Empfehlungen und Perspektiven

Jeder von uns ist jeden Tag mit einem riesigen Informationsfluss konfrontiert. Wir mĂŒssen oft viele umfangreiche Texte (Artikel, Dokumente) in einer begrenzten Zeit studieren. Im Bereich des maschinellen Lernens wurde daher natĂŒrlich die Aufgabe geboren, automatisch Textanmerkungen zu generieren.



In unserem Unternehmen arbeiten wir aktiv an der automatischen Abstraktion von Dokumenten. Dieser Artikel enthielt nicht alle Details und den Code, sondern beschrieb die wichtigsten AnsĂ€tze und Ergebnisse am Beispiel eines neutralen Datensatzes: 30.000 Fußball-Sportnachrichten, die ĂŒber das Sport-Express-Informationsportal gesammelt wurden.







Zusammenfassung kann also als die automatische Erstellung einer Zusammenfassung (Titel, Zusammenfassung, Anmerkung) des Originaltextes definiert werden. Es gibt zwei signifikant unterschiedliche AnsĂ€tze fĂŒr dieses Problem: extraktiv und abstrakt.



Extraktive Zusammenfassung



Der extraktive Ansatz besteht darin, die "wichtigsten" Informationsblöcke aus dem Quelltext zu extrahieren. Ein Block kann aus einzelnen AbsĂ€tzen, SĂ€tzen oder SchlĂŒsselwörtern bestehen.







Die Methoden dieses Ansatzes sind durch das Vorhandensein einer Bewertungsfunktion fĂŒr die Bedeutung des Informationsblocks gekennzeichnet. Indem wir diese Blöcke in der Reihenfolge ihrer Wichtigkeit einordnen und eine zuvor festgelegte Anzahl von ihnen auswĂ€hlen, bilden wir die endgĂŒltige Zusammenfassung des Textes.



Kommen wir zur Beschreibung einiger extraktiver AnsÀtze.



Extraktive Summierung basierend auf dem Auftreten gebrÀuchlicher Wörter



Dieser Algorithmus ist sehr einfach zu verstehen und weiter zu implementieren. Hier arbeiten wir nur mit Quellcode, und im Großen und Ganzen mĂŒssen wir kein Extraktionsmodell trainieren. In meinem Fall reprĂ€sentieren die abgerufenen Informationsblöcke bestimmte TextsĂ€tze.



Im ersten Schritt zerlegen wir den Eingabetext in SĂ€tze und teilen jeden Satz in Token (separate Wörter) auf, fĂŒhren eine Lemmatisierung fĂŒr sie durch (bringen das Wort in die "kanonische" Form). Dieser Schritt ist erforderlich, damit der Algorithmus Wörter kombiniert, deren Bedeutung identisch ist, deren Wortform sich jedoch unterscheidet.



Dann setzen wir die Ähnlichkeitsfunktion fĂŒr jedes Satzpaar. Sie wird als VerhĂ€ltnis der Anzahl der in beiden SĂ€tzen vorkommenden gemeinsamen Wörter zu ihrer GesamtlĂ€nge berechnet... Als Ergebnis erhalten wir die Ähnlichkeitskoeffizienten fĂŒr jedes Satzpaar.



Nachdem wir zuvor SÀtze eliminiert haben, die keine gemeinsamen Wörter mit anderen haben, erstellen wir ein Diagramm, in dem die Eckpunkte die SÀtze selbst sind, deren Kanten das Vorhandensein gemeinsamer Wörter in ihnen anzeigen.







Als nÀchstes ordnen wir alle VorschlÀge nach ihrer Wichtigkeit.







Wenn Sie mehrere SĂ€tze mit den höchsten Koeffizienten auswĂ€hlen und sie dann nach der Anzahl ihrer Vorkommen im Text sortieren, erhalten Sie die endgĂŒltige Zusammenfassung.



Extraktive Summierung basierend auf trainierten Vektordarstellungen



Zuvor gesammelte Volltextnachrichtendaten wurden verwendet, um den nÀchsten Algorithmus zu erstellen.



Wir teilen die Wörter in allen Texten in Token auf und kombinieren sie zu einer Liste. Insgesamt enthielten die Texte 2.270.778 Wörter, von denen 114.247 einzigartig waren.







Unter Verwendung des beliebten Word2Vec-Modells finden wir die Vektordarstellung fĂŒr jedes einzelne Wort. Das Modell weist jedem Wort zufĂ€llige Vektoren zu und korrigiert dann bei jedem Lernschritt „Studieren des Kontexts“ ihre Werte. Die Dimension des Vektors, der sich an das Merkmal des Wortes "erinnern" kann, können Sie beliebig einstellen. Basierend auf dem Volumen des verfĂŒgbaren Datensatzes nehmen wir Vektoren, die aus 100 Zahlen bestehen. Ich stelle auch fest, dass Word2Vec ein retrainierbares Modell ist, mit dem Sie neue Daten an die Eingabe senden und auf ihrer Grundlage die vorhandenen Vektordarstellungen von Wörtern korrigieren können.



Um die QualitĂ€t des Modells zu beurteilen, verwenden wir die T-SNE-Methode zur Reduzierung der DimensionalitĂ€t, mit der iterativ eine Vektorabbildung fĂŒr 1000 am hĂ€ufigsten verwendete Wörter in einem zweidimensionalen Raum erstellt wird. Das resultierende Diagramm stellt die Position von Punkten dar, von denen jeder einem bestimmten Wort so entspricht, dass Wörter mit Ă€hnlicher Bedeutung nahe beieinander liegen und im Gegenteil unterschiedliche. Auf der linken Seite des Diagramms befinden sich die Namen der Fußballvereine, und die Punkte in der unteren linken Ecke stehen fĂŒr die Vor- und Nachnamen der Fußballspieler und -trainer:







Nachdem Sie die trainierten Vektordarstellungen von Wörtern erhalten haben, können Sie mit dem Algorithmus selbst fortfahren. Wie im vorherigen Fall haben wir bei der Eingabe einen Text, den wir in SĂ€tze aufteilen. Durch Tokenisieren jedes Satzes erstellen wir Vektordarstellungen fĂŒr sie. Dazu nehmen wir das VerhĂ€ltnis der Summe der Vektoren fĂŒr jedes Wort im Satz zur LĂ€nge des Satzes. Zuvor trainierte Wortvektoren helfen uns hier. Wenn das Wörterbuch kein Wort enthĂ€lt, wird dem aktuellen Satzvektor ein Nullvektor hinzugefĂŒgt. Somit neutralisieren wir den Einfluss des Auftretens eines neuen Wortes, das nicht im Wörterbuch enthalten ist, auf den allgemeinen Vektor des Satzes.



Als nĂ€chstes erstellen wir eine SatzĂ€hnlichkeitsmatrix, die die KosinusĂ€hnlichkeitsformel fĂŒr jedes Satzpaar verwendet.







In der letzten Phase erstellen wir basierend auf der Ähnlichkeitsmatrix auch ein Diagramm und fĂŒhren eine Rangfolge der SĂ€tze nach Wichtigkeit durch. Wie im vorherigen Algorithmus erhalten wir eine Liste der sortierten SĂ€tze nach ihrer Bedeutung im Text.







Am Ende werde ich die Hauptstufen der Algorithmusimplementierung schematisch darstellen und noch einmal beschreiben (fĂŒr den ersten extraktiven Algorithmus ist die Reihenfolge der Aktionen genau dieselbe, außer dass wir keine Vektordarstellungen von Wörtern finden mĂŒssen und die Ähnlichkeitsfunktion fĂŒr jedes Satzpaar basierend auf dem Erscheinungsbild von common berechnet wird Wörter):







  • Teilen Sie den Eingabetext in separate SĂ€tze auf und verarbeiten Sie diese.
  • Suchen Sie nach einer Vektordarstellung fĂŒr jeden Satz.
  • Berechnen und Speichern der Ähnlichkeit zwischen Satzvektoren in einer Matrix.
  • Transformation der resultierenden Matrix in ein Diagramm mit SĂ€tzen in Form von Eckpunkten und ÄhnlichkeitsschĂ€tzungen in Form von Kanten zur Berechnung des Satzrangs.
  • Auswahl der VorschlĂ€ge mit der höchsten Punktzahl fĂŒr den endgĂŒltigen Lebenslauf.


Vergleich von extraktiven Algorithmen



Unter Verwendung des Flask-Mikroframeworks (ein Tool zum Erstellen minimalistischer Webanwendungen ) wurde ein Testwebdienst entwickelt, um die Ausgabe von Extraktionsmodellen am Beispiel einer Vielzahl von Quellnachrichtentexten visuell zu vergleichen. Ich analysierte die von beiden Modellen generierte Zusammenfassung (extrahierte die 2 wichtigsten SĂ€tze) fĂŒr 100 verschiedene Sportnachrichtenartikel.







Basierend auf den Ergebnissen des Vergleichs der Ergebnisse der Ermittlung der relevantesten Angebote beider Modelle kann ich die folgenden Empfehlungen fĂŒr die Verwendung der Algorithmen geben:



  1. . , . , .
  2. . , , , . , , , .


Abstrakte Zusammenfassung



Der abstrakte Ansatz unterscheidet sich erheblich von seinem VorgÀnger und besteht darin, eine Zusammenfassung mit der Erstellung eines neuen Textes zu erstellen, wodurch das primÀre Dokument sinnvoll zusammengefasst wird.







Die Hauptidee dieses Ansatzes besteht darin, dass das Modell eine vollstÀndig eindeutige Zusammenfassung erstellen kann, die möglicherweise Wörter enthÀlt, die nicht im Originaltext enthalten sind. Modellinferenz ist eine NacherzÀhlung des Textes, die nÀher an der manuellen Zusammenstellung einer Zusammenfassung des Textes durch Personen liegt.



Lernphase



Ich werde nicht auf die mathematische Rechtfertigung des Algorithmus eingehen, alle mir bekannten Modelle basieren auf der "Encoder-Decoder" -Architektur, die wiederum aus wiederkehrenden LSTM-Schichten aufgebaut ist (das Prinzip ihrer Arbeit finden Sie hier ). Ich werde kurz die Schritte zum Decodieren der Testsequenz beschreiben.







  1. Wir codieren die gesamte Eingabesequenz und initialisieren den Decoder mit den internen ZustÀnden des Codierers
  2. Übergeben Sie das "Start" -Token als Eingabe an den Decoder
  3. Wir starten den Decoder mit den internen ZustĂ€nden des Codierers fĂŒr einen Zeitschritt, als Ergebnis erhalten wir die Wahrscheinlichkeit des nĂ€chsten Wortes (Wort mit der maximalen Wahrscheinlichkeit).
  4. Übergeben Sie das ausgewĂ€hlte Wort beim nĂ€chsten Zeitschritt als Eingabe an den Decoder und aktualisieren Sie die internen ZustĂ€nde
  5. Wiederholen Sie die Schritte 3 und 4, bis Sie das "End" -Token generieren


Weitere Details zur "Encoder-Decoder" -Architektur finden Sie hier .



Abstrakte Zusammenfassung implementieren



Um ein komplexeres abstraktes Modell zum Extrahieren von zusammenfassenden Inhalten zu erstellen, sind sowohl vollstĂ€ndige Nachrichtentexte als auch deren Überschriften erforderlich. Die Überschrift der Nachrichten dient als Zusammenfassung, da sich das Modell an lange Textsequenzen „nicht gut erinnert“.



Beim Bereinigen von Daten verwenden wir KleinbuchstabenĂŒbersetzungen und verwerfen nicht russischsprachige Zeichen. Die Lemmatisierung von Wörtern, das Entfernen von PrĂ€positionen, Partikeln und anderen nicht informativen Teilen der Sprache wirkt sich negativ auf die endgĂŒltige Ausgabe des Modells aus, da die Beziehung zwischen Wörtern in einem Satz verloren geht.







Als nÀchstes teilen wir die Texte und ihre Titel in Trainings- und Testbeispiele im VerhÀltnis 9 zu 1 auf, wonach wir sie (zufÀllig) in Vektoren umwandeln.



Im nĂ€chsten Schritt erstellen wir das Modell selbst, das die Vektoren der ĂŒbertragenen Wörter liest und ihre Verarbeitung unter Verwendung von 3 wiederkehrenden Schichten des LSTM-Codierers und 1 Schicht des Decodierers durchfĂŒhrt.

Nach der Initialisierung des Modells trainieren wir es mit einer Cross-Entropy-Loss-Funktion, die die Diskrepanz zwischen dem tatsÀchlichen Zieltitel und dem von unserem Modell vorhergesagten Titel anzeigt.







Schließlich geben wir das Modellergebnis fĂŒr den Trainingssatz aus. Wie Sie in den Beispielen sehen können, enthalten die Ausgangstexte und Zusammenfassungen Ungenauigkeiten, da seltene Wörter vor dem Erstellen des Modells verworfen wurden (wir verwerfen sie, um das Lernen zu vereinfachen).







Die Modellausgabe in dieser Phase lĂ€sst zu wĂŒnschen ĂŒbrig. Das Modell „erinnert sich erfolgreich an einige Namen von Vereinen und Spielern“, hat aber den Kontext selbst praktisch nicht erfasst.



Trotz des moderneren Ansatzes zur Wiederaufnahme der Extraktion ist dieser Algorithmus den zuvor erstellten Extraktionsmodellen immer noch sehr unterlegen. Um die QualitĂ€t des Modells zu verbessern, ist es zwar möglich, das Modell auf einem grĂ¶ĂŸeren Datensatz zu trainieren. Um jedoch eine wirklich gute Modellausgabe zu erzielen, ist es meiner Meinung nach erforderlich, die Architektur der verwendeten neuronalen Netze zu Ă€ndern oder möglicherweise vollstĂ€ndig zu Ă€ndern.



Welcher Ansatz ist also besser?



Zusammenfassend werde ich die wichtigsten Vor- und Nachteile der ĂŒberprĂŒften AnsĂ€tze zum Extrahieren einer Zusammenfassung auflisten:



1. Extraktiver Ansatz:



Vorteile:



  1. Das Wesen des Algorithmus ist intuitiv
  2. Relativ einfache Implementierung


Nachteile:



  • Die QualitĂ€t von Inhalten kann in vielen FĂ€llen schlechter sein als die von Menschen handgeschriebenen Inhalte


2. Abstrakter Ansatz:



Vorteile:



  • Ein gut implementierter Algorithmus kann ein Ergebnis erzielen, das dem manuellen Schreiben von LebenslĂ€ufen am nĂ€chsten kommt


Nachteile:



  • Schwierigkeiten bei der Wahrnehmung der wichtigsten theoretischen Ideen des Algorithmus
  • Hohe Arbeitskosten bei der Implementierung des Algorithmus


Es gibt keine eindeutige Antwort auf die Frage, welcher Ansatz den endgĂŒltigen Lebenslauf am besten bildet. Es hĂ€ngt alles von der spezifischen Aufgabe und den Zielen des Benutzers ab. Beispielsweise ist ein Extraktionsalgorithmus höchstwahrscheinlich besser geeignet, um den Inhalt mehrseitiger Dokumente zu generieren, wobei das Extrahieren relevanter SĂ€tze tatsĂ€chlich die Idee eines großen Textes korrekt vermitteln kann.



Meiner Meinung nach gehört die Zukunft abstrakten Algorithmen. Trotz der Tatsache, dass sie derzeit schlecht entwickelt sind und bei einer bestimmten AusgabequalitĂ€t nur zur Erstellung kleiner Zusammenfassungen (1-2 SĂ€tze) verwendet werden können, lohnt es sich, einen Durchbruch bei neuronalen Netzwerkmethoden zu erwarten. In Zukunft sind sie in der Lage, Inhalte fĂŒr absolut jede TextgrĂ¶ĂŸe zu erstellen, und vor allem wird der Inhalt selbst der manuellen Erstellung eines Lebenslaufs durch einen Experten auf einem bestimmten Gebiet so nahe wie möglich kommen.



Veklenko Vlad, Systemanalyst,

Codex-Konsortium



All Articles