Quiero comparar una consulta con varios documentos y asignarles una clasificación. ¿Qué algoritmo necesito usar?

Puede usar un algoritmo simple Bolsa de palabras. Pero hay algunas desventajas en este método. Permítanme explicar la Bolsa de palabras en detalle.

Digamos que tus documentos son como

  1. Donald Trump es el presidente de EE. UU.
  2. El león es el rey de la jungla
  3. La sorprendente victoria de Roger Federer en el Abierto de Australia provocó una ola de amor en las redes sociales.

Ahora, ignorando las palabras de detención como a, an, the etc (consulte la biblioteca nltk python como referencia) puede formar un diccionario de palabras como

1) Donald

2) Trump

3) presidente

4) EE. UU.

5) león

6) Rey, etc.

y contar las ocurrencias de cada palabra en ese documento

Ej: Documento 1: [1,1,1,1,0,0, 0…. ] etc. Aquí el primer índice es para la palabra Donald y el valor indica el número de veces que la palabra ha aparecido en ese documento.

Ahora, cuando reciba una consulta, simplemente recupere todas las palabras y calcule el rango de cada documento como el número de veces que la palabra ha aparecido en ese documento / Número total de veces que la palabra ha aparecido (en todos los documentos). Ahora multiplique todas las probabilidades para cada documento redactar y asignar un rango a cada documento.

Ej: ¿Quién es el rey de la jungla?

Nuestro diccionario tiene palabras Rey y jungla, por lo que las probabilidades son

Documento 1: 0

Documento 2: 1

Documento 3: 0. Lo siento, debería haber tomado mejores ejemplos, pero entiendes el punto.

Retirada de este método: no tiene en cuenta la secuencia de aparición de palabras. Sequence do matter.so está disponible para la compra, puede usar un modelo bigram o un modelo de tres gramos junto con una bolsa de palabras.

Bi-gram: Bigram – Wikipedia

N-gramo: n-gramo – Wikipedia

Usar esto le dará resultados casi relevantes en la mayoría de los casos, pero no es suficiente. A veces tendrá que comprender el contexto de la consulta. Con el reconocimiento de entidad con nombre (NER) puede lograrlo. Pero si su requisito es la búsqueda básica de documentos entonces esto debería ser suficiente :). Si no, lea acerca de NER y los sistemas de respuesta a preguntas. Puede encontrar los tutoriales aquí

More Interesting

Cómo hacer un software de árbol de decisiones más interactivo

¿Cuál es la forma más eficiente de implementar la unión en varias tablas (> 5 tablas) usando SQL / ANSI SQL?

Dado un gráfico con vértices 2N de modo que existan dos vértices P y Q, con cada ruta de P a Q que contenga al menos N + 1 bordes, ¿cuál es el número mínimo de vértices que debemos eliminar para desconectar P y Q?

¿Qué es un algoritmo para aprender nuevos lenguajes de programación?

¿Puedo obtener una breve descripción general del documento 'Generación precisa de hologramas utilizando el método basado en capas y el algoritmo de transformación de Fourier iterativo'?

¿Cómo implementas quicksort en c? Sé que hay respuestas disponibles en línea, pero estoy buscando idealmente la forma más elegante.

¿Cuál es la mejor fuente disponible para aprender estructuras de datos y algoritmos para un principiante?

Cómo comprender la recursividad en backtracking de campo profundo y todo relacionado, programación dinámica, etc.

¿Cuál es la relación entre las cadenas de Markov y los procesos de Poisson?

¿Cuál es el algoritmo Google + 1 utilizado para Sparks?

Cómo resolver la consulta de suma de potencia de rango usando treap

¿Obtuviste un trabajo de ingeniería de software al aprender algoritmos a través de MOOC?

Cómo implementar el algoritmo de colocación dinámica para Hadoop

¿Cómo se hace un motor de chatbot como Wit.ai o API.AI? ¿Cómo puedo hacer una versión simple? Proporcionarme algunos algoritmos y técnicas.

¿Qué libro debo comprar para aprender sobre algoritmos: estructuras de datos y algoritmos simplificados por Narsimha Karumanchi o Introducción a los algoritmos (CLRS)?