Actualizaciones
recorri todos los post +1 para dejar este espacio, donde como el titulo menciona, publicare las correcciones que se hagan al post, y tambien los nuevos que se vayan añidiendo.
///////////////////////////////////////////////////////////////////////
Nuevo tema incluido: domingo 7 de marzo del 2010.
*** Utilizando las 5 cuestiones basicas y la CACHE
///////////////////////////////////////////////////////////////////////
porfavor no comentes aqui: siguie el siguiente link donde es solo para publicar comentarios y opiniones al respecto:
Continua...
EI: juntando mensajes.
Introduccion: documentacion basica
hola que tal, recien me registro, aunque de vez en cuando me doy una vuelta a leer algunos post interesantes.
bueno, estoy iniciando un proyecto para crear una I.A (chatbot), ya se que cientos o si no es que mas han venido con este tema, pero realmente creo que este caso podria tracender lo suficiente para ser conciderado un proyecto decente.
Desde hace algun tiempo me encuentro desarrollando mapas conceptuales y algunos algoritmos al igual que "Proceso del aprendisaje(ligado a redes neuronales)".
Primero que anda, me gustaria decirles que en lo que trabajo es en una I.A real, que apesar de ser un tanto tonta, o poco eficiente, todos y cada uno de sus procesos son "NO PROGRAMADOS", esto quiere decir que solo cuenta con las reglas "Gramaticales" y "Lenguaje Basico" aunque dentro de los planes esta la auto ampliacion de la misma.
Dejo una lista de temas que seran basicos, puesto que ayudaran a comprender el resto de las ENTRADAS que voy a ir publicando.
Temas a relevantes a tratar:
- Programacion C/c++ /avanzado/
(no incluyo temas porque es demasiado obvio supongo, se debe tener conocimiento de todos los elementos con los que se trabaja en c/c++ y no digo que se necesita ser un FULL-MASTER, si no simplemente poder comprender la sintaxis y asi no se extravie facilmente.)
RECOMIENDO: descargar los video tutoriales que publico el usuario shevchenko y se encuentran en el siguiente link: VideoTutoriales C/c++
- Gramatica
* estructura del sujeto (lectura 1)(lectura 2)
* estructura del predicado (lectura (PDF))
* que es un enunciado(oracion) (lectura (PDF))
* partes de un enunciado (lectura 1) (lectura 2)
**Variables (palabra)
**Sustantivo (casa)
**Adj - Adjetivo (bonita)
**V - Verbo (canta)
**Adv - Adverbio (útil)
**Invariables (partículas)
**Preposición (a)
**Pronombre (yo)
**Art - Artículo (el)
**Conj - Conjunción (y)
**Int - Interjección (¡ah!)
* enunciados simples y compuestos
* morfologia linguistica
(estos son los temas basicos de gramatica,
necesarios para realizar algoritmos logicos)
- Proceso del pensamiento (Repaso general)
* en que consiste
* definiciones
* caracteristicas
* clasificacion
* relacion entre el pensamiento y el lenguaje
* operaciones racionales
* trastornos del pensamiento: velocidad, forma y contenido
Me gustaria agregar un resto de temas extra que creo son indispensables pero ya se fue de largo el POST, bueno eso son los temas que se deben leer o en los que debemos informarnos antes de comenzar con el proyecto.
Deje links que crei realmente basicos, asi que hecharle una leida, para continuar.
Continua...
EI: juntando mensajes.
Analisis de los procesos de aprendizaje: asociativo y programado
En el tema anterior puse solo los temas que deberian tratarse para ir todos parejos, ahora toca exponer un concepto que estoy analizando y desarrollando.
****RECAPITULANDO
si alguno de ustedes ya estaba metido en el tema, supongo abran checado el codigo de la infinidad de I.A's(chatbot) que se encuentran en internet y aunque algunos proyectos bastante avanzados son bastante decentes y me refiero a decentes cuando logran contestarte a una simple oracion como:
usuario: "mañana voy a ir al colegio"
I.A: te refieres a la escuela?
usuario: si
I.A: ya entiendo.
lo lamentable es que apesar de que tiene programadas esas preguntas/respuestas no logra siquiera simular una mente de un bebe de 3 años, puesto que carecen de contenido o significado alguno sus respuestas.
¿PORQUE? en esencia porque el pensamiento humano no comprende OJO no confundas lo que estoy apunto de decir:
"El ser humano NO es una maquina que tiene todas las posibles respuesta a una conversacion"
he aqui el principal error de las I.A actuales.
¿ENTONCES? la mente trabaja de una forma mas compleja que las respuestas programadas, aunque estas tambien forman parte de nuestra naturaleza pensante.
si se leyeron las lecturas que deje en la entrada anterior encontraran que contamos con 2 principales formas de aprendizaje:
* Asociativo
* Programado
Ejemplo de pensamiento asociativo:
azul -----> cielo ------> nubes -----> blancas ------> flores ------> hermosa -----> mi vecina.
Ejemplo de pensamiento programado:
hola! -----> SALUDO -----> hola
hola! -----> SALUDO -----> que tal
hola! -----> SALUDO -----> buenos dias
Como se puede observar el metodo programado ayuda a dar respuesta inmediata, aunque cae en un ciclo entre el numero limitado de respuestas, lo cual lleva a un pensamiento plano.
Ahora, el pensamiento asociativo genera la creatividad, las ideas originales, debido a que todos tenemos redes asociativas muy diferentes, ejemplo: si escribo la palabra "amor" usted tendra eventos o palabras asociadas a este termino que en el caso de haber tenido buenas experiencias usted podria responder: amor ----> hermoso -----> calido -----> felicidad en cambio si usted a tenido malas experiencis podria responder: amor -----> tristeza ----- > nostalgia -----> imposible
Cerramos este tema con la siguiente conclusion: para lograr una verdadera mente virtual deben de implementarse ambos aspectos del aprendizaje: asociativo y programado, pues esto ayudara a que la I.A. pueda tomar decisiones personales creando consigo una personalidad unica, que bien puede ser generada con ayuda de "Usuario" imprimiendo aqui su personalidad, o generando una nueva por medio de metodos aleatorios.
Continua...
EI: juntando mensajes.
Teoria practica de procesamiento del lenguaje por la I.A. mediante 5 Cuestiones basicas
Ya, van 3 con este, ahora si vamos a comenzar con un poco de teoria practica que ya empezare a dar unos metodos para que la I.A. empiece a entender lo que se le dice mediante un metodo NO PROGRAMADO.
****PROCESANDO ORACION SIMPLE:
Veamos una oracion simple:
el dia esta nublado
nosotros comprendemos facilmente lo que se esta enunciando de manera rapida y pareciera que intuitiva, pero no es asi. Analicemos mas a fondo.
El cerebro automaticamente esta desfragmentando la oracion y dandole coherencia, buscando asociaciones con otras palabras y haciendo preguntas para entender lo que esta leyendo, obviamente el poder de procesamiento del cerebro es tan grande que nosotros ni siquiera percibimos esta accion y es extremadamente necesario que asi sea para lograr imitar y reconstruir en codigo para nuestra I.A.
Pero no se preocupen, la Gramatica tiene una solucion simple y rapida para resolver este detalle y con tan solo 5 cuestiones podemos comprender una oracion o enunciado simple. Veamos:
QUIEN? ---> hace referencia al sujeto
CUANDO? ---> hace referencia al tiempo o fecha(pasado, presente, futuro)
DONDE? ----> hace referencia al lugar
COMO? -----> hace referencia a los adjetivos, usaremos a los calificativos por ahora
QUE? -----> formula la necesidad de que la cuestion sea expresada mas explicitamente
Asi es, con esas 5 cuestiones y un ligero repertorio de palabras equivalente a la memoria de un niño de 3-5 años nuestra I.A. comenzara ha analizar, OJO analizar.
pogamos otra vez el ejemplo de la oracion simple y ahora intentaremos *almacenar cada una de sus palabras en una de las 5 cuestiones:
el dia esta nublado
el -----> hace referencia a un sujeto de genero masculino
dia ----> acompaña a "el" convirtiendolo en el sujeto masculino al que hace referencia "el"
esta ---> referencia al "estado" en que se encuentra en tiempo "presente"
nublado ---> es un adjetivo, pasa como adjetivo calificativo, y es el como:
QUIEN? ---> el dia
CUANDO? ---> presente
DONDE? ----> ?
COMO? -----> nublado
QUE? -----> ?
BIEN! ahora estos datos en nuestra mente normalmente pasan a nuestra memoria de corto plazo, para ser utilizados en la comprension de las oraciones y enunciados siguientes, analizando al final de forma unificada toda la informacion que reciba.
PERO, como podriamos sustituir esa memoria a corto plazo que tenemos los humanos?. apuesto que ya lo estas imaginando, mediante la CACHE. en el siguiente tema, veremos como procesara estos datos la CACHE de nuestra I.A. y comenzara a generar respuestas al usuario. Tambien explicare a detalle la funcion de la memoria a corto plazo de humano y la de nuestra I.A :cool:
** NOTA IMPORTANTE: un (chatbot) actual no logra esto, no puede encontrar relacion en 2 oraciones seguidas, lo cual hace que su respuesta final no guarde coherencia.
Continua...
EI: juntando mensajes otra vez.
Tipos de Memoria (humana) && SUSTITUTOS para la I.A
Este es un tema realmente importante, de hecho, considero que uno de los de los mas interesantes y profundos de todo este circo. Vamos a ver los dos tipos de memoria con los que cuentamos y explicar el porque y el para que, el ser humano utiliza este tipo de memoria y porque no simplemente recordar todo, total, tenemos y podemos procesar esa cantidad de informacion.
Muchos sabran que el ser humano cuenta con dos tipos de memoria:
*Corto plazo (lectura recomendada)
*Largo plazo (lectura recomendada)
Definamos:
* la memoria a corto plazo:
La memoria a corto plazo o «Memoria Operativa» es el sistema donde el individuo maneja la información a partir de la cual está interactuando con el ambiente. Aunque esta información es más duradera que la almacenada en las memorias sensoriales, está limitada a, aproximadamente, 7±2 elementos durante 10 s (span de memoria) si no se repasa. (segun wikipedia)
* la memoria a largo plazo:
La memoria a largo plazo (MLP) es un almacén al que se hace referencia cuando comúnmente hablamos de memoria en general. Es en donde se almacenan recuerdos vividos, conocimiento acerca del mundo, imágenes, conceptos, estrategias de actuación, etc. (segun wikipedia)
Ahora ya tenemos una referencia clara de la funcion que desempeña cada una, PERO ¿en un equipo informatico, cuales serian sus equivalentes?
Facil:
* la memoria a corto plazo: CACHE DEL SISTEMA, o un simple .TXT con las instrucciones ejecutadas en los ultimos dias.
* la memoria a largo plazo: DISCO DURO o Cualquier dispositivo de almacenamiento.
En la cache se guardaran las conversaciones que se hayan tenido en los ultimos 2 o 3 dias, y a esta se haran referencias para continuar charlas y recordar datos que sean necesarios en el momento.
En el disco duro se guardaran todos los repertorios de palabras y reglas gramaticales para el correcto procesamiento de las conversaciones.
Tambien existe algo a lo que llamo "Punto de Memorisacion Permanente" esto sucedera cuando algun dato de la CACHE este siendo constantemente utilizado, por ejemplo el nombre de un usuario, entonces despues de ejemplo(10) veces de ser utilizado constantemente este dato, pasara a la memoria a largo plazo de la I.A
El resto de CACHE que deje de ser utilizada despues de cierto tiempo 2-3 dias, se ira limpiando, evitando asi almacenar basura dentro de la memoria a largo plazo.
Excelente!, todo va bien no?, ahora ya sabemos los tipos de memoria y sus usos practicos. en la siguiente Entrada veremos como pasar los datos de la ENTRADA anterio(quien, cuando, donde, etc...) a la cache y trabajar con esta para inicializar una conversacion con el usuario.
Continua...
EI: juntando mensajes por ultima vez.
Utilizando las 5 cuestiones basicas y la CACHE
Despues de un rato de descanso continuamos, en este apartado trataremos de analizar un poco mas a fondo como interaccionaria la I.A. con el usuario simplemente utilizando "las 5 cuestiones basicas" y un modelo de "CACHE" sencillo, para despues continuar dando estructura a la I.A. y comenzar a programar, porfin.
bien, retomando:
Veamos una oracion simple nuevamente:
el dia esta nublado
el -----> hace referencia a un sujeto de genero masculino
dia ----> acompaña a "el" convirtiendolo en el sujeto masculino al que hace referencia "el"
esta ---> referencia al "estado" en que se encuentra en tiempo "presente"
nublado ---> es un adjetivo, pasa como adjetivo calificativo, y es el como:
tambien:
QUIEN? ---> hace referencia al sujeto
CUANDO? ---> hace referencia al tiempo o fecha(pasado, presente, futuro)
DONDE? ----> hace referencia al lugar
COMO? -----> hace referencia a los adjetivos, usaremos a los calificativos por ahora
QUE? -----> formula la necesidad de que la cuestion sea expresada mas explicitamente
contestando a las preguntas con la oracion anterior:
QUIEN? ---> el dia
CUANDO? ---> presente
DONDE? ----> ?
COMO? -----> nublado
QUE? -----> ?
teoricamente, si la estructura de preguntas basicas pasara a la CACHE de la I.A. de la manera anterior, entonces seria capaz de lograr empezar a racionalisar sobre el significado en conjunto de dicha oracion, veamos el alcance de respuestas de la I.A. hasta ahora:
usuario > *COMO esta el dia?
ahora la I.A. necesita nuevamente desfragmentar la oracion y quedaria:
*COMO esta el dia ?
*COMO: pasa como tal
esta: hace referencia al "tiempo presente"
el: hace referencia a sujeto masculino
dia: nuevamente acompaña a "el" y por tanto pasa como el sujeto en si
?: hace referencia a pregunta, que (requiere respuesta).
entonces en esta ocasion la I.A. no necesita volver a incluir este patron en su CACHE si no simplemente hacer una busqueda, a donde encuentre la mayor cantidad de valores en concidencia, o una comparativa con sus datos de cache y los que le estan ingresando en modo de solicitud a travez de la pregunta:
si agregaramos 2 registrosa la CACHE de dos oraciones ingresadas anteriormente --->
DATOS QUE SE ENCUENTRAN EN CACHE:
DATA 1:
QUIEN? ---> el dia
CUANDO? ---> presente
DONDE? ----> ?
COMO? -----> nublado
QUE? -----> ?
DATA 2:
QUIEN? ---> los alumnos
CUANDO? ---> pasado(hereda el tiempo de la accion corrieron)
DONDE? ----> la escuela
COMO? -----> corrieron
QUE? -----> ?
Ahora al tener la solicitud:
*COMO esta el dia ?
en este caso es muy obvia la "DATA" que tomara, que sera la DATA 1, que es la que mayor cantidad de palabras tienen relacion a la cuestion,
Ahora esta data es cargada en memoria nuevamente, y respondera la I.A.
I.A. > nublado, ( o tambien podria usar la regla de inversion para crear una respuesta mas compleja) el dia esta nublado.
y de igual manera podria contestar a la pregunta:
*QUIEN esta nublado?> el dia, o
*CUANDO esta nublado > presente (que con un arreglo de sustitucion de palabra por sinonimos logicos, podria quedar como *HOY, esta nublado)
si se le llegara a preguntar el *DONDE, pues la I.A se quedaria en silencio puesto que tal valor no ha sido asimilado, pero no porque no supiera como, si no porque no se entrego dicho valor, aunque a tal problema podria usarse una respuesta *programada, que en este caso vemos que podria ser util, aunque como digo, podria haber muchas mas soluciones antes que caer en el hoyo de una respuesta programada*
Nota relevante: cuando se tiene un metodo como el anterior no importa la complejidad de las oraciones puesto que el 70% de las palabras podran ser englobadas en dichas "5 cuestiones basicas".
Ejemplo:
el dia esta nublado y lluvioso
la DATA quedaria:
DATA x:
QUIEN? ---> el dia
CUANDO? ---> presente
DONDE? ----> ?
COMO? -----> nublado, lluvioso
QUE? -----> ?
recordemos que e "y" es un acompañamiento logico que se agrega en relacion a la cantidad de elementos a unir.
*COMO esta el dia ?
I.A. > el dia esta, nublado y lluvioso.
Notas finales de entrada: bueno se me fueron las lineas explicando el funcionamiento que debera desempeñar a la hora de intentar dar sentido a una oracion la I.A. pero creo que con esto queda claro, es muy importante que lo lean debido a que sobre esto trabajaremos en el siguiente capito.
en la proxima entrada veremos un ejemplo muy basico en c/c++ para realizar la tarea de las (5 cuestiones basicas),
OJO: este ejemplo es para oraciones y apesar de que sera una funcion para la comprencion del lenguaje no sera la unica, se necesitaran muchas mas, que mas adelante ire intentado exponer.
saludos!, y nos vemos en la proxima entrada!
continua...