Meist greift man dabei auf eine Vielzahl verschiedener News-Streams zurück und versucht anschließend, diese zusammenzuführen und die wesentlichen, entscheidungsrelevanten Informationen manuell zu „destillieren“. Durch den hohen manuellen Anteil ist dieser Prozess jedoch zeit- und personalintensiv sowie hochrepetitiv. Dies gilt in noch höherem Maße für die manuelle Informationsverdichtung zum Beispiel auf die Ebene einzelner Akteure – dies ist notwendig, um Nachrichten im Zeitverlauf auswerten zu können.
Dank rasanter Fortschritte der modernen Computerlinguistik (Natural Language Processing, NLP) sowie der künstlichen Intelligenz (KI) ist es mittlerweile möglich, die Extraktion und Verdichtung von Informationen in hoher Qualität zu automatisieren.
Das Rückgrat einer solchen Analyse sind gigantische Deep-Learning-Sprachmodelle wie GPT-3, die Texte automatisch zusammenfassen, klassifizieren, übersetzen und sogar selbstständig generieren können. Ihnen liegt eine Transformer-Architektur zu Grunde, wodurch sie menschliche Denkweisen und Argumentationsmuster reproduzieren können. So können sie etwa mit den typischen Herausforderungen wie inkonsistenten Schreibweisen von Namen sowie kontextspezifischen Bedeutungen von Wörtern („Sitzbank“ vs. „Finanzinstitut Bank“) umgehen.
Stimmungsbewertung auf Organisationsebene
Transformer-Modelle unter Nutzung von Finanznachrichten finden daher in vielen Kontexten Anwendung: Im Research und Trading, beim Trend-Monitoring, als Informationsquelle für die Entwicklung von Anlagestrategien, zur Portfolio- und Risikoüberwachung oder für Marktanalysezwecke.
Im Trend-Monitoring kommt es zum Beispiel insbesondere sowohl auf eine verlässliche Stimmungsbewertung der Nachrichten als auch auf deren kontinuierliche Historisierung im Zeitverlauf an, um aktuelle Entwicklungen etwa im Vergleich unterschiedlicher Institutionen bewerten zu können. Durch den Einsatz von Transformer-Modellen können die Stimmungsbewertung sowie die Datenzusammenstellung und -aufbereitung nahezu vollständig automatisiert werden, während der Mensch seine Stärken bei der Trendinterpretation und gegebenenfalls der Ableitung von Maßnahmen ausspielen kann.
Finanznachrichten stehen auch bei Julius Bär, Schweizer Wealth-Management Gruppe, unternehmensintern in mehreren Sprachen zur Verfügung.
Beispielsätze mit negativem, neutralem und positivem Sentiment. Die Sentiment-Polarität wird dabei einzelnen Organisationen (ORG) zugeordnet, die mittels Named Entity Recognition (NER) identifiziert wurden.
Die Automatisierung der Stimmungserkennung auf Ebene einzelner Akteure (z.B. Organisationen) ist jedoch komplex. Denn es kommt häufig vor, dass innerhalb einer Nachricht mehrere Unternehmen erwähnt werden und das Sentiment zum Beispiel für eine Organisation positiv ist – und gleichzeitig negativ für einen anderen Akteur. Idealerweise wird also für jeden Nachrichtentext für jeden genannten Akteur eine aggregierte Stimmung als Scorewert ermittelt.
Vorgehensmodell: Teile & herrsche
Im Beispiel wurde eine aus mehreren Komponenten zusammengesetzte NLP-Pipeline implementiert. Die Grundidee bestand darin, die komplexe Gesamtaufgabe in Einzelschritte aufzuteilen, die so weit wie möglich von vorkonfigurierten open-source Komponenten gelöst und unabhängig voneinander optimiert werden können.
Phase 1: Vorverarbeitung der Texte
Sentence Tokenization: Nach dem Einlesen der Daten sowie rudimentärem Text Cleaning wurden die großen Textblöcke automatisch in einzelne Sätze gesplittet. Nach einem Toolvergleich konnten die besten Ergebnisse mit nltk.tokenize.sent_tokenize und der Spacy Satztokenisierung erzielt werden.
Machine Translation: Da die meisten open-source NLP-Modelle für die englische Sprache verfügbar sind, wurde die Implementierung der gesamten Pipeline auf englischsprachige Artikel ausgelegt. Anderssprachliche Artikel wurden maschinell mit der open-source library EasyNMT mit dem opus-mt Modell übersetzt – von der Quellsprache zur Zielsprache Englisch.
Phase 2: Extraktion der Stimmungen auf Einzelorganisationsebene
- Das weitere Vorgehen wurde in drei Aufgabenblöcke gegliedert:
- Satzweise Stimmungs-Klassifikation sowie Erkennung von Organisations-Entitäten
- Zuordnung von Stimmungen zu Organisationen
- Aggregation der Stimmungen auf Artikelebene sowie über die Zeit
Sentence Sentiment Classification: Zunächst wurde evaluiert, ob sich das vortrainierte Finanznachrichten-Sentiment-Modell ProsusAI/finBERT ohne weiteres Training für den vorliegenden Fall eignet. Eine manuelle Exploration der Klassifikationen hat gezeigt, dass dem nicht so ist.
Daher wurde ein eigener Finanznachrichten-Sentiment-Datensatz erstellt und annotiert. Der Zeitaufwand dafür wäre hoch: Selbst bei Rückgriff auf ein domänenspezifisches Modell wie finBERT, müssten mindestens 1.500 Dokumente mit den drei Sentiment-Klassen 0 (positiv), 1 (negativ), 2 (neutral) manuell annotiert werden.
Um den Aufwand zu reduzieren, erfolgte daher bereits früh eine sukzessive Implementierung und iterative Optimierung von Labeling-Funktionen mithilfe des open-source Repositories Snorkel4 (durch die Definition eines Sets an einzelnen „schwachen“ Regeln, die in Kombination (Ensemble) das Annotationslabel ergaben). Solche Labeling-Funktionen konnten dann ein Sentiment vorhersagen, wenn eine bestimmte Phrase im Dokument vorkam wie "facilitating" (positiv) oder "corruption" (negativ).
Parallel zum Labeling-Prozess wurde zusätzlich ein großes Lexikon an positiven und negativen Phrasen gesammelt, und die Wörter in verschiedene Beugungs- und Zeitformen überführt. Dabei hat die python Bibliothek LemmInflect geholfen.
Annotation von Sätzen mit Snorkel Labeling Funktionen (LF) am Beispiel: LF_1: Compound Polaritätsscore vom python VADER package; LF_2: Polaritätsscore der TextBlob Bibliothek; LF_3: Vorhergesagte Sentiment Klasse des ProsusAI/finBERT Modells; LF_4: Phrase Matches mit positiven Phrasen aus einem Custom Financial Sentiment Phrasen Lexikon.
ORG Entity Recognition: Im nächsten Schritt wurden nun die Organisationen identifiziert, die in den Nachrichtentexten vorkommen und auf die das jeweilige Sentiment bezogen war – daher wurde eine NER-Komponente in die NLP-Pipeline integriert.
Nach einigen Tests fiel die Wahl auf das python-Paket spacy – für die Finanzdomäne zeigte vor allem das Transformer-Modell spacy/en_core_web_trf eine überzeugende out-of-the-box-Leistung hinsichtlich der Extraktionsqualität von Organisationsentitäten.
Die übergeordnete NER-Qualität wurde mit dem NER-Evaluation-Repository von David Batista geprüft; die Qualität auf NER-tag-Ebene mit der python-Bibliothek sklearn_crfsuite. Auf NER-tag-Ebene wurden so sehr gute F1-Scores gemessen – zwischen 0,84 und 0,99 je nach tag.
Polarity Phrase Matching: Nun galt es, die satzweise erkannten Stimmungen einzelnen Organisationen zuzuordnen. Hierbei zahlte sich der frühe Annotationsansatz mit Snorkel (siehe Schritt 7) über Labeling-Funktionen aus: Dort war ein Lexikon mit 11.000 Finanznews-Sentimentphrasen gesammelt – somit war es möglich, für Sätze, in denen polaritätsgeladene Phrasen vorkommen, die linguistische Distanz der Organisationsnamen zu diesen Tokens zu bestimmen. Für Sätze mit mehreren Organisationsnamen wurden nur die Entitäten als „sentimentgeladen“ klassifiziert, die die kürzeste Distanz zu den Polaritätsphrasen aufwiesen.
Find Sentiment Entities: Für Sätze, die vom satzbezogenen Sentiment-Klassifikationsmodell als positiv oder negativ eingeordnet wurden, und die nur den Namen einer einzigen Organisation enthalten, wurde vereinfachend angenommen, dass die Stimmung auf diese Einzelentität bezogen war. Für polaritätsgeladene Sätze, in denen mehr als eine Entität erwähnt wurde, musste nun vorhergesagt werden, auf welche Organisation die Stimmung eines Satzes bezogen war.
Nach einigen Experimenten mit verschiedenen Ansätzen zahlte sich auch hier am Ende das reichhaltige Lexikon von Polaritätsphrasen aus, das während der Annotation von Sentiment-Sätzen als Labeling-Funktion genutzt und erweitert wurde. Die Definition einer Sentiment-Entität ergab sich dabei als die Entität, die die geringste syntaktische Distanz in einem Satz zu Polaritätsphrasen hatte.
Aggregation over Time: Nach der Aggregation der Sentiment-Scores pro Entität und pro Artikel erfolgte nun eine weitere Aggregation über die Zeit. Dazu wurden die Scores von mehreren Artikeln für ein vordefiniertes Zeitfenster, zum Beispiel drei Tage, summiert. Um die Validität der Scores zu prüfen, wurden die Artikel über den Zeitraum der Finanzkrise 2008 analysiert.
Für die aufgeführten Unternehmen wurde im September 2008 ein minimaler aggregierter Score beobachtet. Viele Nachrichten waren Artikel, die direkt oder indirekt im Zusammenhang mit der Lehmankrise standen. Auf diesen Tiefpunkt des aggregierten Nachrichtensentiments folgte im Laufe des Jahres 2010 eine Umkehr des aggregierten Sentiments hin zu neutralen oder sogar positiven Werten.
Die Minima der aggregierten Sentiment Kurve ließen sich eindeutig auf unternehmensbezogene Ereignisse zurückführen, die auch über externe Nachrichtenquellen validiert wurden. Exemplarisch wurden für die Minima der Zeitreihen folgende Artikel veröffentlicht:
- 20.11.2008: „JP Morgan will 3000 Jobs streichen“;
- 15.12.2008: „Europäische Banken massiv von Milliarden-Betrug betroffen“ (über die HSBC);
- 19.02.2008 „Credit Suisse tiefer als erwartet in Finanzkrise verstrickt“.
Diese externe Validierung wurde für sämtliche Minima durchgeführt und zeigt klar, dass die Stimmungskurven das Finanzmarkt-Sentiment widerspiegeln. Wenn man ausgewählte Entitäten jeweils über einen längeren Zeitraum (anhand der Frequenz der Nennungen) in einer Heatmap visualisiert, lassen sich auf einen Blick das Sentiment von mehreren Unternehmen parallel verfolgen.
Um die Ende-Zu-Ende-Vorhersagequalität abschätzen zu können, wurde eine Stichprobe von über 500 Nachrichtenartikeln gezogen und jede Entität sowie dessen Sentiment annotiert. Für diese Entitäten ergab sich eine sehr gute Ende-Zu-Ende Genauigkeit (accuracy) von über 86 Prozent.
Fazit & Ausblick
Aggregiertes Sentiment für verschiedene Organisationen während der Lehman-Krise 2008 und der anschließenden wirtschaftlichen Erholung.
Die Besonderheit des vorliegenden Ansatzes lag in der sicheren, dokumentübergreifenden Zuodnung der Stimmungen auf die jeweils betroffenen Organisationen. Hierfür existierte bisher keine fertige Standardlösung.
Während der individuellen Entwicklung erwies sich die Zerlegung der komplexen NLP-Aufgabe in kleinere Subaufgaben als entscheidend für den Projekterfolg. Die effiziente Trainingsdatenannotation ermöglichte zum einen eine schnelle Modelloptimierung. Zum anderen konnten so in kurzer Zeit über 11.000 Polaritätsphrasen identifiziert werden, die sich später auch für die Bestimmung der organisationsbezogenen Stimmungen anhand der syntaktischen Distanz einsetzen ließen.
Obwohl die Erkennungsqualität – wie gezeigt – insgesamt bereits als sehr gut bewertet werden konnte, sind weitere Verbesserungen durch detailliertere Modellierungen einzelner Teilaufgaben möglich: Zum einen etwa durch eine höhere Erkennungsrate abweichender Schreibweisen von Organisationen; zum anderen durch eine noch treffsicherere Zuordnung erkannter Stimmungen zu den betreffenden Organisationen.
Darüber hinaus eröffnen Funktionserweiterungen weitere Anwendungsmöglichkeiten: So ist zum Beispiel die zusätzliche Anbindung & Integration weiterer Quellen (etwa von Webanbietern von Finanznachrichten) in die bestehende Lösung problemlos möglich. Damit wäre ein tagesaktuelles News Sentiment Dashboard umsetzbar – inklusive grafischer Auswertungsmöglichkeiten über die Sentiment-Entwicklung im historischen Zeitverlauf und einer umfassenden Freitext-Suchfunktion, etwa nach bestimmten Schlüsselereignissen oder nach Organisationen.
Autoren: Christoph Hiemenz ist Senior Data Scientist & NLP-Experte bei der Positive Thinking Company
Christian Jauch leitet das Julius Bär interne Data Science FinTech 'Target Insights'
Janick Rohrbach ist Data Scientist im Team 'Target Insights' bei Julius Bär
Peter Neckel ist AI-Pionier, Buchautor und Leader Customer Analytics bei der Positive Thinking Company