Passende Antwort: Neuronale Suche und Question Answering

Auf alltagssprachliche Fragen konkrete Antworten zu finden, gehört zu den Königsdisziplinen des Natural Language Processing. Das kann jeder für sich nutzen.

In Pocket speichern vorlesen Druckansicht 5 Kommentare lesen

(Bild: Shutterstock)

Lesezeit: 17 Min.
Von
  • Thomas Stadelmann
Inhaltsverzeichnis

Konkrete Antworten auf natürlichsprachliche Fragen von einem System zu bekommen, galt bis vor ein paar Jahren fast als der Heilige Gral für Suchsysteme und schien ebenso unerreichbar. Ein Artikel auf heise Developer zu Natural Language Processing (NLP) mit BERT hat 2020 die Grundlagen dieses Sprachmodells vorgestellt, dessen Akronym für Bidirectional Encoder Representations from Transformers steht. Das Thema Question Answering hat der Text nur angerissen. Es ist erst mit aktuellen Methoden sinnvoll einsetzbar und führt zu teils verblüffenden Ergebnissen.

Google nutzt die Technik produktiv. Die Suchmaschine des Internetriesen gibt beispielsweise Antworten auf einfache faktenbezogene Fragen zurück, wenn das System sicher ist, sowohl die Frage zu verstehen als auch die korrekte Antwort darauf geben zu können. Wer die Funktion in Aktion sehen möchte, kann Fragen wie "Woher kommt der Name Python?" in das Suchfeld eingeben.

Dank der inzwischen verfügbaren Rechenleistung und Technik ist Question Answering nicht nur Tech-Giganten vorbehalten. Mit der ständigen Weiterentwicklung von Open-Source-Frameworks lässt sich eine vollständige Suchanwendung auf Basis neuronaler Netze mit wenigen Codezeilen schreiben.

Vor der neuronalen Suche gab es wesentlich einfachere Methoden zum Wiederfinden von Informationen. Der Artikel zu BERT hat die Dokument-Term-Matrix vorgestellt, die Dokumente und die Häufigkeit der darin enthaltenen Terme (Worte) gegenüberstellt. Ein Suchalgorithmus kann beispielsweise einfach alle Dokumente mit übereinstimmenden Termen zur Anfrage zurückgeben.

Die Methode stößt jedoch bei einer großen Textsammlung an ihre Grenzen, wenn sie beispielsweise bei der Suche nach dem Begriff "BERT" nicht die relevantesten Ergebnisse liefert, sondern alle Webseiten, die den Suchbegriff in zufälliger Reihenfolge enthalten. Die Relevanz lässt sich mit Verfahren verbessern, die wiederum auf die Dokument-Term-Matrix zurückgreifen (s. Abb. 1). Verfahren wie TF-IDF (Term Frequency, Vorkommenshäufigkeit; Inverse Document Frequency, inverse Dokumenthäufigkeit) oder Okapi BM25 (Best Matching) gewichten die Begriffe in einem Dokument nach ihrer Relevanz innerhalb des Korpus. Die Methoden sind schnell und zudem je nach linguistischer Vorverarbeitung wie Stammformreduktion und Lemmatisierung sprachunabhängig.

Die Dokument-Term-Matrix stellt die Dokumente als Vektoren dar. Die Spalten entsprechen den Wörtern (Abb. 1).

Auf der anderen Seite fußt der schlagwortbasierte Ansatz auf dem vereinfachenden "Bag of Words"-Prinzip, das die Reihenfolge der Wörter in einem Dokument außer Acht lässt. Die Wortstellung ist für die Bedeutung eines Satzes jedoch wichtig. Sie trägt zum Verständnis der syntaktischen und semantischen Beziehungen zwischen Wörtern bei. Häufig bilden gerade diese Beziehungen den Kontext und damit einen wesentlichen Teil der Bedeutung von Begriffen.

Inzwischen lassen sich viele schlagwortbasierte Suchsysteme manuell um Wortbeziehungen erweitern. Das beschränkt sich meist jedoch auf einfache kontextunabhängige Wort-zu-Wort-Beziehungen wie Synonyme. Zudem ist das Erstellen und die Pflege solcher Beziehungen nicht nur aufwendig, sondern birgt eigene Herausforderungen wie eine umständlichere Suche, da die Anfragen um die Wort-zu-Wort-Beziehungen erweitert werden müssen. Eine schlagwortbasierte Suche könnte wie in Abbildung 2 aussehen.

Das Diagramm stellt einen denkbaren Ablauf einer schlagwortbasierten Suche nach "Toni Morrison" dar (Abb. 2).

Damit sich ein Dokument auf die Anfrage "Toni Morrison" als relevant qualifiziert, müssen je nach Suchmodus entweder nur ein Begriff oder beide Begriffe im Dokument vorkommen. Durch den Bruchteil der Begriffe, die übereinstimmen müssen, lässt sich das System in seiner Fokussierung auf Vollständigkeit oder Genauigkeit der Ergebnisse optimieren. Mindestens ein Begriff muss jedoch immer – nach linguistischer Vorverarbeitung – mit der Anfrage übereinstimmen.

Folgendes Beispiel im ersten Colab-Notebook zum Artikel simuliert die schlagwortbasierte Suche mit dem Schlagwort "joffrey" auf die TF-IDF-Matrix:

keyword = "joffrey"
keyword_idx = keyword_to_idx[keyword]
tfidf[tfidf.columns[keyword_idx-5:keyword_idx+5]] \
            .sort_values(keyword, ascending=False)

      joe   joel  joer  joern joffery joffrey  ...
2044  0.0   0.0   0.0   0.0   0.0     0.445734 ...
1119  0.0   0.0   0.0   0.0   0.0     0.430419 ...
2050  0.0   0.0   0.0   0.0   0.0     0.418212 ...
243   0.0   0.0   0.0   0.0   0.0     0.391846 ...
2048  0.0   0.0   0.0   0.0   0.0     0.388126 ...
...   ...   ...   ...   ...   ...     ...      ...
800   0.0   0.0   0.0   0.0   0.0     0.000000 ...
799   0.0   0.0   0.0   0.0   0.0     0.000000 ...
798   0.0   0.0   0.0   0.0   0.0     0.000000 ...
797   0.0   0.0   0.0   0.0   0.0     0.000000 ...
2356  0.0   0.0   0.0   0.0   0.0     0.000000 ...

Die neuronale Suche vergleicht eine Anfrage beispielsweise in Form einer Zeichenfolge oder eines Bildes nicht direkt mit den zu durchsuchenden Daten, sondern leitet sie durch ein neuronales Netz, das auf Millionen von Datenpunkten vortrainiert ist. Das neuronale Modell hat gelernt, eine Anfrage in einen hochdimensionalen Vektor zu übersetzen. Diese hohe Dimensionalität ermöglicht es neuronalen Modellen, die Bedeutung oder den semantischen Wert einer Anfrage besser zu erfassen. Die neuronale Suche lässt sich für viele Datentypen verwenden, Bilder eingeschlossen.

Die neuronale Suche arbeitet auch mit Bildern (Abb. 3).

Der Fokus dieses Artikels liegt auf der Suche mit natürlicher Sprache. Alle verbreiteten aktuellen Sprachmodelle basieren auf der Transformer-Architektur. Damit ist eine Art neuronaler Netze gemeint, die Google erstmals 2017 in der Abhandlung "Attention is All You Need" vorgestellt hat. Die bekannteste Ausprägung der Architektur ist BERT.

Drei Dinge sind im Umgang mit Transformern wichtig zu wissen:

  1. Sie arbeiten mit einer Technik namens Attention, die es ihnen ermöglicht, Beziehungen zwischen Wörtern innerhalb eines Textes zu bestimmen. Hierdurch fließt der umliegende Kontext mit in die Bedeutung eines jeden Wortes ein.
  2. Sie eignen sich weitaus besser für parallele Berechnungen als andere Modelle, wodurch sie auf aktueller Hardware deutlich schneller zu trainieren sind.
  3. Die Modelle profitieren vom Transfer-Learning-Paradigma: Es reicht aus, sie einmalig rechenintensiv auf umfangreichen Textdatenmengen vorzutrainieren. Anschließend lassen sie sich mit weniger Trainingsdaten und einem wesentlich geringeren Rechenaufwand auf beliebige Anwendungsfälle in unterschiedlichen Fachdomänen feinjustieren.

Inzwischen existieren Tausende Transformer-basierte Sprachmodelle, die eine Vielzahl von Anwendungsfällen in unterschiedlichen Sprachen abdecken. Im Modellverzeichnis des NLP-Unternehmens Hugging Face finden Data Scientists zahlreiche vortrainierte Modelle.

Transformer-basierte Modelle können Bilder und Texte durch Berechnung ihrer Ähnlichkeit abgleichen. Bei der semantischen Dokumentensuche lässt sich auf diese Weise das Dokument finden, das einer Anfrage am ähnlichsten ist. Der Prozess transformiert Dokumente und Anfragen in hochdimensionale Vektoren, die möglichst präzise die semantische Bedeutung unabhängig von den konkret verwendeten Wörtern abbilden. Der Begriff Dokument bezieht sich dabei auf ein beliebiges Textfragment. Abhängig vom Anwendungsfall lassen sich lediglich Absätze oder sogar Sätze statt ganzer Dokumente in Aufsatzlänge verwenden.

Das in Abbildung 4 gezeigte Beispiel zeigt, wie ein semantisches Suchmodell die Bedeutung der Anfrage erfasst und die relevantesten Dokumente in einer Rangfolge zurückgibt. Die Suche erfolgt über die Quellen der New York Times und des Smithsonian Institute.

Das Diagramm zeigt die Ergebnisse der semantischen Dokumentsuche "African American women writers" (Abb. 4).

Die Anfrage "African American women writers" stimmt bezogen auf die reine Bedeutung gut mit "black female authors" aus dem zweiten Dokument überein, obwohl es sich dabei um vollständig verschiedene Begriffe handelt.

Die semantische Suche ist eng mit dem sogenannten Information Retrieval verbunden. Eine neue Generation vektoroptimierter Datenbanken bietet Funktionen zum Durchführen der Retrieval-Aufgabe. Projekte wie FAISS, Weaviate, Jina, Pinecone und Milvus ermöglichen schnelle Vergleiche zwischen Vektoren, selbst wenn es davon Hunderttausende und mehr gibt.

Wer die semantische Suche für Dokumente im zweiten Colab Notebook zum Artikel ausprobieren möchte, muss zunächst die Dokumentvektoren berechnen:

# Initialisieren des DPR
dpr_retriever = DensePassageRetriever(document_store)

# Berechnen der Dokumentvektoren 
document_store.update_embeddings(dpr_retriever)


Danach kann die Suchanfrage "baratheon family members" über eine DocumentSearchPipeline erfolgen:

from haystack.pipelines import DocumentSearchPipeline

retrieval_pipeline = DocumentSearchPipeline(dpr_retriever)
res = retrieval_pipeline.run(
    query="Joffrey",
    params={"Retriever": {"top_k": 3}},
)
print_documents(res, max_text_len=200)