Es gibt ein Problem, das wir zu lösen versuchen, wenn wir eine semantische Suche in unserem Datensatz durchführen möchten, dh wir haben domänenspezifische Daten (Beispiel: Sätze, die über Automobile sprechen)
Unsere Daten sind nur eine Reihe von Sätzen. Wir möchten einen Satz geben und die folgenden Sätze zurückerhalten:
- Ähnlich wie dieser Satz
- Hat einen Teil eines Satzes, der der Phrase ähnlich ist
- Ein Satz, der kontextuell ähnliche Bedeutungen hat
Lassen Sie mich versuchen, Ihnen ein Beispiel zu geben. Angenommen, ich suche nach dem Ausdruck "Kauferfahrung". Ich sollte folgende Sätze erhalten:
- Ich hätte nie gedacht, dass der Autokauf weniger als 30 Minuten dauern könnte, um zu unterschreiben und zu kaufen.
Ich fand ein Auto, das mir gefiel, und der Kaufvorgang war
unkompliziert und einfachIch habe es absolut gehasst, Auto einzukaufen, aber heute bin ich froh, dass ich es getan habe
Ich möchte die Tatsache hervorheben , dass wir nach kontextueller Ähnlichkeit suchen und nicht nur nach einer Brute-Force-Wortsuche.
Wenn der Satz andere Wörter verwendet, sollte er ihn auch finden können.
Dinge, die wir bereits versucht haben:
Offene semantische Suche Das Problem, mit dem wir hier konfrontiert waren, besteht darin, aus den uns vorliegenden Daten eine Ontologie zu generieren oder aus diesem Grund nach verfügbaren Ontologien aus verschiedenen Bereichen unseres Interesses zu suchen.
Elastische Suche (BM25 + Vektoren (tf-idf)), wir haben dies versucht, wo es ein paar Sätze gab, aber die Präzision war nicht so groß. Die Genauigkeit war ebenfalls schlecht. Wir haben es mit einem von Menschen kuratierten Datensatz versucht, der nur etwa 10% der Sätze erhalten konnte.
Wir haben versucht , verschiedene Einbettungen wie die einmal in der genannten Satz-Transformatoren und ging auch durch das Beispiel und versuchte , gegen unsere menschlichen kuratierte Reihe Bewertung und dass auch sehr geringe Genauigkeit hat.
Wir haben ELMO ausprobiert . Dies war besser, aber immer noch weniger genau als erwartet, und es gibt eine kognitive Belastung, um den Kosinuswert zu bestimmen, unter dem wir die Sätze nicht berücksichtigen sollten. Dies gilt sogar für Punkt 3.
Jede Hilfe wird geschätzt. Vielen Dank für die Hilfe im Voraus
Antworten:
Ich würde dringend empfehlen, dass Sie sich Trey Graingers Vortrag über den Aufbau eines semantischen Suchsystems ansehen => https://www.youtube.com/watch?v=4fMZnunTRF8 . Er spricht über die Anatomie eines semantischen Suchsystems und jedes der Teile, die zusammenpassen, um eine endgültige Lösung zu erhalten.
Ein gutes Beispiel für die kontextbezogene Ähnlichkeit ist die Suchmaschine von Bing:
Die ursprüngliche Abfrage hatte die Begriffe {Dosen-Soda} und die Suchergebnisse von Bing können sich auf {Dosen-Diät-Soda}, {Erfrischungsgetränke}, {ungeöffnetes Pop bei Raumtemperatur} oder {kohlensäurehaltige Getränke} beziehen. Wie hat Bing das gemacht?:
Nun, Wörter mit ähnlichen Bedeutungen erhalten ähnliche Vektoren, und dann können diese Vektoren auf einen zweidimensionalen Graphen projiziert werden, um leicht visualisiert zu werden. Diese Vektoren werden trainiert, indem sichergestellt wird, dass Wörter mit ähnlichen Bedeutungen physisch nahe beieinander liegen. Sie können Ihr eigenes vektorbasiertes Modell trainieren, indem Sie das GloVe-Modell trainieren
Je näher die Abstände der Vektoren zueinander sind, desto besser. Jetzt können Sie anhand der Entfernung ihrer Vektoren nach Abfragen für den nächsten Nachbarn suchen. Für die Abfrage {wie man Tiere davon abhält, meinen Garten zu zerstören} gibt der nächste Nachbar beispielsweise die folgenden Ergebnisse:
Mehr dazu erfahren Sie hier. Für Ihren Fall können Sie einen Schwellenwert für die maximale Entfernung finden, die ein Vektor eines Satzes von der ursprünglichen Suchabfrage haben kann, damit er als kontextuell ähnlicher Satz betrachtet wird.
Die kontextbezogene Ähnlichkeit kann möglicherweise auch durch Reduzieren der Vokabeldimension unter Verwendung von LSI (Latent Semantic Indexing) erreicht werden. Um dies in Python zu tun, empfehle ich Ihnen dringend, die Genism-Bibliothek für Python zu besuchen: https://radimrehurek.com/gensim/about.html .
quelle
Möglicherweise möchten Sie sich mit Weaviate befassen , um dieses Problem zu lösen. Es ist ein intelligenter Graph, der auf der Vektorisierung von Datenobjekten basiert .
Wenn Sie eine domänenspezifische Sprache haben (z. B. Abkürzungen), können Sie Weaviate um benutzerdefinierte Konzepte erweitern .
Möglicherweise können Sie Ihr Problem mit den Funktionen für die semantische Suche (dh
Explore{}
) oder den Funktionen für die automatische Klassifizierung lösen .Funktion erkunden
Da alle Datenobjekte vektorisiert werden, können Sie eine semantische Suche wie folgt durchführen (dieses Beispiel kommt aus den Dokumenten , Sie können es hier mit GraphQL ausprobieren):
Wenn Sie Ihr Diagrammschema beispielsweise anhand des Klassennamens "Satz" strukturieren, sieht eine ähnliche Abfrage möglicherweise folgendermaßen aus:
Hinweis:
Sie können das Diagramm auch semantisch als Ganzes untersuchen.
Automatische Klassifizierung
Eine Alternative könnte die Arbeit mit dem sein Kontext- oder KNN- Klassifizierungsmerkmalen zu arbeiten.
In Ihrem Fall können Sie den Klassensatz verwenden und ihn mit einer Klasse namens Experience verknüpfen, die die Eigenschaft hat:
buying
(Es gibt natürlich viele andere Konfigurationen und Strategien, aus denen Sie auswählen können).PS:
Dieses Video bietet etwas mehr Kontext, wenn Sie möchten.
quelle
Soweit ich weiß, gibt es meines Erachtens kein theoretisches Modell für den Aufbau einer semantischen Suchmaschine. Ich bin jedoch der Meinung, dass eine semantische Suchmaschine so konzipiert sein sollte, dass sie den spezifischen Anforderungen entspricht. Allerdings muss jede semantische Suchmaschine, die die Absicht des Benutzers sowie den Kontext des Suchbegriffs erfolgreich verstehen kann, mit der Verarbeitung natürlicher Sprache (NLP) und maschinellem Lernen als Bausteinen arbeiten.
Obwohl Suchmaschinen anders funktionieren als Suchwerkzeuge, können Sie sich auf Unternehmenssuchwerkzeuge beziehen, um eine Vorstellung von einem funktionierenden semantischen Suchmodell zu erhalten. Die New-Age-Plattformen wie 3RDi Search arbeiten nach den Prinzipien der semantischen Suche und haben sich als ideale Lösung für die unstrukturierten Daten erwiesen, mit denen Unternehmen umgehen müssen. Google arbeitet sehr wahrscheinlich an einem Modell zur Einführung einer erweiterten Semantik in Suchmaschinen.
quelle