¿Qué algoritmo (s) se pueden usar para lograr una predicción de la siguiente palabra razonablemente buena?

10

¿Cuál es una buena forma de implementar la "predicción de la siguiente palabra"? Por ejemplo, el usuario escribe "Yo soy" y el sistema sugiere "a" y "no" (o posiblemente otros) como la siguiente palabra. Conozco un método que utiliza cadenas de Markov y algunos textos de entrenamiento (obviamente) para lograr esto más o menos. Pero leí en alguna parte que este método es muy restrictivo y se aplica a casos muy simples.

Entiendo los conceptos básicos de las redes neuronales y los algoritmos genéticos (aunque nunca los he usado en un proyecto serio) y tal vez podrían ser de alguna ayuda. Me pregunto si hay algún algoritmo que, dado el texto de capacitación adecuado (p. Ej., Artículos periodísticos y la propia escritura del usuario) pueda presentar sugerencias razonablemente apropiadas para la siguiente palabra. Si no (enlaces a) algoritmos, los métodos generales de alto nivel para atacar este problema son bienvenidos.

Yati Sagade
fuente

Respuestas:

9

Echa un vistazo a los n-gramos . Un n-gramo es una secuencia de npalabras. En tu caso quieres nserlo 3, ya que necesitas dos query wordsy a resulting word. Un 3 gramos sería, por ejemplo, "Estoy cansado", otro "Estoy feliz".

Lo que necesita es una colección de estos 3 gramos que se recopilan en su idioma de destino, por ejemplo, inglés. Como no puede recopilarlo sobre todo lo que se haya escrito en inglés, debe realizar una selección. Esa selección de textos representativos se llama a corpus. Si tu corpus es bueno, te dirá con qué frecuencia se produce una secuencia de tres palabras específicas juntas en inglés. A partir de eso, puede calcular la probabilidad de un 3 gramos.

Recopilar este tipo de datos es la parte más difícil. Una vez que tenga la lista de todos los 3 gramos junto con su probabilidad, puede filtrar su lista a todos los 3 gramos comenzando con "Yo soy". Luego, ordena toda esta lista por probabilidad y voilà: tu predicción.

sebastiangeiger
fuente
Muy bien, ¿y hay un valor óptimo nque arroje buenos resultados?
Verás
2
Bueno, un mayor nda como resultado una lista más larga que le dará una predicción más precisa, pero también es más costosa de buscar. Por lo tanto, es una compensación entre la precisión y el tiempo de cálculo.
sebastiangeiger
2
Además, necesita un corpus más grande para que los n-gramos más grandes sean prácticamente útiles.
liori
44
um esto es literalmente una Cadena de Markov ... no solo eso, sino literalmente el ejemplo más libro de texto ...
Justin L.
2

Parece que el dominio del problema es un subconjunto de búsqueda de cadenas. Al extender las palabras para incluir espacios en blanco, la coincidencia de cadenas difusa se puede aplicar aquí.

Es posible que desee considerar / permitir todas las entradas del usuario como una palabra durante el entrenamiento además de su diccionario. Esto le permite sugerir la siguiente palabra, pero también sugiere autocompletar palabras o frases.

Aquí hay un enlace a una compilación de algoritmos de búsqueda de cadenas difusas

http://ntz-develop.blogspot.com/2011/03/fuzzy-string-search.html

Dorward Villaruz
fuente
1

Está buscando un modelo de lenguaje (estadístico) .

Un modelo de lenguaje estadístico asigna una probabilidad a una secuencia de m palabras P(w_1,...,w_m)mediante una distribución de probabilidad ...

En el reconocimiento de voz y en la compresión de datos, dicho modelo intenta capturar las propiedades de un idioma y predecir la siguiente palabra en una secuencia de voz ...

usuario3287
fuente
Guau. Pero creo que la respuesta de @ sebastiangeiger explica esto para n = 3.
yati sagade 01 de
Su respuesta describe un modelo de lenguaje particular, a saber, modelos de n-gramas. Existen otros modelos de lenguaje, por ejemplo, modelos de lenguaje sintáctico ( goo.gl/ffPOg ).
user3287