Como funcionaria la creacion de un Bot?

Iniciado por $Edu$, 11 Enero 2012, 07:42 AM

0 Miembros y 2 Visitantes están viendo este tema.

$Edu$

Me refiero a esos bots que les hablas y contestan, tengo ganas de crear un programa que lo haga, pero que vaya "aprendiendo" a medida que habla con la gente.

Por ejemplo, mi idea es que sea un Bot que cada uno personalice como quiera, se le podria enseñar sobre temas, etc, yo como programador le enseñaria a comunicarse con el usuario solamente.

Existen cosas asi? les parece buena la idea? se puede lograr? Me interesa eso pero obviamente pregunto aca porque quiero saber como se podria hacer.

Se que cuando se le ingresa "hola como estas?" a un bot, este lee ese texto y verifica que si dice "como estas?" le contesta lo que se le indico para esa pregunta. Luego algunos para no ser tan repetitivos hacen al azar las posibles respuestas a eso.
Pero donde guardan todas las posibles preguntas, preguntas, etc? base de datos o simples .txt?

Me interesa mucho crear esto asi que espero su ayuda, aunque no sepas programacion me sirve tu opinion o ideas.

Saludos

$Edu$

Ya vi y existen muchos, estoy chateando con uno que aprende de cosas que les digas, muy bueno la verdad, pero me interesaria crear uno que sea muy complejo, siempre quise hacerlo y quiero que me den una mano con lo que puedan

flacc

sisi, yo una vez le reclamé de que era una máquina y fue como si imitara el enojo humano  :xD...saludos

$Edu$

He leido mas y esta complicado la verdad, digo, en si es facil hacer uno simple pero para que pueda empezar a aprender por si solo tiene que saber todo lo basico antes, me gusta esto pero veo que es costoso, tendria que enseñarle todo, como si fuera un bebe recien nacido.

Pero quiero lograr algo aunquesea, si me pueden ayudar pensando ideas de como organizar los datos les agredezco, por ahora lo que tengo pensado hacer es:

- El chat como un simple chat, eso no hay problema.
- Una base de datos que por ahora tengo pensado solo en usar txt y sera la memoria Fija (donde se guardaran las cosas elementales que va aprendiendo y la personalidad o datos del bot, por ejemplo su nombre real, su color favorito, etc)
- Una cache que sera un txt que ira guardando datos de la conversacion actual para que todo el tema tenga coherencia o si pregunta algo que dijo anteriormente sabra contestar; esta cache si ve que repite muchas veces una cosa la tomaria como importante y pasaria a la base de datos o tambien por si es la primera vez que habla y guardaria datos del usuario para conocerlo mejor en la proxima conversacion. Luego se borraria.
- Y mientras lo este creando hare que genere un log de la conversacion para luego mirarlo y analizar la conversacion.

Como funcionaria? pues un ejemplo:

usuario: Me compre un auto negro.

Ahi buscaria las palabras claves que estaran en la base de datos, en este caso todas porque todas indican algo.
Y en esta base de datos se encontrarian esas keywords de una forma que me sirva para poder responder que yo ni idea, pero lo que si pense es que al tener esa frase con muchas keywords, las respuestas las puedo hacer que las genere al azar, pudiendo elegir la keyword "Me" que hace referencia al usuario entonces podria contestar "Te felicito por tu nuevo auto!" o "compre" para poder decir "Cuanto te costo?" o por ejemplo "negro" y preguntar "Te gusta el color negro? a mi me gusta el Rojo" que se yo.

Alguna idea? xD

Xandrete

¡Hola, $Edu$!

Una inquietud comprensible, el mundo de la inteligencia artificial es fascinante  :-). Pero... ¿no sería mejor que comenzaras primero con uno no muy ambicioso para pillar la mecánica e ir progresando, poco a poco?

Citar(...) me interesaria crear uno que sea muy complejo (...)

En cualquier caso, te paso un link que tal vez te sirva: http://upcommons.upc.edu/pfc/bitstream/2099.1/13801/1/76688.pdf

Es el PFC (Proyecto de Final de Carrera) de un alumno de la Universitat Politècnica de Catalunya (el proyecto está en castellano, don't worry). El título es Andrea: Un robot conversacional emotivo. Lo cierto es que no he podido sino echarle un vistazo por encima, no he hecho una lectura detallada para ver si cumple con todas tus espectativas (si no me equivoco, creo que la capacidad más importante que buscas, la de aprender, la tiene).

Aquí tienes una lista de muchos PFC de la facultad de Informática de la UPC: http://upcommons.upc.edu/pfc/handle/2099.1/1450 (puedes mirarlos sin sentimiento de culpabilidad: son perfectamente públicos, pero eso sí, si utilizas alguna de sus ideas, cita fuentes ;D), a lo mejor hay algún proyecto de IA más (mejor dicho: seguro que hay más proyectos de IA). Eso sí, no todos están en castellano: los hay también en catalán y en inglés. También puedes buscar entre los PFC de otras universidades, siempre que los hagan públicos como en esta (por lo menos, en la facultad de Informática). Los PFC son muy interesantes: no suelen salir al hacer búsquedas en Google, y están llenos de ideas muy chulas y originales de las que puedes aprender mucho más que en el primer resultado que sale en el buscador.

¡Saludos, jefe!

$Edu$

Muchas gracias! me leere lo que me dejas para sacar mas ideas, ya que en si las ideas caen faciles si te pones a pensar que estas creando un ser humano, es decir una idea que se me viene para intentar lograr es que si por ejemplo para una pregunta existe en mi base de datos 100 respuestas diferentes, se tomara en cuenta los sentimientos que fue generando hacia el usuario, su estado de animo, su enojo, etc para elegir la mejor respuesta. Me gusta esto, hare algo pequeño ya que no pienso escribir 100 respuestas diferentes para una pregunta xDD

Gracias y si dices que hay algo mas basico que esto para empezar a comprender la IA me dices :P Saludos

Xandrete

Oh, no!

No me he expresado con claridad en lo que se refiere a hacer algo básico >.< . No me refería a hacer otra cosa más básica que un bot conversacional. Hablaba de hacer un bot conversacional que fuera sencillito (e ir complicándolo a medida que fueras cogiendo soltura).

Bueno, suerte con el prooyecto!

[Case]

Pero por lo general tu no tienes que darle las 100 posibles respuestas, mas bien yo he visto que al iniciar analizan algunas conversaciones entre 2 usuarios, y así es como obtienen el conocimiento "inicial" yo creo que a lo mejor lo que puede causar mas problemas es que el programa sea eficiente, esto es.
Que las búsquedas heurísticas se realicen en un menor tiempo, o en un tiempo mas que aceptable para que te entreguen una respuesta.

$Edu$

Las respuestas las tengo que generar yo si, por lo que por eso algunos bots buenos demoran años en hacerlo lo mas real posible, pero bueno yo quiero intentarlo.

Podria empezar haciendo algo simple pero estoy seguro que lo se hacer, de forma facil facil, pero la idea es programar con papel y lapiz anotandome cosas para empezar cuando este todo listo y si es que logro hacerlo con papel y lapiz, porque a veces no he llegado a programar porque me doy cuenta que no podre hacer algo.
No podria empezar un proyecto como este e ir sacando nuevas versiones y mejorando su estructura, porque de seguro tendria que modificar casi todo, por eso lo tendre que pensar bien de bien.

Gracias por las respuestas, creo que he leido bastante y ningun metodo que usan me deja de boca abierta como para copiarles la idea, tampoco usar lenguajes que se hicieron para eso, siento que tendre que pensar yo algun metodo para guardar informacion y hacer que piense como nosotros, porque al fin y al cabo lo que hara es lo mismo que hacemos nosotros, solo que a nosotros no nos programaron para que alguien diga "Todo lo que hacen y no tienen ni idea de lo que me costo que funcionen" jaja. Saludos!

Xandrete

¿Hacer que piensen como nosotros? ¿Eres de la opinión de que una máquina lo suficientemente elaborada puede ser completamente indistinguible de un ser humano? O dicho de otra forma, ¿que nosotros somos máquinas también, sólo que de carbono en lugar de silicio...?

Dejando filosofadas a un lado. Por lo que dices, parece que quieres hacer algo que rompa esquemas. Por casualidad, ¿te impresionarían más las redes neuronales? Es una técnica bastante potente, tal vez quieras pillar un libro o algo (te pongo aquí el enlace de la wiki, para que le eches un vistazo y veas más o menos de que va) http://es.wikipedia.org/wiki/Red_neuronal_artificial

Por otro lado, diría que para un proyecto de IA desde 0 quizás convendría saber un poquito de probabilidad y estadística (tampoco a nivel de tesis), llegar a comprender algunas distribuciones importantes... En informática, algunas de las más interesantes tal vez sean la uniforme, la binomial, la de Poisson (aunque esta se utiliza sobre todo en teoría de colas, para servidores y cosas así, quizás se le pueda encontrar aplicación también en un bot) y la normal o gaussiana (esta última es MUY importante en muchos ámbitos, sobre todo por el Teorema Central del Límite). No quiero asustarte tampoco con esto, de momento no me he embarcado en ningún proyecto de esta índole así que no sé exactamente qué habría que saber en esta área, pero sí que es cierto que se utiliza la estadística (de una forma u otra) en bots.

Las limitaciones que propones no están tampoco estrictamente relacionadas con IA estrictamente, sino con temas de programación, bases de datos y tal. Es decir, con medios tecnológicos. Se pueden estudiar técnicas y teoría de inteligencia artificial sin enfocarla a ningún lenguaje de programación ni medio tecnológico concreto, de la misma manera que, en teoría, se puede aprender algoritmia sin tocar ningún lenguaje de programación ni máquina. Por ejemplo, se considera que Ada Lovelace fue la primera "programadora" (algoritmadora sería más exacto, en mi opinión, pero como esa palabra es más cacofónica que el carajo y no existe en el diccionario...)... ¡en una época en la que no existían ordenadores!

Respecto a lo de pensar un método para guardar información... te aconsejaría que no reinventaras la rueda. Ya existen muchos sistemas de base de datos, deberías elegir alguno y aprender a manejarlo. Podrías usar un fichero de texto plano como dices más arriba para guardar info, claro... pero a la larga deberías crear funciones y funciones para poder manejarlo correctamente, y acabarías creando un sistema base de datos nuevo (que, créeme y no es por desanimarte, no será ni tan eficiente ni tan eficaz como otras bases de datos ya existentes y en las que han trabajado decenas, si no cientos de personas, y cuyo desarrollo se ha prolongado y se prolonga a lo largo de los años). También es cierto que no sé cuan considerable puede llegar a ser la información necesaria para un bot, pero en cualquier caso pienso que es mejor asegurarse el tiro y tener dominio sobre alguna herramienta potente.

Bueno, bueno, sin más... seguro que alguién mucho más experto que yo puede ayudarte más, sólo digo generalidades que posiblemente sepas ya al haber buscado por ahí.

Bueno, jefe, perdón por irme por las ramas. Es que me he pasado unos cuantos días casi sin hablar con nadie y siento el poderoso deseo de escribir a saco...

De nuevo, suerte con el proyecto!