Wie erstelle ich eine Textsuchmaschine?

8

Ich habe eine HTML-Zeichenfolge und möchte herausfinden, ob ein von mir angegebenes Wort in dieser Zeichenfolge relevant ist.

Die Relevanz könnte anhand der Häufigkeit im Text gemessen werden.

Ein Beispiel zur Veranschaulichung meines Problems:

this is an awesome bike store
bikes can be purchased online.
the bikes we own rock.
check out our bike store now

Jetzt möchte ich ein paar andere Wörter testen:

bike repairs
dog poo

bike repairssollte als relevant markiert werden, während dog poonicht als relevant markiert werden sollte.

Fragen:

  • Wie könnte das gemacht werden?
  • Wie filtere ich mehrdeutige Wörter wie inoder heraus?or

Danke für deine Ideen!

Ich denke, es ist etwas, was Google tut, um herauszufinden, welche Keywords für eine Website relevant sind. Ich versuche im Grunde, ihre On-Page-Rankings zu reproduzieren.

Hendrik
quelle
Riesiges Thema, werfen Sie einen Blick auf Into to IR . Hier erfahren Sie, wie Sie das erstellen, wonach Sie fragen. Etwas zu suchen ist tf-idf, dann erkennen Sie, dass dies nicht alles löst und schauen Sie sich die Bayes'sche Wahrscheinlichkeit an
EdChum
Warum halten Sie "Reparaturen" für relevant?
Freund
War nur ein Beispiel. Ich habe nicht zu viel darüber nachgedacht :). Ich denke es ist nicht relevant?
Hendrik
@Hendrik: Bitte verwenden Sie @ <Benutzername>, um den Benutzer anzusprechen - SE hat mich nicht über Ihren Kommentar informiert. Das Zählen der Relevanz ist der entscheidende Punkt in Suchmaschinen (obwohl Sie normalerweise berechnen, wie relevant die Webseite für eine Suchanfrage ist, brauchen Sie sie, oder?). Verstehe ich es richtig, dass Sie nur wissen möchten, wie die Relevanz eines Dokuments für eine Suchabfrage berechnet wird, wenn ähnliche, aber nicht genaue Wörter vorhanden sind (z. B. "Fahrrad" und beispielsweise "Radfahrer")?
Freund
Ich denke, Sie fragen nach zwei Dingen. Eines ist ein ziemlich gut verstandenes Suchproblem. Sie können einfach Solr oder Elasticsearch verwenden, um das schwere Heben für Sie zu erledigen. Beide können relevante Dokumente in einer Sammlung finden, indem sie Treffer gewichten. Wenn Sie jedoch ein tieferes semantisches Verständnis des Textes wünschen (dh "Reparatur" wird nicht erwähnt, sondern eine typische Aktivität in einem Fahrradgeschäft), kann die reine Suchmaschine ins Stocken geraten.
eckes

Antworten:

3
  • Verarbeiten Sie Ihre Dokumente vor (einige der Schritte werden möglicherweise übersprungen).
  • Verwenden Sie ein Vector Space-Modell , um Dokumente darzustellen (Sie können TF, das oben genannte TF-IDF oder andere Modelle verwenden).
  • Machen Sie dasselbe mit der Abfrage: preprocess und stellen Sie sie im Vektorraum dar
  • Finden Sie die ähnlichsten Dokumente, indem Sie die Vektorähnlichkeit berechnen (z. B. unter Verwendung der Kosinusähnlichkeit ).

Das ist eine übersicht der Information Retrieval Prozess

Einführung in Information Retrieval von Christopher D. Manning, Prabhakar Raghavan und Hinrich Schütze ist ein sehr gutes Buch für den Einstieg in die IR.


Oder verwenden Sie einfach Apache Solr , um alles, was Sie brauchen, sofort einsatzbereit zu machen (oder Apache Lucene , das von Solr verwendet wird, um Ihre eigene Anwendung zu erstellen).

Alexey Grigorev
quelle
1

Ich erinnere mich, dass ich vor langer Zeit mit Elastic Search gespielt habe (die Website unterscheidet sich jetzt sehr von dem, woran ich mich erinnere). Hier gibt es einige Dinge zum Umgang mit der menschlichen Sprache: http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/languages.html

Seien Sie gewarnt, dass die elastische Suche für Ihr Problem wie eine große Panzerfaust ist. Wenn Ihr Problem sehr einfach ist, möchten Sie vielleicht von vorne anfangen. Es gibt einige Dokumente im Web darüber.

eri0o
quelle