Texte inhaltlich verstehen – auch ohne künstliche Intelligenz?

In den letzten Monaten sind immer mehr Anwendungen auf Basis von künstlicher Intelligenz entwickelt und veröffentlicht worden. Neuronale Netze, die Deep-Learning ermöglichen, sind auf dem Vormarsch und stellen einen Megatrend dar, der von fast allen Technologie-Unternehmen aufgegriffen wird. Lassen sich diese Technologien für die Erstellung einer Zusammenfassung von Texten nutzen?

Convolutional Neural Networks (CNNs) zum Beispiel machen es möglich, Bildinhalte zu erkennen und diese als Tags oder beschreibende Texte auszugeben. clarifai ist ein Dienst, der diese Idee zum Produkt gemacht hat: mittels einer API lassen sich Bilder und bald auch Videos inhaltlich erfassen.

Facebook ist aktuell dabei, eine künstliche Intelligenz namens DeepText zu schaffen, um die Inhalte von User-Posts zu interpretieren und daraufhin mit dem User zu interagieren. Wenn man versteht, was ein User mit einem Post meint, in welcher Gefühlslage er sich befindet oder was ihn zu diesem Post motiviert hat, lassen sich viele neue Funktionen zur Steigerung des User-Experience darstellen.

Text-Summary ohne neuronale Netze

Doch was lässt sich auf herkömmlichen Wege (ohne künstliche Intelligenz, neuronale Netze und Deep-Learning) umsetzen, um einen Text inhaltlich zu verstehen? Worum geht es in einem Text und was sind die Kernaussagen?

Nach der Übernahme von Summly durch Yahoo und Wavii durch Google im Jahr 2013 hat die automatische Textzusammenfassung einen richtigen Hype erlebt. Nachdem der Algorithmus offen gelegt wurde und somit das Geheimnis gelüftet war, sind viele Dienste aus dem Boden gestampft worden, die automatisch die wichtigsten Aussagen eines Text herausfiltern und so viele Summary-Tools wie die Online-Variante smmry oder das Word-Plugin GetDigest zum Herunterladen entstanden.

GetDigest

This online-demo would give a brief explanation of what GetDigest can do for you. Paste any text into the left-hand field and get a summary text on the right-hand field (quite long text is obviously recommended):

Auf welchen Grundideen und Algorithmen bauen diese Auto-Summary-Dienste auf?

TextRank als einfache Methode der automatischen Zusammenfassung

Shlomi Babluki hat auf seinem Blog „The Tokenizer“ im Detail beschrieben, wie die damaligen Algorithmen aufgebaut waren, mit denen eine automatische Zusammenfassung von Artikeln möglich war. Für dieses Verfahren ist keine aufwendige Datenbank-Lösung mit einer langwierigen Trainingsphase notwendig, sondern man kommt allein mit ein wenig Statistik aus. Diese Methode der Text-Zusammenfassung ist auch unter dem Begriff TextRank (siehe Wiki-Artikel zu „automatic summarization“) bekannt.

Die Idee dabei ist ganz einfach: Die einzelnen Sätze des Textes werden jeweils miteinander verglichen und untereinander gewichtet: je mehr Worte in einem Satz vorhanden sind, die auch in anderen Sätzen benutzt werden, desto wichtiger ist dieser Satz. Somit ergibt sich eine Rangliste der wichtigsten Sätze. Um daraus jetzt noch eine sinnvolle Zusammenfassung zu bekommen, wird der Text in unterschiedliche Absätze unterteilt und der jeweils wichtigste Satz ausgewählt. So erhält man ein Summary, dessen Länge abhängig von der Anzahl der Absätze bzw. Paragraphen und der ausgewählten Sätze ist.

Alternativ zu der Einteilung des gesamten Textes in einzelne Abschnitte (was nicht immer einfach funktioniert), lässt sich ein relativer Schwellenwert für die Wichtigkeit der Sätze festlegen und nur die Sätze für die Zusammenfassung auswählen, die über dieser Schwelle liegen. Nach diesem Prinzip lässt sich die Länge des Auto-Summary ebenfalls sinnvoll und einfach beeinflussen.

Wie lässt sich dieser TextRank Algorithmus verbessern?

Wenn man ein wenig über den Algorithmus nachdenkt, fallen einem sofort einige Punkte auf, die verbessert werden könnten:

  1. Es gibt Worte, die in den meisten Texten vorkommen und somit keine Relevanz für den Inhalt eines einzelnen Textes haben, z.B. Artikel (der, die, das) oder Modalverben (muss, soll, darf, …). Diese Worte sollten vorab herausgefiltert werden, um das Ergebnis der Zusammenfassung nicht negativ zu beeinflussen. Dazu lässt sich für eine schnelle Umsetzung einen Blacklist anlegen, in der all die nicht relevanten Worte enthalten sind.
  2. Es werden keine Wortgruppen (mit demselben Wortstamm) als solche identifiziert und als ein Wort im Algorithmus verwendet. Z.B. sollte nicht zwischen Singular und Plural unterschieden werden (Netz, Netze).
  3. Zusätzlich ist es wichtig Themen oder Namen, die aus mehreren Worten bestehen, als eine Wortgruppe zu betrachten (neuronales Netz, künstliche Intelligenz, Demis Hassabis, …)
  4. Verwandte Wort, Abkürzungen oder Synonyme sollten ebenfalls identifiziert und als eine Wortgruppe gesehen werden. Z.B. sollte CNN zu der Wortgruppe „Convolutional Neural Network“ gehören.

Die Liste könnte man noch weiter ausbauen – mit jedem neuen Punkt wird die Umsetzung jedoch deutlich komplexer. Dabei kommt man ohne eine Datenbank kaum mehr aus. Auf diesen Aspekt möchte ich im Folgenden eingehen und die Vorteile der Nutzung einer Datenbank darstellen.

Datenbank zur Optimierung der automatischen Text-Zusammenfassung

Irgendwann reicht es nicht mehr aus, basierend auf allein einem Text eine ideale Zusammenfassung zu generieren. Wir schauen uns jetzt mal an, wie die oben beschrieben Verbesserungsansätze mithilfe einer Datenbank gelöst werden können.

Die Idee bei der Verwendung einer Datenbank ist, dass eine Vielzahl von Texten genutzt werden können, um statistische Auswertungen machen zu können.

Wie findet man für den Inhalt nicht relevante Worte?

Nehmen wir an, wir haben 1.000 inhaltlich unabhängige Texte analysiert und in unserer Datenbank hinterlegt. Wenn ein Wort in fast jedem der Texte vorkommt, können wir sicher sein, dass dieses Wort kaum Relevanz für die Zusammenfassung unseres Textes hat. Somit brauchen wir lediglich eine DB-Tabelle für die Texte, die wir analysieren und eine DB-Tabelle für alle Wörter, die wir in den Texten finden. Mit einem einfachen Befehl lässt sich im Nachhinein die Quote berechnen, in wieviel Prozent der Texte das jeweilige Wort vorkommt – diesen Wert gilt es nur noch in der Wort-Tabelle abzuspeichern, anschließend lässt sich mit einem Befehl eine Blacklist abrufen, die z.B. auf den Schwellenwert 90% basiert.

Somit ist die erste Frage beantwortet – die Umsetzung ist relativ schnell gemacht.

Wie erkennt man den richtigen Wortstamm eines Wortes?

Um nicht unnötig die Singular- und Pluralform eines Wortes separat zu betrachten, gilt es den Wortstamm zu bestimmen. Diese Aufgabe ist leider nicht ganz so einfach. Denn man muss Regeln definieren, mit denen sich ein Algorithmus schreiben lässt, der diese Aufgabe erfüllt. Und das Dumme ist, das die Regeln für jede Sprache anders sind 🙁

Für die englische Sprache gibt es ein bewehrtes Lösung, der Porter-Stemmer-Algorithmus. Dieser lässt sich für jede Sprache anpassen, so dass man relativ schnell eine Lösung für die deutsche Sprache erhält. Einen fertigen Porter-Stemmer-Algo in deutsch findet man auf der Website snowballstem.org.

Und wie kann hier eine Datenbank helfen? Idealerweise lässt sich eine Methode entwickeln, die ohne händische Regeln auskommt und somit anhand von vielen Texten automatisch Wörter ihren Wortstämmen zuordnet. Dann müsste man nicht für jede Sprache Anpassungen vornehmen müssen. Dafür muss man den Inhalt eines Textes und jedes einzelnen Wortes verstehen. Das ist ein spannendes Forschungsgebiet, an dem aktuell intensiv gearbeitet wird. Die Lösung für unser Problem ist daher nicht ganz so einfach.

Wie identifiziert man zusammenhängende Worte?

„Deep Learning“ oder „neuronale Netze“ müssen jeweils als ein Wort bzw. Thema erkannt und sollten nicht als jeweils 2 unterschiedliche Worte bearbeitet werden. Dies ist ein schönes Beispiel für die Macht der großen Datenmengen, dem sogenannten Big Data. Wenn genug Texte über künstliche Intelligenz in der Datenbank gespeichert sind, lässt sich zum Bespiel zählen, wie oft „Deep Learning“ als Wortpaar im Vergleich zu dem Wort „Deep“ als einzelnes Wort vorkommt. Ist der Quotient aus beiden Summen nahe 1, sollte man eher das Wortpaar zur Auswertung nutzen – ist der Quotient nahe bei Null, sollte jedes Wort separat betrachtet werden.

Wie ermittelt man verwandte Wörter?

Jetzt wird es spannend: Wie findet man heraus, das Deep Learning etwas mit Neuronalen Netzen zu tun hat? Nur wenn man eine solche Verbindung kennt, lässt sich ein Text mit ganz wenigen korrekten Schlagworten beschreiben. Und wenn man diese wenigen wichtigen Schlagworte kennt, lassen sich die wirklich wichtigen Sätze eines langen Textes herausfiltern.

Und auch hier kommen die Möglichkeiten von Big Data zur Geltung. Nehmen wir an, wir haben nicht nur ein Tausend Texte in der Datenbank, sondern eine Million. Was man nun machen kann, ist die Verbindung zweier Worte zu bestimmen. Dazu lassen sich folgende Werte berechnen:

  • In wie vielen Texten kommen beide Worte („Deep Learning“ und „Neuronale Netze“) vor?
  • Wie oft kommt das Wort „Deep Learning“ in den Texten vor?
  • Wie oft kommt das Wort „Neuronale Netze“ in den Texten vor?

Wenn aus den Werten hervor geht, dass die beiden Begriffe sehr oft gemeinsam in einem Text benutzt und nur selten der eine ohne den anderen verwendet werden, dann ist das ein Indiz dafür, dass die beiden Begriffe sehr stark mit einander verwandt sind.

Durch diese Verbindung kann man nach dem oben beschriebenen Algorithmus auch Sätze als wichtig identifizieren, die zwar Worte bzw. Begriffe beinhalten, die nicht allzu oft im Text vorkommen, jedoch im Zusammenhang (bei Betrachtung der Verwandten Worte) wichtige Inhalte im Satz enthalten sind.

Ergebnisse der Text-Zusammenfassung inkl. Big Data Analyse

Hier würde ich jetzt gerne zeigen, welche Ergebnisse eine solche Umsetzung liefert. Leider sind das bis dato nur Ideen, die in einer Demo erst umgesetzt werden müssen. Wenn jemand die Ideen gerne aufgreifen und selbst ein kleines Summary Tool entwickeln möchte, freue ich mich auf einen kleinen Kommentar mit dem Hinweis auf die Ergebnisse.

Auto-Summary mittels Neuronalen Netzen und Deep Learning

Wie zu Beginn dieses Artikels erwähnt, ist Facebook mit DeepText aktuell bemüht, die Posts seiner User inhaltlich mittels künstlicher Intelligenz zu verstehen. Auf die Ergebnisse können wir gespannt sein.

Abschließend stellt sich die Frage, wie weit die Forschung generell bei der Text-Zusammenfassung mittels künstlicher Intelligenz ist. Hier einige Veröffentlichungen zu diesem spannenden Thema:

Kommentar verfassen

%d Bloggern gefällt das: