SHI verrät geheimes Rezept für erfolgreiche Online Shops

Search, Synonyme & Machine Learning

Mit neuronalen Netzen Synonyme erkennen und automatisiert verwenden

In einem vorherigen Blogbeitrag wurde beschrieben, wie Machine Learning im Enterprise Search Umfeld eingesetzt werden kann, um mehr Nutzen aus diesen Anwendungen ziehen zu können. Ein Folgebeitrag vertiefte den Themenblock Named Entity Recognition mit Solr und OpenNLP.

Dieser Beitrag geht thematisch in eine ähnliche Richtung, indem er aufzeigt, wie die Auffindbarkeit von Dokumenten durch automatisiertes Hinzufügen von Synonymen erhöht wird. Auch dieser Beitrag wird sich Tools aus dem Open Source Umfeld bedienen, um einen Teil dieses Automatismus prototypisch darzulegen.

Motivation hinter automatisiertem Hinzufügen von Synonymen

Warum macht ein automatisiertes Hinzufügen von Synonymen überhaupt Sinn?

Je „besser“ Inhalte gestaltet sind, desto besser sind diese über eine unternehmensweite Suche auffindbar. Und „besser“ kann heißen, dass gleichbedeutende oder ähnliche Begriffe an einen Inhalt geheftet werden müssen, damit dieser über diese Begriffe auch gefunden werden kann, nicht nur über die im Text selbst stehenden.

Wenn ein Mitarbeiter beispielsweise für seinen Bekannten- oder Familienkreis die internen Stellenangebote für Auszubildende sehen will, wird er nicht zwingend nach Stellenangebote für Auszubildende suchen, so wie es im internen Portal steht, sondern eher nach Jobs Azubis. In diesem Fall sind es ein Synonym und ein Akronym welche für die Suche verwendet werden.

Für diese beiden Fälle ist es ein Leichtes, diese als Synonyme in den Suchtechnologien, die heutzutage weltweit eingesetzt werden, zu hinterlegen. Egal ob Open Source Technologien wie Solr verwendet werden oder auch kommerzielle Produkte wie Fusion: Alle beherrschen das Handling von Synonymen. Doch Synonymlisten sind statisch bzw. unterliegen einer konstanten Pflegenotwendigkeit. Neue Synonyme kommen hinzu, andere Synonyme verlieren an Bedeutung und spielen keine Rolle mehr. Des Weiteren gibt es in unstrukturierten Daten Relationen zwischen Begriffen, die für eine Person nicht offensichtlich und somit schwer in Synonymlisten unterzubringen sind.

Was demnach benötigt wird ist ein Dienst, der automatisch (Synonym-)Relationen erkennen kann und diese dann verwendet, um Inhalte automatisch anzureichern.

Neuronale Netze – word2vec

Und für diesen Use Case können Neuronale Netze, genauer gesagt der Algorithmus word2vec, eingesetzt werden. Dieser Algorithmus ist dazu in der Lage, über sogenannte Word Embeddings die Semantik von Wörtern innerhalb eines Texts zu greifen. Dieser Machine Learning Algorithmus nimmt Text als Input und generiert einen Vektor pro Wort, daher auch der Name word2vec. Diese Wortvektoren können miteinander verglichen werden, indem ein Ähnlichkeitsmaß verwendet wird. Je ähnlicher zwei Wortvektoren sind, desto ähnlicher ist der Kontext, in dem die zwei Wörter vorkommen können. Bei hinreichender Ähnlichkeit können zwei Wörter somit als Synonyme erachtet werden.

Integration von word2vec in Suchlösungen

Doch wie lässt sich ein solcher Machine Learning Algorithmus in eine Suchlösung integrieren? Die Basis eines jeden Machine Learning Ansatzes sind Daten. Bei einer Enterprise Search Anwendung können dies alle indexierten Daten sein. Bei einem Online-Shop können dies Produkttexte, aber auch Kundenrezensionen sein.

Auf dieser Datenmenge wird ein word2vec-Modell trainiert. Dies geht mit Open Source Projekten wie Spark oder Deeplearning4j mit wenigen Zeilen Code. Die benötigte Rechenleistung und die Zeit für eine Modellerstellung hängen dann wiederum maßgeblich von zugrunde liegenden Datenmenge ab.

Das trainierte Modell muss dann zur Indexierungszeit verwendet werden, um den Text mit dem erstellten Modell auf mögliche Synonyme zu prüfen. Während der Indexierungszeit kann bedeuten, dass dieser Schritt beispielsweise in die Analysekette von Solr integriert wird. Alternativ kann dies auch in dem Code verankert werden, der für die Indexierung der Daten verwendet wird.

Wenn mögliche Synonyme gefunden werden, können diese in ein separates Feld indexiert werden, was dann wiederum von der Suchmaschine mit einer anderen Gewichtung durchsucht werden kann und somit zielgerichtet ins Boosting und in die Relevanzermittlung einfließen kann.

Die Vorteile eines Modells, welches auf den eigenen Daten trainiert ist, liegen auf der Hand:

Im Gegensatz zu einem auf einem allgemeinen Korpus (z.B. Wikipedia) trainierten Datensatz können so unternehmens- bzw. Use Case-spezifische Synonyme zu den Inhalten hinzugefügt werden, die im allgemeinen Sprachgebrauch unter Umständen nicht vorkommen oder eine andere Bedeutung haben.

Der Machine Learning Ansatz hat zudem den Vorteil, dass er immer gleich entscheidet und somit nicht von einer oder mehreren Personen abhängig ist, die beim Pflegen von Inhalten unterschiedlich beurteilen.

Fazit

Die Erkennung von Synonymen und die Anreicherung von Inhalten mittels Machine Learning ist nicht nur bereits mit Open Source Mitteln möglich, sondern sogar sinnvoll, um einerseits ein konsistentes Handling von Synonymen zu gewährleisten und andererseits auch passende, von Menschen unter Umständen nicht berücksichtigte Synonyme zu finden, die zur besseren Auffindbarkeit von Dokumenten bzw. Inhalten führen.

Daniel Wrigley

Daniel Wrigley