So erstellen Sie eine semantische Suche für eine bestimmte Domain

19

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:

  1. Ähnlich wie dieser Satz
  2. Hat einen Teil eines Satzes, der der Phrase ähnlich ist
  3. 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 einfach

  • Ich 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:

  1. 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.

  2. 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.

  3. 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.

  4. 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

Jickson
quelle
Gut geschriebene Frage - können Sie 5 weitere Beispiele für Suchbegriffe hinzufügen? Sind es immer ein bis drei Wortphrasen oder können die Suchbegriffe länger sein? Sie sind auf dem richtigen Weg
Adnan S
Hallo Adnan, der Suchbegriff besteht immer aus ein bis drei Wörtern. Beispiel: Kauferfahrung, Fahrkomfort, Infotainmentsystem, Innenausstattung, Kilometerstand, Leistung, Sitzkomfort, Verhalten der Mitarbeiter.
Jickson
Dieser Artikel könnte für Ihren Fall interessant sein: elastic.co/blog/… (Hinweis: Leverage word2vec)
Val
@Val Das ist eigentlich interessant, dass ich den gleichen Artikel erwähnen wollte, den Sie erwähnt haben, und dann Ihren Kommentar gesehen habe. Ich denke, diese Methode bringt Sie näher an das, was Sie wollen.
Nima
Vielleicht möchten Sie die Kosinusähnlichkeit untersuchen. Wie unten erläutert, werden die Zeichenfolgen in Vektoren konvertiert, die im 2D-Raum dargestellt werden können. Der Kosinuswinkel dieser beiden Vektoren wird berechnet. Dieser Winkel repräsentiert die "Ähnlichkeit" zwischen den beiden Saiten. Hier ist ein schöner Artikel darüber medium.com/swlh/playing-with-word-vectors-308ab2faa519
sagar1025

Antworten:

5

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: Geben Sie hier die Bildbeschreibung ein

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 trainierenGeben Sie hier die Bildbeschreibung ein

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:

Geben Sie hier die Bildbeschreibung ein

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 .

Hardit Singh
quelle
1

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):

{
  Get{
    Things{
      Publication(
        explore: {
          concepts: ["fashion"],
          certainty: 0.7,
          moveAwayFrom: {
            concepts: ["finance"],
            force: 0.45
          },
          moveTo: {
            concepts: ["haute couture"],
            force: 0.85
          }
        }
      ){
        name
      }
    }
  }
}

Wenn Sie Ihr Diagrammschema beispielsweise anhand des Klassennamens "Satz" strukturieren, sieht eine ähnliche Abfrage möglicherweise folgendermaßen aus:

{
  Get{
    Things{
      Sentence(
        # Explore (i.e., semantically) for "Buying Experience"
        explore: {
          concepts: ["Buying Experience"]
        }
        # Result must include the word "car" 
        where: {
          operator: Like
          path: ["content"]
          valueString: "*car*"
        }
      ){
        content
      }
    }
  }
}

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.

Bob van Luijt
quelle
0

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.

Solo987
quelle