Sistema experto para determinar la personalidad de un individuo
-
Upload
bndy-quilcate -
Category
Technology
-
view
425 -
download
1
description
Transcript of 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
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.
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.
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.
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.
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
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
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
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
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.
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
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
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
Creando Test Abierto
Creando Test Cerrado
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.
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/