• Domingo 22 de Diciembre de 2024, 12:06

Autor Tema:  chat  (Leído 2486 veces)

hdsk

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
chat
« en: Martes 13 de Enero de 2009, 14:08 »
0
Hola,

Alguien tiene idea como se podria encarar para construir una especie de robot que pueda comprender el lenguaje (escrito) y producir sentencias coherentes como para mantener una mini conversación basica. Algo similar a los robots de MSN que tiene microsoft.

Salu2

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: chat
« Respuesta #1 en: Miércoles 14 de Enero de 2009, 12:43 »
0
"Autómatas y lenguajes formales", busca por ahí

Salud

Dario Mena

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re: chat
« Respuesta #2 en: Domingo 26 de Abril de 2009, 05:42 »
0
Para comenzar definamos lo que es un robot virtual, un robot virtual es un programa de charla también llamado chatbot que simula las respuestas como si se tratara de una persona.

Los primeros chatterbots aparecieron junto con las salas de chat del viejo sistema Mirc , en estas salas siempre habían unos usuarios que estaban todo el día conectados o buena cantidad de horas , no eran usuario eran pequeños programas llamados bots encargados de sacar la sala a los usuarios que insultaban o decían cosas inapropiadas. Estos programas detectaban frases inapropiadas o frases que estaban precargas en la base de conocimiento del bot. Es así que si un usuario repetía un carácter indefinidamente era echado , lo mismo ocurría si el usuario insultaba o usaba términos incorrectos. De ese tiempo hasta hoy se ha avanzado mucho.

Lo principal de cualquier robot y particularmente de un robot virtual es la base de conocimientos que posea. Utilizando su base de conocimientos un robot podrá responder mas preguntas. Crear una base de conocimientos puede llevar mucho tiempo, de hecho tanto como el que lleva capacitar a un ser humano. ¿Cuánto tiempo lleva para que una persona se desarrolle y sea capaz de contestar sobre los mas variados tópicos? 15  -  20 años. Aprovechando la ley de aceleramiento de los resultados donde el trabajo en colaboración permite aumentar los tiempos de desarrollo exponencialmente, crear la base de conocimientos puede llevar mucho menos tiempo por la sencilla razón de que ya hay base de conocimientos disponibles para que un robot pueda llevar una charla común sin mayores sobresaltos. Desdichadamente la mayoría de las bases de conocimiento más completas están en ingles. Por que hay solo base de conocimiento en ingles , por la sencilla razón de que el ingles es un idioma mucho más sencillo que el castellano.

Veamos un simple ejemplo:

La conjugación en presente del verbo ir :

En castellano :

Yo voy
Tu vas
El va
Nosotros vamos
Vosotros vais
Ellos van

En ingles

I go
You go
He goes
She goes
We go
They go
En castellano el verbo cambia para cada persona (hay seis cambios) mientras que ingles hay solo dos cambios. Es un sencillo ejemplo, la complejidad es aún mayor por el uso de tildes y estructuras gramaticales más complejas que en las ingles.

Es así que todo desarrollo de crear un robot en castellano choca de entrada con un sin fin de problemas que parecen decir que no se puede crear un robot que hable español .

Para crear una base de conocimientos en castellano hay que tomarse bastante mas trabajo partiendo del análisis de cómo nos comunicamos habitualmente.

Hay trucos para no caer en algo que el robot no sepa, una táctica básica es que el robot lleve el control de la conversación , para esto si este responde con preguntas podrá “saber” un tipo de respuesta determinado. Por ejemplo:

Usuario : Hola
Robot : Hola, ¿Cómo te llamas?
Usuario : Pedro
Robot: Pedro, ¿Eres usuario de mi servicio?
Usuario : Si
Robot : ¿ En cual servicio estas suscripto?
Usuario : En recibir información económica semanalmente.
Robot: ¿Qué consulta deseas hacer al respecto?
Usuario : No recibí información de la ultima semana.
Robot : Ok te la enviare enseguida.

En este ejemplo vemos como el robot lleva el control de la charla desde el inicio acotando el número de respuestas que el usuario puede dar.

El robot espera patrones de escritura que no necesariamente tiene que coincidir con lo que se diga exactamente el usuario sino que coincida con el sentido exacto de la frase.

Veamos en seudo código como se vería el dialogo anterior:

Usuario : Hola
Robot : Hola, ¿Cómo te llamas?
Usuario : Pedro
Robot: Pedro, ¿Eres usuario de nuestros servicios?
Usuario : Si
Robot : ¿ En cual servicio estas suscripto?
Usuario : *  información económica semanalmente *
Robot: ¿Qué consulta deseas hacer al respecto?
Usuario : No * información * semana.
Robot : Ok te la enviare enseguida.

  Los asteriscos o comodín tiene la función de permitir que la frase dicha por el usuario fuera otra sin alterar el significado principal de la frase.
El patrón : *  información económica semanalmente *
incluye frases dichas por el usuario que pueden ser :

Estoy suscripto a  información económica semanalmente.
Recibo  información económica semanalmente en mi casa.
Me inscribí en  información económica semanalmente la semana pasada.
Etc

Al robot le interesa saber a que servicio esta suscripto entonces como comienza o termina la frase puede ser secundario.

Lo mismo sucede con el patrón
Usuario : No * información * semana.

Este puede incluir:

No recibí información la ultima semana.
No me enviaron información de la  semana.
No estoy recibiendo información hace una semana.
.....

Como vamos aquí lo que interesa saber es si recibe o no la información semanal.

Claro, hay que especificar la mayor cantidad de patrones de entrada posibles para que el robot pueda responder el mayor número de entradas (input) que haga el usuario . Y además hay que crear toda una estructura ramificada que permita responder la mayor cantidad de preguntas.
El manejo de lenguaje es uno de los aspectos fundamentales de la Inteligencia Artificial y Robótica. Luego que tenemos solucionado este aspecto para pasar el texto a voz sonora alcanza con tener un programa de sintetizador de de texto hacia voz .

Si reconocer las entradas escritas lleva su trabajo imaginense lo que es reconocer voz hablada donde aparte de valer todo lo explicado anteriormente hay que agregar acentos, entonaciones, modismos , etc.

Es por este motivo que el reconocimiento de voz que se viene prometiendo hace muchos años no ha tenido resultado en los robots o en algo más cotidiano como los teléfonos moviles.

Pero por algo tenemos que empezar y crear un chatbot es una manera relativamente fácil de crear un entidad virtual que responda y actue (los chatbots no solo hablan pueden ejecutar programas del sistema y via el puerto adecuado ejecutar aparatos externos al PC)  como un ser humano.

En Red21.com junto a estudiantes de la Universidad de Valencia hemos creado una base de conocimientos para chatbots o robots virtuales. El desarrollo de la misma nos llevo 5 años y esta base de conocimientos está disponible para los estudiantes del curso a distancia de Inteligencia artificial y robótica que se imparte en Red21.