Topic Modeling auf einen Blick

Mit einem Machine-Learning-Verfahren namens Topic Modeling können große Mengen an Textdaten automatisch auf ihre Inhalte analysiert und kategorisiert werden. Ein großer Vorteil des Topic Modeling ist, dass keine Trainingsdaten dafür erforderlich sind.

Die Funktionsweise auf einen Blick:

    • Aufgrund von Wort-Kookkurrenzen werden zunächst alle Wörter der Textsammlung in eine vom Nutzer bestimmte Anzahl von Themenbereichen kategorisiert.
      • Die Themenbereiche sind Listen von Wörtern, die häufig im selben Zusammenhang erscheinen.
      • Mit der Anzahl der Kategorien stellt der Anwender die semantische Spezifizität der Themenbereiche ein.
        • Je größer die Anzahl, desto spezifischer die Themen
    • Aufgrund der Wörter des Dokuments wird bestimmt, welche Themenbereiche im Dokument wie häufig vorkommen.
      • Jedes Dokument erhält also einen Prävalenzwert für jedes Thema.
    • Jedes Dokument kann nach seinem prävalentesten Thema klassifiziert werden.
    • Aufgrund der Prävalenzwerte für alle Dokumente wird gerankt, welche Themen korpusweit am häufigsten vorkommen.

Top Topics: Ein Beispiel aus einem Topic Model über Texte einer Belletristiksammlung aus dem 19. Jahrhundert. Im Diagramm werden die korpusweit prävalentesten Themen gerankt. Für jedes Thema sind die 10 am stärksten korrelierenden Wörter aufgelistet.

 

Topic Modeling gibt schnell und einfach einen strukturellen Überblick über die Inhalte Ihrer Textdaten: 

  • Würden Sie gerne wissen, worüber Ihre Kunden Ihnen E-Mails schreiben? Ein Topic Model kann Ihnen die Hauptthemen der Kundenkommunikation bemessen und visualisieren.
  • Interessieren Sie sich für die Inhalte von Social-Media-Postings, die mit Ihrer Firma oder Ihrer Branche zu tun haben?
  • Jede Art von textuellen Daten kann mit Topic Modeling inspiziert werden.

Den Überblick perspektivieren: Dokumentenmetadaten berücksichtigen

  • Indem jedes Dokument des Korpus mit Metadaten versehen wird, kann die Auswirkung dieser Metadaten auf die Prävalenz der Themen analysiert werden.
    • Wie wirkt sich der Metadatenwert auf die Prävalenz der Themen aus?
    • Welche Themen sind bei Metadatenwert X prävalent, bei Wert Y aber unwichtig?
    • Wie entwickelt sich die Prävalenz eines Themas im Lauf der Zeit?
  • Es sind keine Grenzen gesetzt, was für Metadaten mit den Dokumenten assoziiert werden können:
    • Bei offenen Umfrageantworten könnte Themen-Prävalenz nach Befragtengeschlecht inspiziert werden.
    • Bei Pressemitteilungen von Firmen könnten Themenprävalenzen je nach Zeit des Jahres verglichen werden.
    • Bei Kundenkommunikation könnte pro Altersgruppe die häufigsten Themen dargestellt werden. 

Auswirkung des Autorengeschlechts auf Topic Prevalance: eine Korrelation von Themen-Prävalenz und Autorengeschlecht aus einer Belletristiksammlung

 

Fazit:

Je umfangreicher die Textdaten, desto schwieriger ist es, manuell der Inhalte Herr zu werden. Mit einem Topic Model erhalten Sie einen automatisierten Überblick über die Schlüsselthemen Ihrer Dokumente, und können zudem diesen Überblick perspektivieren, um die Auswirkung von Dokumentenmetadaten auf Themen-Prävalenz zu analysieren.

 

Die obigen Abbildungen entstammen einem Topic Model aus dem R Package ’stm‘:

Margaret E. Roberts, Brandon M. Stewart and Dustin Tingley (2018). stm: R Package for Structural Topic Models. URL http://www.structuraltopicmodel.com

 

Social Media Analyse – Wie viele Unternehmen folgen mir auf Twitter?

Obwohl Soziale Netze für Menschen gemacht wurden, finden sich dort heute auch ziemlich viele Unternehmen. Diese nutzen die Sozialen Netzwerke hauptsächlich, um Information über ihr Unternehmen zu verteilen und Werbung zu machen. Leider lässt sich nicht immer feststellen, ob ein Profil zu einem Unternehmen oder eine Person gehört. Gerade auf Twitter wird kein Unterschied zwischen einem Unternehmensprofil und einer Person gemacht.

In diesem Artikel zeigen wir Ihnen, wie Sie einen Klassifizierer entwickeln können, der zwischen einer Person und einem Unternehmen unterscheiden kann. Mit dem fertigen Code können Sie anschließend analysieren wie viele Follower eines beliebigen Twitter-Accounts Unternehmen bzw. Personen sind. Den kompletten Code dieses Projektes finden Sie wie üblich auf Github.

black-and-white-city-man-people

Problem-Definition und Analyse

Um das Problem besser zu verstehen, schauen wir uns erst einmal einige Twitter-Accounts an. Unternehmensprofile lassen sich meistens sehr gut an dem Logo im Profilbild erkennen, wie z.B. bei dem Twitter-Account von Consetto. Die Profilbilder von Personen zeigen hingegen meistens Gesichter (Beispiel https://twitter.com/BarackObama). Allerdings gibt es immer wieder Ausnahmen. Die wohl größte Ausnahme stellen Freiberufler da. Diese haben meisten ein Gesicht als Profilbild, twittern aber ausschließlich über ihr Unternehmen und nie über Privates. Hier stellt sich oft die Frage: Ist das jetzt eine Person oder ein Unternehmen? Wir definieren das Problem, das im Folgenden gelöst werden soll, also so: Handelt es sich bei einem Twitter-Account um ein Unternehmen, das, z.B. durch ein Logo, als solches klar zu erkennen ist oder es handelt sich um etwas Anderes, wie z.B. um eine Person oder eine Person, die ein Unternehmen promotet?

Daten sammeln und manuell klassifizieren

Bevor wir richtig loslegen können, müssen wir zunächst einmal Daten über verschieden Twitter-Profile sammeln. Dazu nutzten wir die Twitter API, um möglichst viele Twitter-Profile herunterzuladen. Für jedes Profil speichern wir die Profilinformationen, die letzten Tweets und das Profilfoto. Den Code für den Crawler finden Sie auch eim Github Repository.

Anmerkung: Aus datenschutzrechtlichen Gründen veröffentlichen die heruntergeladenen Profile nicht.

Anschließend kommt wohl die unangenehmste Aufgabe des Machine Learnings, nämlich jedes heruntergeladene Profil manuell zu klassifizieren. Dazu erstellen wir eine Excel-Liste mit den Links zu allen Profilen, die wir heruntergeladen haben. Für jedes Profil tragen wir dann in der Excel-Liste ein, ob es sich um ein Unternehmen (C) oder eine Person (P) handelt. Auf diese Art klassifizieren wir mindestens 100 Profile. Je mehr wir klassifizieren, desto besser kann der Machine Learning Algorithmus aus den Daten lernen. In unserem Beispiel haben wir 450 Profile manuell klassifiziert.

Auswertungskriterien festlegen

Nachdem das Problem nun definiert ist und alle Daten vorbereitet sind, müssen wir uns zunächst ein paar Gedanken über die Auswertung machen.

Da jeder Machine Learning Algorithmus nur mit einer gewissen Wahrscheinlichkeit das richtige Ergebnis zurückgibt, können wir uns nie sicher sein, ob das Klassifikations-Ergebnis eines Profils auch richtig ist. Allerdings können wi reine Aussage darüber treffen, mit welcher Wahrscheinlichkeit ein Klassifikations-Ergebnis richtig ist. Genau diese Wahrscheinlichkeit müssen wir messen und versuchen zu verbessern. Wir messen die Genauigkeit (Accuracy). Diese berechnet das Verhältnis von richtig klassifizierten Profilen und der Gesamtzahl der Profile, die wir getestet haben. Ist das Verhältnis 0 haben wir alle Beispiele falsch klassifiziert. Ist das Verhältnis 1 haben alle Beispiel richtig klassifiziert.

Die Genauigkeit, sowie alle anderen möglichen Auswertungskriterien, müssen immer an Beispielen getestet werden, die nicht zum Trainieren des Machine Learning Algorithmus verwendet wurden. Dazu teilen wir die manuell klassifizierten Twitter-Profile in zwei Teile auf. Im ersten Teil sollten nur Profile zum Trainieren des Algorithmus enthalten sein und im zweiten Teil sollten ausschließlich Profile, die zum Testen genutzt werden, enthalten sein. Oft nimmt man 2/3 der Daten zum Trainieren und 1/3 der Daten zum Testen. Wenn Sie nur sehr wenig Daten manuell klassifiziert haben, können Sie auch eine sogenannte Cross-Validation benutzen.

Des Weiteren müssen wir uns im Voraus Gedanken darüber machen, ab welcher Genauigkeit unser Algorithmus wirklich etwas gebracht hat. Wenn wir insgesamt 100 Profile manuell klassifiziert haben und davon 34 Profile Unternehmen und 66 Profile Personen waren, muss unser Machine Learning Algorithmus eine Genauigkeit von mehr als 66% erreichen. Wenn unser Machine Learning Algorithmus nämlich eine Genauigkeit von unter 66% erreichen würde, könnten wir ihn einfach verbessern, indem wir immer alle Profile als Person klassifizierst. Dann hätten wir die Genauigkeit auf genau 66% gesteigert.

Frau klassifiziert Daten

Eine Maschine lernen lassen

Nun kommen wir zu dem Schritt, an dem wir der Maschine beibringen, zwischen einem Unternehmen und einer Person, zu unterscheiden. Als erstes legst wir fest, welchen Machine-Learning-Algorithmus wir verwenden möchten. Wir können den Algorithmus natürlich später immer wieder austauschen, allerdings lassen sich dadurch meistens keine großen Verbesserungen erzielen. In unserem Fall, verwenden wir dir den Random-Forest-Tree-Algorithmus. Geeignet wären auch der Support-Vector-Machine-Algorithmus oder der XGBoost-Algorithmus.
Bevor wir den Machine-Learning-Algorithmus verwenden können, müssen wir aus den Twitter-Profilen Eigenschaften extrahieren. Diese Eigenschaften nennt man in der Fachsprache Features und das Erstellen und Erzeugen dieser Features heißt Feature-Engineering. Das Feature-Engineering ist der wichtigste Prozess für fast alle Machine-Learning-Klassifizierer. Denn dieser Prozess entscheidet darüber wie gut unser Algorithmus am Ende funktioniert. Bei Feature-Engineering ist es wichtig Eigenschaften (Features) zu finden, die zwischen zwei Klassen unterscheiden. Eine prägnante Eigenschaft haben wir schon in der Problemdefinition gefunden: Nämlich ob ein Profilbild ein Gesicht enthält oder nicht. Um gute Features zu finden, ist oft viel Kreativität und Geschick gefragt. Mit den Jahren sammelt man hier aber einiges an Erfahrung und kann so schneller gute Features identifizieren. Weitere Features, die wir umsetzen können, wären z.B.: Hat das Profile eine URL, Anzahl der Follower, Verwendet das Profil ein Profil-Hintergrundbild. Die komplette Liste der Features, die bei uns umgesetzt worden sind, finden Sie auf Github.

Wenn wir alle Features definiert haben, nehmen wir dir die Profile, die wir zum Trainieren verwenden möchten und konvertiert diese in die Eigenschaften. Diese Eigenschaften können wir dann an unseren Machine-Learning-Algorithmus übergeben. Der Machine-Learning-Algorithmus macht daraus anschließend ein statistisches Modell, das wir später in einer Anwendung nutzen können. Bevor wir das Modell aber in einer Anwendung nutzen, sollten wir es vorher mit unserem Auswertungskriterium evaluieren. Dazu nehmen wir die Test-Profile, konvertieren diese zu Eigenschaften und übergeben sie dem Modell. Das Modell sagt uns dann welche Klasse es dem Profil zuweisen würde. Diese Ausgabe vergleichen wir dann mit der manuell vergeben Klasse. Wenn beide übereinstimmen, hat der Machine-Learning-Algorithmus richtig gehandelt. Wenn sie sich unterscheiden, hat der Algorithmus einen Fehler gemacht.

Wenn wir mit der Genauigkeit noch nicht zufrieden sind, können wir versuchen noch weitere oder bessere Features zu finden. Anschließend trainieren und evaluieren wir wieder den Algorithmus.

Zusammenfassung und Ausblick

Mit dem Code der auf Github veröffentlicht wurde, haben wir eine Genauigkeit von 90% erreicht. Dazu haben wir 37 Features aus jedem Profil erzeugt und mittels eines Random-Forest-Tree-Algorithms trainiert. Das bedeutet, dass wir in circa 9 von 10 Fällen ein Profil richtig klassifizieren können. Sicher ist hier noch Raum für Verbesserungen, aber vorerst sind wir mit dem Ergebnis zufrieden.
Möchtest Sie mehr über die Möglichkeiten von Machine Learning erfahren? Dann nehmen Sie mit uns Kontakt auf. Wir beraten Sie gerne bei der Durchführung von Machine Learning-Projekten.

Wie programmiere ich einen Chatbot für Börsenkurse?

Vor ungefähr 50 Jahren wurde das erste intelligente Computerprogramm vorgestellt. Hierbei handelte es sich um einen einfachen Chatbot, der hauptsächlich mit Gegenfragen antwortete um den Benutzer zum Weitermachen zu bewegen. Wirkliche Intelligenz war natürlich nicht vorhanden. Es zeigte aber bereits, wie die Kommunikation zwischen Computer und Mensch aussehen kann. Seitdem hat sich natürlich vieles verändert. Der heute wohl bekannteste Chatbot heißt Siri und befindet sich auf dem Apple iPhone. Aber auch heute ist das Erstellen eines eigenen Chatbots noch relativ komplex. Vor allem, wenn dieser jede Menge verschiedene Frage beantworten sollen. Im nachfolgenden Artikel zeigen wir dir wie du einen einfachen Chatbot bauen kannst, der dir den aktuellen Börsenkurs eines Unternehmens aufzeigt. Dabei besteht die Schwierigkeit zunächst darin, das Unternehmen in einem Satz zu erkennen und anschließend auf ein Börsensymbol abzubilden. Mit dem Börsensymbol kannst du über eine API den aktuellen Kurs abfragen und diese Information ausgeben.

Hinweis: Dieser Beitrag beschreibt das grundsätzliche Vorgehen für den Bau eines Chatbots. Den kompletten Code des Chatbots findest du auf Github.

pexels-photo

Daten sammeln

Zunächst solltest du dir einige Beispielfragen überlegen, die ein Benutzer deinem Chatbot stellen kann. Das hilft dir zum einen dabei das Problem besser zu verstehen und zeigt dir zum anderen wie gut dein Bot bereits funktioniert. Natürlich kannst du die Beispiele immer wieder nutzen, um deinen aktuellen Stand während der Entwicklung zu testen. Am besten erweiterst du deine Beispiele auch mit Beispielen von anderen Personen. Dazu kannst du entweder Kollegen fragen oder bei Twitter nach Fragen suchen, die Wörter wie Aktie, Aktienkurs oder ähnliches enthalten. Bei der Entwicklung deines Chatbots könntest du beispielsweise folgende Fragen verwenden:

  • Daimler Aktie: Wohin klettert der Aktienkurs?
  • Wie steht es eigentlich um den Aktienkurs von Puma?
  • Hat schon jemand ermittelt, welche Auswirkungen diese Ankündigung auf den Aktienkurs von Twitter haben wird?
  • Warum hat der Aktienkurs von Heliad eigentlich so einen dermaßen Abstand zum Substanzwert?
  • Hat verafake eigentlich eine Auswirkung auf den Aktienkurs von der RTL Group?
  • Hat mal jemand den aktuellen Twitter Aktienkurs für mich?
  • Oh eine Apple-Keynote. Geht jetzt der Aktienkurs wieder hoch?
  • Mal was anderes, wie steht der Aktienkurs für Rosen?
  • Trump gegen Apple – was bedeutet das für den Aktienkurs?
  • Wetten der Aktienkurs von Samsung bricht ein? Das war zu wenig. VR is not ready for primetime yet.
  • Ist der Kurs von AAPL nach der WEKO-Ankündigung bereits um 10% gefallen?
  • Bleibt die BMW Aktie stabil?
  • Was ist eigentlich mit der Aktie von Funkwerk los?
  • Tesla präsentiert neuen SUV! Die Zahlen sprechen für sich. Was macht das mit dem Kurs der Aktie?
  • Sinkt der Kurs der Baidu-Aktie weiter?
  • Seit Ende Juli fällt der Kurs der Apple-Aktie. Ist das nur ein Zwischentief?
  • Deutsche Börse Aktie: Jetzt wieder kaufen?
  • Was macht der Dax?
  • Hat gerade jemand die Börse im Blick und weiß, wie teuer guter Rat im Moment so ist?
  • Wie hat sich der Aktienkurs von Google in den letzten Monaten entwickelt?
  • Zeige mit den Aktienkurs von Google.
  • Zeige mit den Aktienkurs von Siemens vom letzten Jahr bis heute.
  • Lufthansa fliegt wieder Türkei an: Was macht die Aktie?
  • Nach Putschversuch: Aktie der Turkish Airlines bricht ein.

Problem-Definition und Analyse

Jeder Chatbot hat verschiedene Frageabsichten, die er versucht zu erkennen. Im Englischen kennt man diese Absichten unter dem Begriff Intent. Mögliche Intents sind zum Beispiel die Frage nach dem aktuellen Aktienkurs oder aber die Frage der Kursentwicklung der letzten Monate. Ignoriere bei deinem Chatbot zunächst die Tatsache, dass es mehrere Intents gibt, denn das vereinfacht das Ganze. Nimm also an es gäbe es nur einen Intent, nämlich den aktuellen Aktienkurs eines Unternehmens. Natürlich können die Fragen auch direkt Börsensymbole enthalten. Wie z.B. in der folgenden Frage: „Ist der Kurs von AAPL nach der WEKO-Ankündigung bereits um 10% gefallen?“ Aber auch Unternehmen, die eigentlich gar keine Unternehmen sind, können in den Fragen inbegriffen sein: „Mal was anderes, wie steht der Aktienkurs für Rosen?“ Wenn es sich dann, aber doch um ein „echtes“ Unternehmen handelt, ist es möglich, dass der Name von diesem aus mehreren Wörtern besteht. Wie z.B. in folgender Frage: „Nach Putschversuch: Aktie der Turkish Airlines bricht ein.“ Aber auch Mehrdeutigkeiten können in der Fragestellung enthalten sein. Ein Beispiel ist der Satz: „Wetten der Aktienkurs von Samsung bricht ein? Das war zu wenig. VR is not ready for primetime yet.“ In Kontext dieser Frage steht VR für Virtual Reality. Oftmals verwendet man die Abkürzung VR aber auch als das Börsensymbol von Validus Holdings, Ltd.

construction-work-carpenter-tools

Extraktion von Entitäten

Der erste Schritt zu deinem Chatbot besteht darin, aus einem Satz die sogenannten Entitäten zu extrahieren. In deinem Fall sind das die Unternehmensnamen. Diese Extraktion ist ein klassischer Anwendungsfall des Machine Learnings. Ziel ist es jedes Wort eines Satzes zu klassifizieren. Entweder ist das Wort ein Unternehmensname oder es ist kein Unternehmensname. Allerdings hast du in deiner Analyse bereits festgestellt, dass es auch Unternehmensnamen gibt, die aus mehreren Wörtern bestehen können, wie zum Beispiel „Turkish Airlines„. Um auch solche Fälle zu erfassen, solltest du die Klassen des Klassifizierens abändern. Anstatt des Falles, dass es nur zwei Klassen gibt (Wort ist ein Unternehmensname, Wort ist kein Unternehmensname), solltest du deinen Klassifizierer um eine Klasse erweitern (Beginn eines Unternehmensnamens (B), innerhalb eines Unternehmensnamens (I), außerhalb eines Unternehmensnamens (A)). Wie in folgenden Beispielen:

  • Bleibt/A die/A BMW/B Aktie/A stabil/A
  • Aktie/A der/A Turkish/B Airlines/I bricht/A ein/A.

Glücklicherweise brauchst du einen Klassifizierer dieser Art nicht selbst entwickeln. Für viele Sprachen, unter anderem auch Deutsch, gibt es bereits sogenannte Named Entity Recognizer (NER). Ein Named Entity Recognizer extrahiert verschiedene Entitäten aus einem Satz. Als Entitäten gelten sowohl Unternehmensnamen, als auch Personen sowie Orte. Natürlich werden alle Named Entitys auch als solche markiert. Hier ein Beispiel:

  • Max/B-Person Mustermann/I-Person arbeiten/A als/A Handwerker/A in/A Darmstadt/B-Ort.

In deinem Chatbot kannst du zum Beispiel den Named-Entity-Recognizer, der an der Stanford Universität entwickelt wurde, verwenden. Dieser unterstützt auch die deutsche Sprache. Eine Demo des NER findest du unter folgendem Link: http://nlp.stanford.edu:8080/ner/process. Um ihn mit deutschem Text zu testen, musst du bei dem Punkt „Classifier“ den deutschen Classifier auswählen. Nach ein paar Beispielen wirst du dann schnell feststellen, dass nicht alle Enitäten erfasst werden können. Bei folgendem Satz wird dein NER zum Beispiel gar keine Entitäten erkennen: „Hat mal jemand den aktuellen Twitter Aktienkurs für mich?“ Aus diesem Grund benötigst du noch weitere Methode, um die Unternehmensnamen extrahieren zu können. Für die finale Version deines Bots gibt es folgende Methoden:

Nominalphrasen: Eine Nominalphrase (NP) ist eine abgeschlossene syntaktische Einheit innerhalb eines Satzes, deren Kopf ein Nomen ist.

Präpositionalphrase: Eine Präpositionalphrase (PP) ist in der Grammatik eine abgeschlossene Wortgruppe, deren Kopf eine Präposition ist.

Part-of-Speech-Tag (POS) von Type NE: Unter Part-of-speech Tagging versteht man die Zuordnung von Wörtern und Satzzeichen eines Textes zu Wortarten. Hierzu wird sowohl die Definition des Wortes als auch der Kontext berücksichtigt. Wörter der Wortart NE (Named Entity) werden auch als Kandidaten von Unternehmensnamen berücksichtigt.

Ähnlich wie beim NER werden auch Phrasen und Part-of-Speech-Tags mit Klassifizierern erkannt. Auch hierfür gibt es bereits ein Vielzahl von fertigen Klassifizieren. Für deinen Chatbot kannst du wieder Tools von Stanford verwenden. Mit Hilfe von NER, Pharsen und POS kannst du jetzt aus jedem Satz mehrere Entitäten extrahieren. Diese Entitäten musst du anschließend zu Börsensymbolen umwandeln. Dadurch, dass du nun mehrere Entitäten für einen Satz hast, kann es vorkommen, dass du nicht mehr genau weißt, welcher Kandidat der richtige ist. Hier ein Beispiel:

Daimler Aktie: Wohin klettert der Aktienkurs?
=> Daimler Aktie (NER), der Aktienkurs (NP), Daimler (NE)

Um dieses Problem zu lösen kannst du die einzelnen Kandidaten durch Machine Learning bewerten lassen und eine Rangfolge aufstellen oder aber gleich einen spezialisieren NER programmieren, der Unternehmensnamen zuverlässig erkennt. Für beide Verfahren benötigst du allerdings jede Menge Trainingsdaten, über die du zum jetzigen Zeitpunkt noch nicht verfügst. Trotzdem wirst du relativ schnell erkennen, dass nicht jeder Kandidat zu einem Börsenkurs führt. Aus diesem Grund kannst du davon ausgehen, dass jede Menge Kandidaten verloren gehen, sobald du versuchst diese in ein Börsensymbol umzuwandeln.

Von Entitäten zu Börsensymbolen

Nachdem du alle möglichen Entitäten gefunden hast, kannst du diese nun in Börsensymbole umwandeln. Die Umwandlung kannst du aber nicht automatisch durchführen, denn hierzu benötigst du mehrere Wissensquellen. Zunächst einmal ist es hilfreich über eine möglichst vollständige Liste an Börsensymbolen mit Unternehmensnamen zu verfügen. Leider wird eine Liste in dieser Art nicht kostenfrei angeboten. Allerdings hast du die Möglichkeit mit dem Yahoo-Ticker-Symbol-Downloader circa 80 bis 90 Prozent der Liste herunterzuladen. Anschließend kannst du die Liste nehmen und daraus ein Suchindex erstellen. Für den Suchindex und das anschließende Suchen darin empfiehlt es sich Apache Lucene zu verwenden. Da die Liste der Börsenkurse mit circa 100.000 Einträgen ziemlich klein ist, kannst du den Suchindex im Hauptspeicher halten und benötigst keine komplexeren Technologien wie Elasticsearch oder Apache Solr. Das Problem an diesem Suchindex ist allerdings, dass ein Unternehmen darin mehrmals auftauchen kann, da es für jeden Handelsplatz ein eigenes Börsensymbol gibt. Für die Daimler AG gibt es z.B. die Symbole DAI.F (Frankfurt), DAI.MU (München) und DAI.SG (Stuttgart). Ein weiteres Problem besteht darin, dass mache Unternehmen unter einem anderen Namen an der Börse auftauchen. Das bekanntestes Beispiel ist Google, denn der Konzern ist mittlerweile unter dem Namen Alphabet an der Börse zu finden.

Um diese Probleme zu lösen, kannst du als weitere Wissenquelle noch Wikidata verwenden. Bei Wikidata handelt es sich um eine Sammlung von Objekten, die aus beliebig vielen Aussagen und Behauptungen bestehen. Ein Objekt stellt in deinem Fall ein Unternehmen dar. Für das Unternehmen werden auch Aussagen über das Börsensymbol getroffen. Über die Wikidata-API kannst du nach Objekten suchen und dir dann das Börsensymbol ausgeben lassen. Das funktioniert für bekannte Unternehmen ziemlich gut. Für kleinere Firmen wird aber in den meisten Fällen leider kein Objekt oder Börsensymbol gefunden. Eine Kombination der beiden oben genannten Methoden führt häufig zu einem richtigen Börsensymbol. Aber Vorsicht: gerade bei weniger bekannten Unternehmen kann es sich dabei dennoch um eine Falschaussage handeln.

marketing-man-person-communication

Abfrage von Aktienkursen und Ausgabe des Textes

Nachdem du den Unternehmensnamen im Text identifiziert und die in ein Börsensymbol umgewandelt hast, beginnt nun der einfache Teil: Mithilfe des Börsensymbol kannst du nun über die Yahoo Finance API die Aktienkurse abrufen und anschließend einen Ausgabetext generieren. Am besten machst du das nur, wenn du dir wirklich sicher bist, dass du auch ein gutes Börsensymbol gefunden hast. Sollte das nicht der Fall sein, frag besser noch einmal nach welches Börsensymbol der Nutzer meint. Für den Fall, dass kein Börsensymbol vorhanden ist, ist es am besten, wenn du sagst, dass kein Unternehmen identifiziert werden konnte. Bei einem möglichen Produktbetrieb empfehlen wir dir die Antworten vorher immer noch einmal durch einen Menschen zu überprüfen, um sicherzustellen, dass sie auch stimmen. Damit kannst du dir auch eine größere Datenbasis aufbauen und weitere Verbesserungen an deinem Chatbot vornehmen.

Analyse der finalen Ausgabe

Daimler Aktie: Wohin klettert der Aktienkurs?
Der Kurs von Daimler (DAI.F) beträgt aktuell: 59.515 EUR
Wie steht es eigentlich um den Aktienkurs von Puma?
Der Kurs von Puma (PUM.F) beträgt aktuell: 220.079 EUR.
Hat schon jemand ermittelt welche Auswirkungen diese Ankündigung auf den Aktienkurs von Twitter haben wird?
Der Kurs von Twitter (TWTR) beträgt aktuell: 18.75 USD.
Warum hat der Aktienkurs von Heliad eigentlich so einen dermaßen großen Abstand zum Substanzwert?
Ich bin mir nicht sicher was du meinst? Meinst du eins hiervon: HPBK.MU (Heliad)?
Hat verafake eigentlich eine Auswirkung auf den Aktienkurs von der RTL Group?
Der Kurs der RTL Group (RRTL.F) beträgt aktuell: 75.37 EUR.
Hat mal jemand den aktuellen Twitter Aktienkurs für mich?
Ich bin mir nicht sicher was du meinst? Meinst du eins hiervon: TWR.DU (Twitter Aktienkurs)?
Oh eine Apple-Keynote. Geht jetzt der Aktienkurs wieder hoch?
Ich bin mir nicht sicher was du meinst? Meinst du eins hiervon: APC.HM (Apple-Keynote)?
Mal was anderes, wie steht der Aktienkurs für Rosen?
Ich bin mir nicht sicher was du meinst? Meinst du eins hiervon: MNK (Mal), ROI.F (Rosen)?
Trump gegen Apple – was bedeutet das für den Aktienkurs?
Der Kurs von Apple (AAPL) beträgt aktuell: 100.33 USD.
Wetten, dass der Aktienkurs von Samsung ein bricht? Das war zu wenig. VR is not ready for primetime yet.
Ich bin mir nicht sicher was du meinst? Meinst du eins hiervon: SSNLF (Samsung), VRX (VR)?
Ist der Kurs von AAPL nach der WEKO-Ankündigung bereits um 10% gefallen?
Ich bin mir nicht sicher was du meinst? Meinst du eins hiervon: AAPL (AAPL), CDNL (%)?
Bleibt die BMW Aktie stabil?
Der Kurs von BMW (BMW.F) beträgt aktuell: 75.38 EUR.
Was ist eigentlich mit der Aktie von Funkwerk los?
Ich bin mir nicht sicher was du meinst? Meinst du eins hiervon: SIEGY (Aktie), FEW.SG (Funkwerk)?
Tesla präsentiert den neuen SUV! Die Zahlen sprechen für sich. Was macht das mit dem Kurs der Aktie?
Der Kurs von Tesla (TSLA) beträgt aktuell: 230.00 USD.
Sinkt der Kurs der Baidu-Aktie weiter?
Ich bin mir nicht sicher was du meinst? Meinst du eins hiervon: BIDU (Baidu-Aktie)?
Seit Ende Juli fällt der Kurs der Apple-Aktie. Ist das nur ein Zwischentief?
Ich bin mir nicht sicher was du meinst? Meinst du eins hiervon: APC.HM (Apple-Aktie)?
Deutsche Börse Aktie: Jetzt wieder kaufen?
Ich bin mir nicht sicher was du meinst? Meinst du eins hiervon: DWNI.DU (Deutsche Börse Aktie)?
Was macht der Dax?
Ich bin mir nicht sicher was du meinst? Meinst du eins hiervon: DXR (Dax)?
Hat gerade jemand die Börse im Blick und weiß, wie teuer guter Rat im Moment so ist?
Ich bin mir nicht sicher was du meinst? Meinst du eins hiervon: RATE (Rat), MNTA (Moment)?
Wie hat sich der Aktienkurs von Google in den letzten Monaten entwickelt?
Der Kurs von Google (GOOG) beträgt aktuell: 742.27 USD.
Zeige mit den Aktienkurs von Google.
Der Kurs von Google (GOOG) beträgt aktuell: 742.27 USD.
Zeige mit den Aktienkurs von Siemens vom letzten Jahr bis heute.
Der Kurs von Siemens (SIE.F) beträgt aktuell: 94.997 EUR.
Lufthansa fliegt wieder die Türkei an: Was macht die Aktie?
Der Kurs von Lufthansa (LHA.F) beträgt aktuell: 10.257 EUR.
Nach Putschversuch: Aktie der Turkish Airlines bricht ein
Ich bin mir nicht sicher was du meinst? Meinst du eins hiervon: SIEGY (Aktie), AAL (Airlines), TKF (Turkish Airlines)?

Bei der Analyse der Ergebnisse kannst du festzustellen, dass es bei einigen Beispielen schon ganz gut funktioniert hat. Bei anderen hingegen ist sich der Algorithmus noch unschlüssig welcher Aktienkurs gemeint ist. Dabei treten aber auch etwas kuriose Vorschläge auf. Bei dem Satz: „Hat gerade jemand die Börse im Blick und weiß, wie teuer guter Rat im Moment so ist?“ werden die Entitäten „Rat“ und „Moment“ extrahieren und zu Börsensymbolen umgewandelt (RATE und MNTA). Das hat natürlich auch damit zu tun, dass verschiedene Börsenunternehmen aus der ganzen Welt vorhanden sind, deren Namen ziemlich ähnlich zu deutschen Nomen sind, die normalerweise keinen Unternehmensnamen repräsentieren. Weitere Probleme treten auch bei Wörtern mit Bindestrichen, wie „Baidu-Aktie“ oder „Apple-Keynote“, auf. Die hier eingesetzen Tools sehen „Baidu-Aktie“ als ein Wort. Das macht das Finden des richtigen Börsenkurses schwieriger. Positiv ist, wenn der Wert eines Aktienkurses aufgegeben wird, es sich dabei auch immer um den Aktienkurs des gefragten Unternehmens handelt.

pexels-photo-28462

Zusammenfassung und Ausblick

Mit Hilfe dieses Artikels bist du also in der Lage einen Chatbot, mit schon vorhanden Machine Learning Komponenten, zu entwickeln. Dabei stoßt du auf einige Probleme, die bei fast jeder Chatbot-Entwicklung auftreten. Schwierigere Konflikte, wie das Erkennen von Intents, lässt du dabei außen vor. Für die Entwicklung eines leistungsfähigeren Chatbots bist du auf eine viel größere Anzahl von Beispielfragen und -antworten angewiesen, denn nur damit kannst du die Qualität der Ausgaben deutlich verbessern. Ein Vorgehen zu solch einem Datensatz wäre, den Bot zunächst mit Menschen zu betreiben. Im Anschluss kannst du dann einen Bot entwickeln, der dem Menschen Antwortvorschläge macht, die er nur noch akzeptieren muss. Ist die Akzeptanz-Rate hoch genug, kann der Bot vollautomatisch im Produktionsbetrieb eingesetzt werden.