artificial intelligence - Usando cadenas de Markov(o algo similar) para producir un IRC-bot
artificial-intelligence nlp (3)
Desea buscar la generación de texto de Ian Barber (phpir.com). Lamentablemente el sitio está fuera de línea o desconectado. Tengo una copia de su texto y quiero enviársela.
Intenté google y encontré poco que pudiera entender.
Comprendo las cadenas de Markov a un nivel muy básico: es un modelo matemático que solo depende de la información previa para cambiar los estados.
He escuchado que puedes usarlos para generar tonterías semi-inteligentes, dadas oraciones de palabras existentes para usarlas como un diccionario de clases.
No puedo pensar en los términos de búsqueda para encontrar esto, ¿puede alguien vincularme o explicarme cómo podría producir algo que dé una respuesta semiinteligente? (Si le preguntaras sobre el pastel, no empezaría a hablar de la guerra de Vietnam de la que había oído hablar)
Planeo en
- Tener este bot inactivo en los canales IRC por un rato.
- Eliminar cualquier nombre de usuario de la cadena y almacenar como oraciones o lo que sea
- Con el tiempo, utilice esto como la base de lo anterior.
Me parece que estás intentando varias cosas al mismo tiempo:
- extrayendo palabras / oraciones por ralentí en IRC
- construyendo una base de conocimiento
- escuchando un chat, analizando palabras clave
- generar alguna frase con respecto a palabras clave
Esas son básicamente tareas muy diferentes. Los modelos de Markov se utilizan a menudo para el aprendizaje automático. Aunque no veo mucho aprendizaje en tus tareas.
La respuesta de larsmans muestra cómo se generan oraciones a partir de modelos de markov basados en palabras. También puede entrenar los pesos para favorecer esos pares de palabras que otros usuarios de IRC usaron. Pero no obstante, esto no generará oraciones relacionadas con palabras clave, porque construir / refinar un modelo de Markov no es lo mismo que "conducirlo".
Puede probar los modelos ocultos de Markov (HMM) donde la salida visible son las palabras clave y los estados ocultos se crean a partir de esos pares de palabras. A continuación, podría favorecer las frases más apropiadas para palabras clave específicas de forma dinámica.
Sí, una cadena de Markov es una máquina de estado finito con transiciones de estado probabilísticas. Para generar texto aleatorio con una cadena de Markov simple de primer orden:
- Recopile estadísticas de bigram (par de palabras adyacentes) de un corpus (colección de texto).
- Hacer una cadena de Markov con un estado por palabra. Reserve un estado especial para el final del texto.
- La probabilidad de saltar del estado / palabra x a y es la probabilidad de que las palabras y inmediatamente después de x , se estimen a partir de las frecuencias relativas de bigrama en el cuerpo de entrenamiento.
- Comience con una palabra al azar x (quizás determinada por la frecuencia con la que aparece esa palabra como la primera palabra de una oración en el corpus). Luego, elija un estado / palabra y para saltar al azar, teniendo en cuenta la probabilidad de que y siga a x (la probabilidad de transición de estado). Repita hasta que llegue al final del texto.
Si quieres sacar algo semi-inteligente de esto, entonces lo mejor es entrenarlo en muchos textos cuidadosamente recopilados. La parte de "lotes" hace que produzca oraciones adecuadas (o plausibles palabras de IRC) con alta probabilidad; la parte "cuidadosamente recogida" significa que usted controla lo que se habla. La introducción de cadenas de Markov de orden superior también ayuda en ambas áreas, pero requiere más almacenamiento para almacenar las estadísticas necesarias. También puede mirar en cosas como suavizado estadístico.
Sin embargo, tener su bot IRC en realidad responde a lo que se dice que requiere mucho más que las cadenas de Markov. Se puede hacer clasificando el texto (también conocido como localización de temas) en lo que se dice, luego seleccionando una cadena de Markov específica del dominio para la generación de texto. Naïve Bayes es un modelo popular para la localización de temas.
Kernighan y Pike en La práctica de la programación exploran diversas estrategias de implementación para los algoritmos de cadena de Markov. Estos, y la generación de lenguaje natural en general, están cubiertos en gran profundidad por Jurafsky y Martin, Speech and Language Processing .