algorithm autocomplete n-gram phrases

algorithm - Predicción de frases en lugar de solo la siguiente palabra



meta tags seo 2018 (1)

Para esta pregunta, debe definir qué es lo que considera que es una finalización válida, entonces debería ser posible encontrar una solución.

En el ejemplo que has dado, "el gato en el sombrero" es mucho mejor que "el gato en el". Podría interpretar esto como "debería terminar con un sustantivo" o "no debería terminar con palabras demasiado comunes".

  1. Ha restringido el uso de "datos de texto etiquetados", pero puede usar un modelo preestablecido (por ejemplo, NLTK, spacy, StanfordNLP) para adivinar las partes del discurso e intentar restringir las predicciones para que solo completen frases nominales (o secuencia terminando en sustantivo). Tenga en cuenta que no necesariamente tendrá que etiquetar todos los documentos alimentados en el modelo, sino solo aquellas frases que mantenga en su autocompletar db.

  2. Alternativamente, puede evitar terminaciones que terminan en palabras vacías (o palabras de muy alta frecuencia). Tanto "en" como "el" son palabras que aparecen en casi todos los documentos en inglés, por lo que podría encontrar experimentalmente un límite de frecuencia (no puede terminar en una palabra que aparece en más del 50% de los documentos) que lo ayude a filtrar. También puede ver frases: si el final de la frase es mucho más común como una frase más corta, no tiene sentido etiquetarlo, ya que el usuario podría hacerlo por sí mismo.

  3. En última instancia, podría crear un conjunto etiquetado de instancias buenas y malas e intentar crear un reordenamiento supervisado basado en funciones de palabras; ambas ideas anteriores podrían ser características sólidas en un modelo supervisado (frecuencia del documento = 2, etiqueta pos = 1) . Esto es típicamente cómo los motores de búsqueda con datos pueden hacerlo. Tenga en cuenta que no necesita estadísticas de búsqueda o usuarios para esto, solo una disposición para etiquetar las 5 terminaciones top para unos cientos de consultas. Crear una evaluación formal (que se puede ejecutar de manera automatizada) probablemente sea útil al tratar de mejorar el sistema en el futuro. Cada vez que observe una finalización incorrecta, podría agregarla a la base de datos y hacer algunas etiquetas; con el tiempo, un enfoque supervisado mejoraría.

Para una aplicación que creamos, estamos utilizando un modelo estadístico simple para la predicción de palabras (como Autocompletar de Google ) para guiar la búsqueda.

Utiliza una secuencia de ngrams recopilada de un gran corpus de documentos de texto relevantes. Al considerar las palabras anteriores N-1, sugiere las 5 "palabras siguientes" más probables en orden descendente de probabilidad, usando Katz back-off .

Nos gustaría extender esto para predecir frases (palabras múltiples) en lugar de una sola palabra. Sin embargo, cuando pronosticamos una frase, preferimos no mostrar sus prefijos.

Por ejemplo, considere la entrada the cat .

En este caso nos gustaría hacer predicciones como the cat in the hat , pero no the cat in y no the cat in the .

Suposiciones

  • No tenemos acceso a las estadísticas de búsqueda anteriores

  • No tenemos datos de texto etiquetados (por ejemplo, no conocemos las partes del discurso)

¿Cuál es una forma típica de hacer este tipo de predicciones de palabras múltiples? Hemos probado la ponderación multiplicativa y aditiva de frases más largas, pero nuestras ponderaciones son arbitrarias y no se ajustan a nuestras pruebas.