Sistema experto para determinar la personalidad de un individuo

16
UNIVERSIDAD NACIONAL DE TRUJILLO FACULTAD DE CIENCIAS FISICAS Y MATEMATICAS ESCUELA ACADEMICO PROFESIONAL DE INFORMÁTICA SISTEMA EXPERTO PARA DETERMINAR LA PERSONALIDAD DE UN INDIVIDUO ELABORADO POR: Jiménez Quilcate, Bandy Jones [email protected] DOCENTE: Ing. Díaz Pulido, José Arturo Guadalupe, 18 de Julio del 2014

description

Sistema experto para determinar la personalidad de un individuo UNIVERSIDAD NACIONAL DE TRUJILLO INTELIGENCIA ARTIFICIAL BANDY JIMENEZ QUILCATE

Transcript of Sistema experto para determinar la personalidad de un individuo

Page 1: Sistema experto para determinar la personalidad de un individuo

UNIVERSIDAD NACIONAL DE TRUJILLO

FACULTAD DE CIENCIAS FISICAS Y MATEMATICAS

ESCUELA ACADEMICO PROFESIONAL DE INFORMÁTICA

SISTEMA EXPERTO PARA DETERMINAR LA PERSONALIDAD DE UN

INDIVIDUO

ELABORADO POR:

Jiménez Quilcate, Bandy Jones [email protected]

DOCENTE:

Ing. Díaz Pulido, José Arturo

Guadalupe, 18 de Julio del 2014

Page 2: Sistema experto para determinar la personalidad de un individuo

RESUMEN

El presente proyecto consiste en desarrollar un sistema experto en el lenguaje de programación

Java, el cual nos permitirá saber qué tipo de personalidad tiene un individuo, lo cual resulta útil

en la contratación de personal en determinadas empresas que desea contar con personas que no

tengan enfermedades psicológicas y que cuenten con ciertas características determinadas,

además brindarles algunas recomendaciones para que el individuo sepa en que está actuando mal

y pueda corregir; como también facilitara en el área de psicología porque así el psicólogo podrá

determinar más fácilmente la personalidad de cierto individuo siendo de importancia ya que de

esta manera se podrá solucionar sus problemas de una manera más efectiva. Para ello primero

haremos una breve descripción de lo que es un sistema experto y la importancia que tienen, para

luego pasar a desarrollar el problema en Java, unos de los mejores lenguajes de programación de

la historia.

Page 3: Sistema experto para determinar la personalidad de un individuo

1. INRODUCCION

Desde su aparición, a mediados de 1960, los Sistemas Expertos (SE) se han definido

como aquellos programas que se basan en el conocimiento y tratan de imitar el

razonamiento de un experto (humano) para resolver un problema de un tópico definido.

Su comportamiento se basa generalmente en reglas, es decir, se basa en conocimientos

previamente definidos, y mediante estos conocimientos, son capaces de tomar decisiones.

Sería ilógico pensar que solo existe una definición de Sistemas Expertos, ya que tanto los

SE como la propia Inteligencia Artificial (IA) han ido evolucionando a través de los años.

Ahora pero ¿Quién es un experto humano?, bueno se puede decir que es una persona que

es competente en un área determinada del conocimiento o del saber. Un experto humano

es alguien que sabe mucho sobre un tema determinado y que puede dar un consejo

adecuado. Esta experiencia sólo se adquiere tras un largo aprendizaje y a base de mucha

experiencia.

En nuestro caso tenemos a un experto humano en el área de Psicología, quién fue

participe en la realización de nuestro sistema basado en Reglas de Producción para la

representación del conocimiento.

Una regla consta de un conjunto de acciones o efectos (una o más) que son ciertas cuando

se cumplen un conjunto de condiciones o causas. La potencia de una regla está en

función de la lógica que admita en las expresiones de las condiciones y de las

conclusiones.

La conclusión se suele referir a la creación de un nuevo hecho válido, o la incorporación

de una nueva característica a un hecho, mientras que la acción suele referirse a la

transformación de un hecho.

Las ventajas que representan las reglas de producción son su carácter declarativo, su

sencillez, su uniformidad - que permite la representación de conocimiento como de meta-

conocimiento -, su independencia - que permite la supresión o inclusión sin que se vea

afectado el resto de la base de conocimientos - y su modularidad al ser fácilmente

agrupables.

La principal desventaja que presentan las reglas de producción, es la dificultad de

establecer relaciones, para lo cual hay que recurrir al uso de meta reglas, lo que produce

el crecimiento muy rápido del número de reglas, lo que hace lento el proceso de

inferencia y conduce a la introducción repeticiones y lo que es peor, contradicciones.

Page 4: Sistema experto para determinar la personalidad de un individuo

1.1.Arquitectura y Funcionamiento de un Sistema Experto

Los sistemas expertos está compuesto de:

1.1.1. Base de Conocimientos

La base de conocimiento contiene el conocimiento especializado extraído del

experto en el dominio (en nuestro caso el experto es un psicólogo),

generalmente el conocimiento se representa mediante reglas de producción.

1.1.2. Base de Datos

Base de datos o base de hechos es una parte de la memoria del ordenador que

se utiliza para almacenar los datos ingresados desde la aplicación que se

desarrollara (en nuestro caso mysql Server), datos como la información del

psicólogo, del paciente, los test y sus resultados.

1.1.3. Motor de Inferencias

Es un programa que, mediante el empleo de los conocimientos puede resolver

el problema que está especificado. Lo resuelve gracias a los datos que

contiene la base de hechos del sistema experto. Por regla general, el tipo de

reglas que forman la base de conocimientos es tal que, si A es válido, puede

deducirse B como conclusión. En este caso, la tarea que lleva a cabo el motor

de inferencias es la de seleccionar, validar y activar algunas reglas que

permiten obtener finalmente la solución correspondiente al problema

planteado.

1.1.4. Interfaz con el Usuario

Permite que el usuario pueda describir el problema al sistema experto,

interpreta sus preguntas, los comandos y la información ofrecida, dando como

respuesta explicaciones y justificaciones, en pocas palabras es aquella que

permite la interacción entre el usuario y el sistema experto.

1.1.5. Módulo de Explicación

La mayoría de los sistemas expertos contiene un módulo de explicación,

diseñado para aclarar al usuario la línea de razonamiento seguida en el

proceso de inferencia, es decir si el usuario pregunta al sistema como ha

alcanzado una conclusión, éste le presentara la secuencia completa de reglas

usadas.

Page 5: Sistema experto para determinar la personalidad de un individuo

1.1.6. Módulo de Adquisición

El módulo de adquisición del conocimiento permite añadir, eliminar o

modificar elementos de conocimiento (en nuestro caso almacenado en la base

de datos).

1.2.Ventajas e Inconvenientes de un Sistema Experto

1.2.1. Ventajas

Los conocimientos de un sistema experto pueden ser copiados y almacenados

fácilmente, siendo muy difícil la pérdida de éstos.

Otra ventaja de los sistemas expertos sobre los humanos es que el experto

computarizado siempre está a pleno rendimiento. Cuando un humano se

cansa, la exactitud de sus consejos puede decaer. Sin embargo, el experto

computarizado siempre proporcionará las mejores opiniones posibles dentro

de las limitaciones de sus conocimientos.

Una última ventaja de un sistema experto está en que después de que un

experto computarizado exista, usted puede crear un nuevo experto

simplemente copiando el programa de una máquina a otra. Un humano

necesita mucho tiempo para convertirse en un especialista en ciertos campos,

lo que hace difícil que puedan aparecer nuevos especialistas humanos.

1.2.2. Desventajas

Creatividad: los humanos pueden responder creativamente a situaciones

inusuales, los sistemas expertos no pueden.

Experiencia Sensorial: los humanos tienen un amplio rango de disponibilidad

de experiencia sensorial. Y los sistemas expertos actualmente dependen de

una entrada simbólica.

Degradación: los sistemas expertos no son bueno para reconocer cuando no

existen respuestas o cuando los problemas están fuera de su área.

Page 6: Sistema experto para determinar la personalidad de un individuo

1.3.Java

1.3.1. Introducción a Java

A finales de los años ochenta Sun Microsystems decide introducirse en el

mercado de la electrónica de consumo y más concretamente en los equipos

domésticos, incluyendo la televisión interactiva. Java, nace como un lenguaje

ideado en sus comienzos para programar electrodomésticos.

Esta filial desapareció tras un par de éxitos de laboratorio y ningún desarrollo

comercial.

Sin embargo, para el desarrollo en el laboratorio, uno de los trabajadores de

FirstPerson, James Gosling, desarrolló un lenguaje derivado de C++ que

intentaba eliminar las deficiencias del mismo. Llamó a ese lenguaje Oak.

Cuando Sun abandonó el proyecto de FirstPerson, se encontró con este

lenguaje y, tras varias modificaciones (entre ellas la del nombre), decidió

lanzarlo al mercado en verano de 1995.

1.3.2. Características de Java

Lenguaje Familiar

Java no sería un lenguaje totalmente nuevo, se parecería a lo que

conocemos como C++, así que no le sería tan complicado recalar en

los programadores escépticos.

Lenguaje Orientado a Objetos

Para que un lenguaje pueda considerarse orientado a objetos debe

soportar como mínimo las características de:

- Encapsulación

- Herencia

- Polimorfismo

- Enlace dinámico.

Lenguaje Robusto

Uno de los problemas más comunes en los lenguajes de programación

es la posibilidad de escribir programas que pueden bloquear el sistema.

Algunas veces este bloqueo puede ser inmediato, pero en otras

Page 7: Sistema experto para determinar la personalidad de un individuo

ocasiones llega a aparecer inesperadamente porque, por ejemplo, la

aplicación accede a zonas de memoria que no estaban siendo ocupadas

por otros programas hasta ese momento. Un ejemplo claro de lenguaje

no robusto es C. Al escribir código en C o C++ el programador debe

hacerse cargo de la gestión de memoria de una forma explícita,

solicitando la asignación de bloques a punteros y liberándolos cuando

ya no son necesarios.

En Java, los punteros, la aritmética de punteros y las funciones de

asignación y liberación de memoria (malloc( ) y free( ) ) no existen.

En lugar de los punteros se emplean referencias a objetos, los cuales

son identificadores simbólicos. El gestor de memoria de Java lleva una

contabilidad de las referencias a los objetos. Cuando ya no existe una

referencia a un objeto, éste se convierte en candidato para la recogida

de basura (garbage collection).

Lenguaje De Alto Rendimiento ( Múltiples Threads ):

Una de las características del lenguaje es que soporta la concurrencia a

través de threads. En ocasiones puede interesarnos dividir una

aplicación en varios flujos de control independientes, cada uno de los

cuales lleva a cabo sus funciones de manera concurrente. Cuando los

distintos flujos de control comparten un mismo espacio lógico de

direcciones, se denominan threads.

Lenguaje Portable

El principal objetivo de los diseñadores de Java, y dado el gran

crecimiento de las redes en los últimos años, fue el de desarrollar un

lenguaje cuyas aplicaciones una vez compiladas pudiesen ser

inmediatamente ejecutables en cualquier máquina y sobre cualquier

sistema operativo. Por ejemplo, un programa desarrollado en Java en

una estación de trabajo Sun que emplea el sistema operativo Solaris,

debería poderse llevar a un PC que utilice sistema operativo Windows

NT.

Lenguaje Seguro

Se pretendía construir un lenguaje de programación que fuese seguro,

esto es, que no pudiera acceder a los recursos del sistema de manera

Page 8: Sistema experto para determinar la personalidad de un individuo

incontrolada. Por este motivo se eliminó la posibilidad de manipular la

memoria mediante el uso de punteros y la capacidad de transformación

de números en direcciones de memoria (tal y como se hace en C)

evitando así todo acceso ilegal a la memoria. Esto se asegura porque el

compilador Java efectúa una verificación sistemática de conversiones.

2. SISTEMA EXPERTO PARA DETERMINAR LA PERSONALIDAD DE UN

INDIVIDUO

2.1.Planteamiento y Diseño

Queremos desarrollar un sistema experto que nos diga que personalidad tiene un

individuo, y que recomendaciones se le podría dar para corregir algunos errores en su

personalidad que el tenga, como también que nos sirva como guía para la elección de

personal en una empresa, o ayuda para los psicólogos en cuanto a la detección de

posibles problemas psicológicos puedan tener sus pacientes.

Para realizar esto tendríamos que saber los siguientes puntos:

2.1.1. La Personalidad

El término personalidad se usa en muchas formas. Puede referirse a todo lo

que se sabe acerca de una persona o a lo que es único en alguien o lo típico de

una persona.

Desde un punto de vista científico, todos tenemos una personalidad.

Simplemente es nuestra naturaleza psicológica individual.

Podemos pensar en la personalidad como una identidad personal del

individuo. La identidad tiene diversos componentes, algunos de los cuales son

más centrales que otros: los componentes centrales definen a la persona,

mientras que los componentes periféricos son limitados y están sujetos a

cambios.

2.1.2. Componentes de la Personalidad Según Freud

Ello

El ello es el componente más primitivo de la personalidad, no tiene la

percepción de la realidad y se apoya en lo que Freud se refiere como los

"procesos primarios" para satisfacer las necesidades e impulsos básicos de

un individuo. Ejemplos de estos impulsos primitivos incluyen conductas y

agresiones en la búsqueda del placer. El ello se rige por el "principio del

Page 9: Sistema experto para determinar la personalidad de un individuo

placer", que es una exigencia de la satisfacción inmediata de las

necesidades y lo alienta sin preocuparse por las posibles consecuencias.

Ego

Usando el "principio de realidad", el ego evalúa las acciones y sus

consecuencias potenciales y determina las soluciones adecuadas a los

impulsos del ello. Para lograr esto, el ego emplea los "procesos

secundarios" de la percepción, el reconocimiento, el juicio y la memoria.

El ego actúa como un término medio entre el ello y el superego trabajando

para satisfacer los deseos que origina el ello bajo las restricciones morales

provenientes del superego.

Superego

El superego contiene los valores de un individuo y la moral social que se

aprenden a través de la formación infantil y las. Este emplea a las

emociones de imposición como la culpa y el orgullo, para regular el

comportamiento de un individuo basado en la formación y la experiencia

pasada. El superego trabaja para contrarrestar el ello reprimiendo los

impulsos en lugar de buscar la gratificación instantánea.

2.1.3. Test de Personalidad

Es una herramienta que permite evaluar los rasgos psicológicos y de la

personalidad de un individuo. Conocidos porque se utilizan en el ámbito de la

psicología clínica, también se utilizan en los procesos de selección para

contrastar si la información aportada en la entrevista es acorde al test.

2.1.4. Tipos de Test de Personalidad

Existes varios tipos de test de personalidad, entre ellos figuran: Test de

proyectivos, test de aptitudes y cuestionarios, es precisamente en este tipo de

test, que nos hemos basado para el desarrollo de nuestro sistema experto.

Cuestionarios

Consisten en series de preguntas variadas y en algunos casos ambiguas

sobre tu persona. Se recomienda sinceridad, hay preguntas aparentemente

diferentes diseñadas con el propósito de medir tu sinceridad partiendo de

una actitud positiva hacia nosotros/as mismos. Escucha con atención las

Page 10: Sistema experto para determinar la personalidad de un individuo

instrucciones que te den para cada test. Si el tiempo es limitado, no te

estanques en una pregunta, pasa a la siguiente.

El objetivo que persiguen es descubrir rasgos como:

estabilidad emocional

extroversión

introversión

iniciativa

dominio de sí mismo

responsabilidad

sentido del deber

flexibilidad

independencia

autonomía

decisión

grado de sociabilidad

sinceridad

autoconfianza

autodisciplina

lealtad

agresividad

Los cuestionarios están compuestos por 2 tipos de preguntas:

Pregunta Abierta

Ubicadas en cuestionarios tipo abierto, consiste en hacer una pregunta y

darle como alternativa 2 opciones en hechos, que el paciente le gustaría o

preferiría realizar.

Page 11: Sistema experto para determinar la personalidad de un individuo

Según se elija cualquiera de las 2 opciones que se muestran, el sistema

experto empezará a concatenar los resultados que irá adquiriendo conforme

siguen apareciendo las preguntas

Pregunta Cerrada

Ubicadas en cuestionarios tipo cerrado, consiste en hacer una pregunta y

darle 2 alternativas “Si” y “No”, las cuales estarán estratégicamente

ubicadas para que, cada vez que el paciente elija la opción “Si”, el test

vaya sumando un valor, el cual determinara la personalidad de la persona,

para luego darle una recomendación.

La pregunta ha sido planteada estratégicamente para cuando elijas la

opción “Si” suma un valor que al final determine tu personalidad, y si

eliges la opción “No” concatene una recomendación ligada a la pregunta.

En Compañía,

tu:

Inicias la

Conversación

Esperas que se te

acerquen

Que haces Que haces

Siempre se mueve,

camina o come con

rapidez

Si No

Page 12: Sistema experto para determinar la personalidad de un individuo

2.2.Implementación

Para implementar nuestros árboles en Java, dividimos nuestro código en 3 grandes

bloques

2.2.1. Definición de Plantillas

Son clases sin herencia, que contendrá como atributos, el nombre del test, el

código del test, el tipo del test (abierto o cerrado) y sus respectivas preguntas.

Plantilla del Test

Page 13: Sistema experto para determinar la personalidad de un individuo

Plantilla de Pregunta

2.2.2. Interfaz de Usuario

Le permitirá al usuario interactuar con el sistema experto, dándole una

apariencia más amigable, donde el usuario se sienta más cómodo usarlo, como

también nos permitirá almacenar modificar y eliminar información, tanto el

paciente, del test o de uno mismo.

Interfaz de Inicio de Sesión

Page 14: Sistema experto para determinar la personalidad de un individuo

Creando Test Abierto

Creando Test Cerrado

Page 15: Sistema experto para determinar la personalidad de un individuo

2.2.3. Base de Datos

Almacenara toda la información tanto del paciente como del psicólogo,

también los test creados por el experto humano (psicólogo), las

recomendaciones, el tipo de personalidad, pero almacenadas en reglas.

3. EJECUCIÓN

Esta es una ejecución de como evaluamos a un paciente registrado y lo sometemos al test

tipo cerrado para luego ver su resultado

Evaluando Paciente en Test - Cerrado.

Page 16: Sistema experto para determinar la personalidad de un individuo

Resultado del Test – Cerrado

4. REFRENCIAS

[1] http://www.elcurriculum.com/articulo/tests-de-personalidad-16.html

[2] http://www.ehowenespanol.com/3-componentes-personalidad-segun-freud-

info_185561/

[3] http://actitudesimagen.com.mx/articulos/2011/06/%C2%BFquieres-saber-como-

identificar-la-personalidad-de-los-demas-a-traves-de-su-lenguaje-corporal/

[4] http://html.rincondelvago.com/personalidad_3.html

[5] http://www.testpersonalidad.com/test-personalidad.php

[6] http://www.psicoactiva.com/tests/test9.htm

[7] http://es.41q.com/

[8] https://www.java.com/es/download/faq/whatis_java.xml

[9] http://es.wikipedia.org/wiki/Java_(lenguaje_de_programaci%C3%B3n)

[10] http://www.mysql.com/