Un programa de PNL es PNL porque realiza el procesamiento del lenguaje natural, es decir: comprende el lenguaje, al menos lo suficiente como para descubrir cuáles son las palabras según la gramática del lenguaje. Un programa de PNL le diría que una palabra en particular en una oración en particular es un verbo, por ejemplo, y que otra es un artículo.
Su código es una forma (muy simplista) de Machine Learning, donde el código “aprende” las estadísticas de pares de palabras del texto de muestra que usted ingresa y luego usa esa información para producir predicciones. Su código sería un mejor ejemplo de la parte “Aprendizaje” de ML si lo divide en dos fases: la primera lee su texto, produce el recuento de pares de palabras y los almacena en un archivo / base de datos; luego la segunda fase (que podría ser un programa completamente diferente) lee la información “aprendida” y la usa para las predicciones. Más complejo, sí, pero esto demostraría que hay una parte de “aprendizaje” independiente de la parte de “uso”.
De hecho, su código es una forma de predicción probabilística en la que usted (implícitamente) determina la probabilidad de pares de palabras, de la forma [matemática] (anterior, siguiente) [/ matemática], y luego, conociendo una “palabra anterior” dada busque todos los pares que lo tengan en la primera posición, seleccione el par con la mayor probabilidad (o recuento) y escriba la “siguiente palabra” como su predicción.
- ¿En qué tipo de situaciones debemos emplear las redes neuronales recurrentes de Vanilla en lugar de LSTM?
- ¿Cuándo debo usar inferencia variacional versus maximización de expectativas para ajustar un modelo de mezcla gaussiana?
- ¿Puedo confiar en un modelo de clasificación con validación cruzada y precisión de prueba decentes incluso si el número de observaciones es menor que el de las características?
- ¿Cómo cambio de una carrera de software integrado a una carrera en aprendizaje automático?
- ¿Qué es el algoritmo de agrupación de Markov?
Este método funciona, hasta cierto punto, para ejemplos simples como muestra en su código. Para corpus más complejos (también conocidos como grandes cuerpos de texto), puede producir predicciones mucho mejores mediante el uso de tripletes de palabras, cuadruplets o más grandes. Por supuesto, sus estructuras de datos ahora son más complejas y requieren una cuidadosa reflexión para evitar ralentizaciones severas en la fase de búsqueda.
Sin siquiera hacer PNL, puede extraer y determinar una gran cantidad de información de una manera “ingenua” simplemente usando distribuciones de probabilidad y el hecho de que no todos los pares de palabras, trillizos, etc. tienen la misma probabilidad de existir y, de hecho, muchos grupos de palabras simplemente nunca se usan en texto gramaticalmente correcto.
Por cierto, muchos “teclados virtuales” y “métodos de entrada” similares utilizan una forma similar de predicción de palabras para ayudar al usuario a escribir más rápido y correctamente.
Disfruta de tu incursión inicial en el aprendizaje automático probabilístico. Muchos de nosotros comenzamos a hacer este mismo tipo de ejercicios y luego, después de comprender sus limitaciones (y por qué existen esas limitaciones), “nos graduamos” a sistemas más complejos.