¿Cómo funciona Google "¿Quiso decir?" ¿Funciona el algoritmo? [cerrado]

Resuelto Andrew Harry asked hace 54 años • 18 respuestas

He estado desarrollando un sitio web interno para una herramienta de gestión de cartera. Hay una gran cantidad de datos de texto, nombres de empresas, etc. Me ha impresionado mucho la capacidad de algunos motores de búsqueda para responder muy rápidamente a consultas con "¿Quiso decir: xxxx?".

Necesito poder responder inteligentemente a la consulta de un usuario y responder no sólo con resultados de búsqueda sin procesar sino también con un "¿Quiso decir?". respuesta cuando hay una respuesta alternativa muy probable, etc.

[Estoy desarrollando en ASP.NET (VB - ¡no me lo tomes en cuenta!)]

ACTUALIZACIÓN: OK, ¿cómo puedo imitar esto sin los millones de 'usuarios no pagos'?

  • ¿Generar errores tipográficos para cada término "conocido" o "correcto" y realizar búsquedas?
  • ¿Algún otro método más elegante?
Andrew Harry avatar Jan 01 '70 08:01 Andrew Harry
Aceptado

Aquí está la explicación directamente de la fuente (casi)

¡Busca 101!

a las 22:03

¡Vale la pena ver!

Básicamente y según Douglas Merrill ex CTO de Google es así:

1) Escribes una palabra (mal escrita) en Google

2) No encuentras lo que buscas (no hagas clic en ningún resultado)

3) Te das cuenta de que escribiste mal la palabra y la reescribes en el cuadro de búsqueda.

4) Encuentras lo que buscas (has clic en los primeros enlaces)

Este patrón multiplicado millones de veces, muestra cuáles son los errores ortográficos más comunes y cuáles son las correcciones más "comunes".

De esta manera, Google puede ofrecer casi instantáneamente corrección ortográfica en todos los idiomas.

Además, esto significa que si de la noche a la mañana todos empiezan a deletrear noche como "nigth", Google sugeriría esa palabra.

EDITAR

@ThomasRutter: Douglas lo describe como "aprendizaje automático estadístico".

Saben quién corrige la consulta, porque saben qué consulta proviene de qué usuario (usando cookies)

Si los usuarios realizan una consulta y solo el 10% de los usuarios hacen clic en un resultado y el 90% regresa y escribe otra consulta (con la palabra corregida) y esta vez ese 90% hace clic en un resultado, entonces saben que han encontrado una corrección.

También pueden saber si se trata de consultas "relacionadas" de dos diferentes, porque tienen información de todos los enlaces que muestran.

Además, ahora incluyen el contexto en el corrector ortográfico, por lo que incluso pueden sugerir palabras diferentes según el contexto.

Vea esta demostración de google wave (@ 44m 06s ) que muestra cómo se tiene en cuenta el contexto para corregir la ortografía automáticamente.

Aquí se explica cómo funciona ese procesamiento del lenguaje natural.

Y finalmente, aquí hay una demostración increíble de lo que se puede hacer agregando traducción automática ( @ 1h 12m 47s ) a la mezcla.

He agregado anclajes de minutos y segundos a los videos para saltar directamente al contenido, si no funcionan, intente recargar la página o desplazarse manualmente hasta la marca.

OscarRyz avatar Nov 20 '2008 23:11 OscarRyz

Encontré este artículo hace algún tiempo: Cómo escribir un corrector ortográfico , escrito por Peter Norvig (Director de Investigación de Google Inc.).

Es una lectura interesante sobre el tema de la "corrección ortográfica". Los ejemplos están en Python pero son claros y sencillos de entender, y creo que el algoritmo se puede traducir fácilmente a otros idiomas.

A continuación sigue una breve descripción del algoritmo. El algoritmo consta de dos pasos, preparación y verificación de palabras.

Paso 1: Preparación: configuración de la base de datos de Word

Lo mejor es si puedes utilizar palabras de búsqueda reales y su aparición. Si no lo tiene, puede utilizar un gran conjunto de texto. Cuente la aparición (popularidad) de cada palabra.

Paso 2. Comprobación de palabras: encontrar palabras similares a la marcada

Similar significa que la distancia de edición es baja (normalmente 0-1 o 0-2). La distancia de edición es el número mínimo de inserciones/eliminaciones/cambios/intercambios necesarios para transformar una palabra en otra.

Elija la palabra más popular del paso anterior y sugiérala como corrección (si no es la palabra en sí).

Davide Gualano avatar Nov 20 '2008 23:11 Davide Gualano

Para conocer la teoría del algoritmo "¿Quiso decir?", puede consultar el Capítulo 3 de Introducción a la recuperación de información. Está disponible en línea de forma gratuita. La sección 3.3 (página 52) responde exactamente a su pregunta. Y para responder específicamente a tu actualización sólo necesitas un diccionario de palabras y nada más (incluidos millones de usuarios).

Szere Dyeri avatar Nov 21 '2008 00:11 Szere Dyeri

Hmm... Pensé que Google usaba su vasto corpus de datos (Internet) para realizar un PNL (procesamiento del lenguaje natural) serio.

Por ejemplo, tienen tantos datos de todo Internet que pueden contar el número de veces que ocurre una secuencia de tres palabras (conocida como trigrama ) . Entonces, si ven una oración como: "concierto rosa frugr", podrían ver que tiene pocas visitas y luego buscar el "concierto rosa *" más probable en su corpus.

Aparentemente solo hacen una variación de lo que decía Davide Gualano, así que definitivamente lea ese enlace. Por supuesto, Google utiliza todas las páginas web que conoce como corpus, lo que hace que su algoritmo sea especialmente eficaz.

Claudiu avatar Nov 20 '2008 23:11 Claudiu

Supongo que utilizan una combinación de un algoritmo de distancia de Levenshtein y la gran cantidad de datos que recopilan sobre las búsquedas que se realizan. Podrían realizar un conjunto de búsquedas que tengan la distancia de Levenshtein más corta desde la cadena de búsqueda ingresada y luego elegir la que tenga más resultados.

Jim Burger avatar Nov 20 '2008 23:11 Jim Burger