¿Cómo construir un motor de búsqueda textual?

8

Tengo una cadena HTML y quiero saber si una palabra que proporciono es relevante en esa cadena.

La relevancia podría medirse según la frecuencia en el texto.

Un ejemplo para ilustrar mi problema:

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

Ahora quiero probar algunas otras palabras:

bike repairs
dog poo

bike repairsdebe marcarse como relevante, mientras dog pooque no debe marcarse como relevante.

Preguntas:

  • ¿Como se puede hacer esto?
  • Cómo filtrar palabras ambiguas como inoor

Gracias por tus ideas!

Supongo que es algo que Google hace para descubrir qué palabras clave son relevantes para un sitio web. Básicamente estoy tratando de reproducir sus clasificaciones en la página.

Hendrik
fuente
Enorme tema, eche un vistazo a Into to IR , esto lo guiará desde los primeros principios básicos sobre cómo construir lo que está preguntando. Algo para buscar es tf-idf, luego date cuenta de que esto no resuelve todo y observa la probabilidad bayesiana
EdChum
¿Por qué considera que las "reparaciones" son relevantes?
amigo el
Fue solo un ejemplo. No pensé demasiado en eso :). Supongo que no es relevante?
Hendrik
@Hendrik: utilice @ <nombre de usuario> para dirigirse al usuario: SE no me notificó su comentario. Contar con la relevancia es el punto clave en los motores de búsqueda (aunque normalmente calcula qué tan relevante es la página web para una consulta de búsqueda, la necesita, ¿verdad?). ¿Entiendo bien que solo desea saber cómo calcular la relevancia del documento para una consulta de búsqueda cuando hay palabras similares, pero no exactas (por ejemplo, "bicicleta" y, por ejemplo, "ciclista")?
amigo
Supongo que estás pidiendo dos cosas. Uno es un problema de búsqueda bastante bien entendido. Puede usar Solr o Elasticsearch para hacer el trabajo pesado por usted. Ambos pueden encontrar documentos relevantes en una colección ponderando los golpes. Sin embargo, si desea una comprensión semántica más profunda del texto (es decir, "reparación" no se menciona sino una actividad típica en una tienda de bicicletas), entonces el motor de búsqueda puro podría fallar.
Eckes

Respuestas:

3
  • preprocese sus documentos (se pueden omitir algunos de los pasos)
  • use un modelo de espacio vectorial para representar documentos (puede usar TF, TF-IDF mencionado anteriormente u otros modelos)
  • hacer lo mismo con la consulta: preprocesar y representarlo en el espacio vectorial
  • encontrar los documentos más similares calculando la similitud del vector (por ejemplo, utilizando la similitud del coseno )

Ese es un resumen del proceso de recuperación de información

Introducción a la recuperación de información por Christopher D. Manning, Prabhakar Raghavan e Hinrich Schütze es un muy buen libro para iniciarse en IR.


O simplemente use Apache Solr para sacar todo lo que necesita de la caja (o Apache Lucene , que Solr usa, para construir su propia aplicación)

Alexey Grigorev
fuente
1

Recuerdo hace mucho tiempo jugar con Elastic Search (el sitio web es muy diferente ahora de lo que recuerdo). Aquí hay algunas cosas sobre el manejo del lenguaje humano: http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/languages.html

Tenga en cuenta que la búsqueda elástica es como una gran bazuca para su problema. Si su problema es muy simple, tal vez quiera ir desde cero. Hay algunos documentos en la web al respecto.

eri0o
fuente