2011-03-31 30 views
20

Probé con Google y encontré poco que pudiera entender.Usar cadenas de Markov (o algo similar) para producir un IRC-bot

Entiendo Markov chains a un nivel muy básico: Es un modelo matemático que solo depende de la información previa para cambiar los estados ... ¿es una especie de FSM con posibilidades aleatorias ponderadas en lugar de diferentes criterios?

He oído que puede usarlos para generar tonterías semiinteligentes, oraciones dadas de palabras existentes para usar como diccionario de tipos.

No puedo pensar en términos de búsqueda para encontrar esto, así que ¿alguien puede vincularme o explicar cómo podría producir algo que dé una respuesta semi-inteligente? (Si se le pregunta que sobre el pastel, no empezaría pasando sobre la guerra de Vietnam que había oído hablar)

planeo:

  • Tener esta inactivo bot en los canales de IRC para un poco
  • Elimine los nombres de usuario de la cadena y almacénelos como oraciones o lo que sea
  • Con el tiempo, utilice esto como base para lo anterior.

Respuesta

31

Sí, una cadena de Markov es una máquina de estado finito con transiciones de estado probabilísticas. Para generar texto aleatorio con una simple cadena de Markov de primer orden:

  1. Recopilar estadísticas de bigram (par de palabras adyacentes) de un corpus (colección de texto).
  2. Haga una cadena de markov con un estado por palabra. Reserve un estado especial para el final del texto.
  3. La probabilidad de saltar de estado/palabra x-y es la probabilidad de las palabras y inmediatamente después x, estimada a partir de las frecuencias bigrama relativas en el corpus de entrenamiento.
  4. Comience con una palabra aleatoria x (quizás determinada por la frecuencia con la que aparece esa palabra como la primera palabra de una oración en el corpus). A continuación, elija un estado/palabra y para saltar al azar, teniendo en cuenta la probabilidad de y siguiendo x (la probabilidad de transición del estado). Repita hasta llegar al final del texto.

Si desea obtener algo semi-inteligente de esto, su mejor opción es entrenarlo en muchos textos cuidadosamente recopilados. La parte "lotes" hace que produzca oraciones apropiadas (o un IRC plausible) con alta probabilidad; la parte "cuidadosamente recopilada" significa que usted controla de lo que 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 buscar cosas como suavizado estadístico.

Sin embargo, tener su bot de IRC realmente responde a lo que se dice toma un lote más que las cadenas de Markov.Se puede hacer al hacer text categorization (también conocido como detección de temas) en lo que se dice, y luego seleccionar una cadena de Markov específica del dominio para la generación de texto. Naïve Bayes es un modelo popular para detectar temas.

Kernighan y Pike en The Practice of Programming explorar diversas estrategias de aplicación de algoritmos de cadenas de Markov. Estos, y la generación de lenguaje natural en general, está cubierto en gran profundidad por Jurafsky y Martin, Speech and Language Processing.

+0

Muchas gracias por este; ¡gran respuesta! : D –

+0

En cuanto a la generación de texto relacionado con la pregunta, es posible que desee consultar [MegaHAL] (http://en.wikipedia.org/wiki/MegaHAL). Extrae palabras clave de la entrada y luego utiliza diferentes cadenas de markov para expandir estas palabras clave a oraciones, adelante y atrás de la (s) palabra (s) clave (s). – DataWraith

0

Desea buscar Ian Barber Text Generation (phpir.com). Lamentablemente, el sitio está fuera de servicio o fuera de línea. Tengo una copia de su texto y quiero enviártelo.

0

Me parece que está intentando varias cosas al mismo tiempo:

  1. extracción de palabras/frases de ralentí en el IRC
  2. la construcción de una base de conocimientos
  3. escucha de conversaciones, analizar palabras clave
  4. generar una oración con respecto a las palabras clave

Esas tareas son básicamente muy diferentes. Los modelos de Markov a menudo se utilizan para el aprendizaje automático. Aunque no veo mucho aprendizaje en tus tareas.

larsmans respuesta muestra cómo se genera frases de Markov modelos basados ​​en palabras. También puede entrenar los pesos para favorecer los pares de palabras que otros usuarios de IRC utilizaron. Sin embargo, esto no generará oraciones relacionadas con palabras clave, porque construir/refinar un modelo de Markov no es lo mismo que "conducirlo".

Usted puede tratar de modelos ocultos de Markov (HMM), donde la salida es visible las palabras clave y los estados ocultos están hechos de esos pares de palabras. A continuación, podría favorecer frases más adecuadas para palabras clave específicas de forma dinámica.

+0

1,2 y 3 son los que estoy seguro de que sé cómo hacer o puedo hacer. 4 es para lo que quiero cadenas de Markov. –

Cuestiones relacionadas