Bild-Schulung-Solr-in-a-Nutshell

Warum semantisch Suchen?

Semantische Suche ist in aller Munde und hat in den letzten Jahren einen erheblichen Sprung gemacht, was Ihre Bedeutung im Rahmen von Suchtechnologie angeht.
Doch was ist Semantische Suche eigentlich? Um diese Frage zu beantworten, ist es notwendig zu verstehen, was Semantik im sprachwissenschaftlichen Sinne bedeutet. Semantik ist die Lehre der Bedeutung. Hierbei geht es also nicht mehr darum, wie beispielsweise ein Wort geschrieben wird, sondern was es bedeutet. Dies kann oft nicht dadurch erschlossen werden, dass man das Wort, dessen Bedeutung versucht wird zu entschlüsseln, zu betrachten. Man muss sich in der Regel den Kontext ansehen, in dem das Wort steht.
Das Beispiel, das häufig zur Verdeutlichung dieser Situation verwendet wird, ist das Wort „Bank“. Gemeint sein kann die Sitzgelegenheit oder das Geldinstitut. Ohne den Kontext zu betrachten, ist es unmöglich festzustellen welche der beiden Bedeutungen hier die richtige ist. Dazu kann man die Einbettung des Wortes auf Satzebene betrachten: „Ein Mann sitzt auf einer Bank“. Das menschliche Gehirn weiß hier ohne überlegen zu müssen, dass mit dem Wort „Bank“ hier die Sitzgelegenheit gemeint ist.
Was hat das nun mit Suche zu tun? Traditionelle Suchmaschinen bzw. Software im Bereich der Suchtechnologie nehmen in der Regel Text, verarbeiten ihn auf eine bestimmte Art und Weise (Trennen an Leerzeichen, Normalisierung auf Kleinbuchstaben zur besseren Auffindbarkeit etc.) und legen ihn in einem Index ab, der dann von Suchapplikationen durchsucht wird. Wenn wir den Satz „Ein Mann sitzt auf einer Bank“ indexieren könnten folgende Terme in unserem Index landen: ein, mann, sitzt, auf, einer, bank. Legen wir nun einen weiteren Satz in unserem Index ab: „Ein Mann überfiel eine Bank“. Behelfen wir uns des Konzepts „Inverted Index“, um die beiden
Datensätze zu repräsentieren:

Inverted Index für die beiden Beispielsätze

TermDokument
ein1,2
mann1,2
sitzt1
auf1
einer1
bank1,2
überfiel2
eine2

Ein Benutzer kommt nun auf die Suchapplikation und sucht nach Geldinstitut. Er findet nichts. Eine Erweiterung des Terms um das Synonym „Geldinstitut“ zur Indexierungszeit bringt uns auch nicht weiter, denn die Sitzgelegenheit würde so auch gefunden werden, was der Präzision der Suche schadet.
Also muss ein Weg gefunden werden, der (bevor die Terme im Index landen) herausfinden kann, um was es im Text eigentlich geht. Der Satz „Ein Mann überfiel eine Bank“ müsste mit dem Term „Geldinstitut“ in Verbindung gebracht werden, der Satz „Ein Mann sitzt auf einer Bank“ mit dem Term „Sitzgelegenheit“. Dieses stark vereinfachte Szenario nennt man Content Enhancement, also eine Anreicherung des Inhalts. Das macht eine Kontextanalyse des zu indexierenden Textes notwendig.
Doch selbst wenn wir diese Hürde nehmen können, besteht noch ein anderes Problem: Sucht ein Benutzer nach „Bank“, weiß niemand außer der Benutzer selbst, ob er nach einer Sitzgelegenheit oder nach einem Geldinstitut sucht. Also muss zusätzlich noch ermittelt werden, was die Absicht des Benutzers ist. Das ist eine sehr schwere Aufgabe, vor allem, wenn nur ein Suchterm gegeben ist.
Wie können diese Probleme nun gelöst werden? Das Softwareangebot für die Lösung unterschiedlicher Probleme ist in den letzten Jahren rasch gewachsen und diese Produkte haben sich stetig verbessert. Die Apache Software Foundation hat unter anderen die Top-Level-Projekte Stanbol, UIMA, Mahout, die für unterschiedliche Aufgabenstellungen geeignet sind. Natürlich gibt es auch kommerzielle Softwareprodukte, wie Smartlogic Semaphore, die semantische Problemstellungen lösen können.

In zukünftigen Blogs werden einige Problemstellungen konkreter benannt und deren Lösung behandelt.

Johannes Brucher

Johannes Brucher