• Domingo 22 de Diciembre de 2024, 07:27

Autor Tema:  Robot Chat  (Leído 7171 veces)

ibito

  • Miembro HIPER activo
  • ****
  • Mensajes: 549
  • Nacionalidad: mx
  • Se mas de C++ que lo que se de ese CSS
    • Ver Perfil
    • http://www.ibquezada.com
Robot Chat
« en: Lunes 25 de Febrero de 2008, 21:57 »
0
Hace unos 2 o 3 años he estado pensando la manera de hacer un chat-bot, pero que en realidad parezca persona, pero para ésto es necesario mucho conocimiento (según yo) del lenguaje en el que el bot "hablará".

Mi idea consiste en que se tiene que hacer un MUY BUEN diseño de una base de datos, con datos predefinidos (aún no se cuales), pero el punto es que, el bot, empiece a aprender justo como lo hace un ser humano, primero tiene que identificar lo que se le dice y preguntar que significa tal frase o palabra, e ir almacenando la información que se le da.
Incluso, lo genial es que el mismo robot pregunte, no solo responda como son la mayoría (si no es que todos) los bots que existen.

Me gustaría iniciar un proyecto de éste tipo, no se si se puede usar un motor de base de datos existente o no...

No se si me expliqué, pero pues me gustaría saber que opinan  :D
En fin, nos vemos!!!  :comp:
______________________________________
www.hazjuegos.com Una comunidad dedicada al desarrollo de videojuegos.

posman

  • Miembro MUY activo
  • ***
  • Mensajes: 119
    • Ver Perfil
Re: Robot Chat
« Respuesta #1 en: Lunes 25 de Febrero de 2008, 23:39 »
0
Muy interesante la idea. Yo alguna vez tambien intente hacer algo asi. Lo inicie algo asi como una "contestadora automatica". Antes yo me conectaba mucho utilizando el mIRC y cuando entraba a algun canal nuevo, no faltaba la persona que empezaba:
  • Como te llamas</li>
  • De donde eres</li>
  • Cuantos años tienes</li>
  • Que estudias</li>
  • etc</li>
Y de ahi me salio la idea. Hice un script de mIRC que contestaba algunas preguntas, pero claro que eran respuestas "programadas". De ahi me surgio la idea de hacer lo que tu quieres hacer. Nunca me meti de lleno, y obvio que nunca termine el proyecto. Son demasiadas cosas las que hay que saber y como dices tu, se necesita un muy buen diseño. Pero la idea es bastante interesante. A mi en lo personal me intriga mucho la inteligencia artificial.

Suerte con tu proyecto!!!

ibito

  • Miembro HIPER activo
  • ****
  • Mensajes: 549
  • Nacionalidad: mx
  • Se mas de C++ que lo que se de ese CSS
    • Ver Perfil
    • http://www.ibquezada.com
Re: Robot Chat
« Respuesta #2 en: Martes 26 de Febrero de 2008, 16:45 »
0
Pues no es mi proyecto ya que aún no lo he empezado y no se si lo haga, la IA es un campo muy grande.
Lo que me gustaría, es que hagamos un diseño de la base de datos entre los que nos interese hacer éste tipo de cosas, y no se, todos empezar por nuestro lado.
Por ejemplo yo creo que lo haría con PHP... que es lo que mas uso hasta el momento, y obviamente MySQL para la base de datos.

La idea que yo tengo de la base de datos es que debe llevar una tabla de "conceptos" que es lo que nosotros "sus padres" le enseñaríamos, y con el paso del tiempo también las demás personas, esa es la tabla (para mi) mas importante.

Ahora, nos tendríamos que fijar en los niños, ¿como hacen cuando aprenden a hablar? ¿que es lo primero que aprenden?, claro, nos saltaríamos los pasos de aprender a caminar, necesidades de comer y todo eso... entonces creo que las cosas se reducen bastante, a solo hablar, comunicarse.
______________________________________
www.hazjuegos.com Una comunidad dedicada al desarrollo de videojuegos.

Dario Mena

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Fundamentos de un robot virtual o chatbot
« Respuesta #3 en: Domingo 26 de Abril de 2009, 05:35 »
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.

michaelslipknot

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re: Robot Chat
« Respuesta #4 en: Viernes 27 de Noviembre de 2009, 00:26 »
0
Hola me ha gustado tu proyecto pues yo sé bastante sobre Mysql en C# Quiza podemos desarrollar el programa !
lo hacemos ? :lol: