Come costruire un motore di ricerca testuale?


8

Sto avendo una stringa HTML e voglio scoprire se una parola fornita è rilevante in quella stringa.

La pertinenza potrebbe essere misurata in base alla frequenza nel testo.

Un esempio per illustrare il mio problema:

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

Ora voglio testare alcune altre parole:

bike repairs
dog poo

bike repairsdovrebbe essere contrassegnato come pertinente mentre dog poonon dovrebbe essere contrassegnato come pertinente.

Domande:

  • Come si può fare?
  • Come filtrare parole ambigue come inoor

Grazie per le tue idee!

Immagino sia qualcosa che Google fa per capire quali parole chiave sono rilevanti per un sito web. Sto sostanzialmente cercando di riprodurre le loro classifiche su pagina.


Enorme argomento, dai un'occhiata a Into to IR , questo ti guida dai primi principi di base su come costruire ciò di cui stai chiedendo. Qualcosa da cercare è tf-idf, quindi renditi conto che questo non risolve tutto e guarda la probabilità bayesiana
EdChum,

Perché consideri le "riparazioni" rilevanti?
amico

Era solo un esempio. Non ci ho pensato troppo :). Immagino non sia pertinente?
Hendrik,

@Hendrik: per favore, usa @ <username> per indirizzare l'utente - SE non mi ha informato del tuo commento. Il conteggio della pertinenza è il punto chiave nei motori di ricerca (anche se normalmente si calcola quanto sia rilevante la pagina Web per una query di ricerca, ne hai bisogno, giusto?). Capisco bene che vuoi solo sapere come calcolare la pertinenza del documento per una query di ricerca quando ci sono parole simili, ma non esatte (ad esempio "bici" e, diciamo, "ciclista")?
amico

Immagino tu stia chiedendo due cose. Uno è un problema di ricerca piuttosto ben compreso. Puoi semplicemente usare Solr o Elasticsearch per fare il lavoro pesante per te. Entrambi possono trovare documenti pertinenti in una raccolta ponderando i colpi. Tuttavia, se si desidera una comprensione semantica più approfondita del testo (ovvero "riparazione" non è menzionata ma un'attività tipica in un negozio di biciclette), il motore di ricerca puro potrebbe non funzionare.
Verifica il

Risposte:


3
  • pre-elaborare i tuoi documenti (alcuni passaggi potrebbero essere saltati)
  • utilizzare un modello Vector Space per rappresentare documenti (è possibile utilizzare TF, il già citato TF-IDF o altri modelli)
  • fare lo stesso con la query: preelaborare e rappresentarlo nello spazio vettoriale
  • trova i documenti più simili calcolando la somiglianza vettoriale (ad es. usando la somiglianza del coseno )

Questo è uno schema del processo di recupero delle informazioni

Introduzione all'Information Retrieval di Christopher D. Manning, Prabhakar Raghavan e Hinrich Schütze è un ottimo libro per iniziare in IR.


Oppure usa Apache Solr per ottenere tutto ciò di cui hai bisogno (o Apache Lucene , utilizzato da Solr, per creare la tua applicazione)


1

Ricordo molto tempo fa che giocavo con Elastic Search (il sito web ora è molto diverso da quello che ricordo). Ci sono alcune cose su come trattare il linguaggio umano qui: http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/languages.html

Tieni presente che la ricerca elastica è come un grande bazooka per il tuo problema. Se il tuo problema è molto semplice, forse vuoi andare da zero. Ci sono alcuni documenti sul web al riguardo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.