Browsing articles tagged with " semántica LinkedData"

“Semantic Learning” en Salud. Un ejemplo de Minería sobre Estructuras Semánticas

Feb 9, 2018   //   by oa.usun   //   Minería de Datos, Semántica  //  1 Comment

Introducción

Con el actual crecimiento de información, cada vez más se hace necesario contar con nuevos métodos de procesamiento de datos y nuevas tecnologías de análisis de información que permitan crear procesos de búsqueda de conocimiento a partir de fuentes datos no explotadas hasta ahora. La Web recoge cada vez más el conocimiento humano, y los conceptos de WEB Semántica y de Minería Web entran en juego para dar interpretación sobre la información encontrada y generar modelos que representen algún tipo de valor agregado.

Desde el Instituto de Innovación de Ibermática (I3B) llevamos años realizando proyectos de todo tipo donde desarrollamos modelos de Minería de Datos sobre estructuras tradicionales de bases de datos relacionales, o “aplanando” estructuras jerárquicas del tipo xml, json y otras, y, por otro lado, inferimos conocimiento y generamos consultas basadas en la gestión, la inferencia y el acceso a Estructuras Semánticas en forma de grafos. Y claramente, cada vez se observa y demanda una mayor necesidad de unir ambos conocimientos.

El objetivo final es poder “atacar” de forma directa la información “sita” en estructuras jerárquicas ya ordenadas (en otras palabras, conocimiento sobre un contexto poblado con instancias que particularizan dicho conocimiento en casos de uso particulares), buscando un nuevo modelo de análisis avanzado (minería semántica), que saque provecho de la extración directa de modelos supervisados y no supervisados directamente sobre el conocimiento jerarquizado y en grafo, sin necesidad de “aplanar” dichas estructuras en tablas relacionales “clásicas”, dado que dicho “aplanamiento” produce una reducción importante del conocimiento anterior. La idea es poder aplicar minería directamente sobre la estructura de grafos, sea la que sea, dado que dicha estructura, en base a su topología, contiene ya información relevante sobre qué indicadores son los que han de ser los primeros en analizarse, cuáles son los secundarios, y cómo se organizan los indicadores entre ellos.

Para lograr este reto, se debe tener conocimientos profundos de la gestión de algoritmos no supervisados sobre estructuras jerárquicas, y en procesos de análisis recurrentes por niveles, así como una gestión matemática de los análisis de componentes principales por capas, en dos direcciones, la reducción de información capa por capa, y la traducción de esta “reducción” y su consecuente ganancia de información a indicadores comprensibles semánticamente, puesto que el resultado de esta segmentación semántica debe poder trasladarse a un conjunto de hechos en la ontología original, para poder ser comprendida por los consumidores de la información, en este caso, facultativos médicos.

La estructura de los pacientes no es un estructura plana, relacional, en la que cada paciente tiene un diagnóstico, un tratamiento, unas dosis, sino que su vida clínica se compone de múltiples episodios, cada uno de ellos con información diversa, algunos se corresponden con el diagnóstico de episodios anteriores, otros se corresponden con reacciones adversas a un tratamiento anterior, referente a un diagnóstico que no es el inicial, sino que es secundario, otros se refieren a actuaciones médicos, pruebas analíticas, etc… En definitiva, los sistemas actuales de entidad-relación que modelan la historia clínica  de un paciente es una “simplificación” de la historia clínica actual.

La tecnología actual (bases de datos en forma de grafo), permiten almacenar la información clínica en estructuras de información denominadas “grafo”, o “tripletas”, que permiten estructurar el conocimiento en distintas jerarquías, que representan de forma muy fidedigna lo que ocurre en la realidad. Las ventajas de esta tecnología es la plasticidad del almacenamiento de la información, la posibilidad de “navegar” por la información en forma de consultas sobre enlaces de un nodo a otro, la velocidad de recuperación de la misma, la facilidad de plasmar la particularidad de cada individuo en un sistema de base de datos, y por último, la posibilidad de aplicar sobre dichas estructuras matemática muy concreta de análisis de grafos (similaridad), y de poder aplicar reglas que generen nuevo conocimiento sobre dicha información de base.

Modelo Digital del Paciente.

                                                Modelo Digital del Paciente.

El problema de esta tecnología, esta en el lado de la analítica. Así como realizar consultas muy especializadas, del tipo “devuélveme los pacientes entre estos rangos de edad, que alguna vez hayan tenido este tratamiento, más de dos meses, después de haber pasado por estos dos diagnósticos previos concretos”, es relativamente sencillo, puesto que el acceso a la información tiene una lógica muy similar a cómo lo expresamos en lenguaje natural, (SPARQL),  generar patrones automáticos en base a tecnología “Machine Learning”, es decir, generalizar patrones inductivos que perfilen la información de una forma más general, y de forma automática, es complicado para las máquinas cuando la base de la información no está normalizada en atributos y dimensiones.  Lo habitual (como se explicará en siguientes “posts”), es aplanar esta información en una tablón de análisis, al estilo clásico, para luego aplicar Minería de datos sobre dicho tablón.

Aplanamiento de la Información Semántica

                                Aplanamiento de la Información Semántica

Pero en este proceso, perdemos la particularidad de la información, con un problema adicional, ¿qué atributos consideramos como representativos de la generalidad de un base de datos estructurada en distintos niveles jerárquicos? ¿Con cuántos niveles nos quedamos? ¿Qué hacemos con los datos de los niveles más inferiores? Otra estrategia en este sentido es realizar análisis por capas de niveles, pero, ¿por dónde empezamos el análisis? ¿Por los tratamientos? ¿Por los diagnósticos? ¿Por la zona geográfica?

Para ello, desde I3b hemos implementado un nuevo método que analiza directamente los datos desde las estructuras semánticas de una ontología, sin tener que realizar el paso previo de “traducir” las jerarquías en una base de datos relacional o un cubo de BI. Así, la generación de una nueva tecnología que genere patrones, reglas y modelos directamente sobre consultas semánticas (SPARQL), o sobre estructuras de grafos (RDF) es un nuevo reto, que nos va a permitir, además, realizar todos los procesos de minería clásica sobre dichas estructuras y comprobar qué ventajas y desventajas nos pueden aportar.

Web Semántica

La web semántica es un conjunto de tecnologías que nos permiten publicar datos legibles por aplicaciones informáticas y que se basa en la idea de añadir metadatos semánticos y ontológicos.

La Web Semántica se basa en dos puntos fundamentales:

  1. a)  La descripción del significado. Donde se definen los conceptos; y
  2. b)  La manipulación  automática  de  estas descripciones. Se efectúa mediante  lógica y motores de inferencia.

Estructura de la WEB Semántica

La figura muestra la capa de lenguajes y tecnologías recogidas por el campo de la Web Semántica. Estos esfuerzos por la definición de estándares se llevan a cabo en el contexto de la W3C. Aunque muchos de sus componentes están finalizados y son estables, algunas de sus partes aún están en desarrollo.

Estas capas centrales definen los lenguajes para describir recursos de una forma adecuada para que puedan ser procesado por máquinas y el objetivo de nuestro estudio.

Estos lenguajes y las capas superiores son:

  • XML: Aporta la sintaxis superficial para los documentos estructurados, pero sin dotarles de ninguna restricción sobre el significado.
  • Resource Description Framework (RDF): esta capa define un modelo de datos abstracto para el intercambio de información en la Web.
  • RDF Schema (RDFS): este componente extiende RDF con un vocabulario que puede ser empleado para describir propiedades RDF y relaciones entre esas propiedades y otros recursos.
  • Web Ontology Language (OWL): esta capa extiende RDFS para obtener un lenguaje completo para la definición de ontologías.
  • Rule Interface Format (RIF): esta capa tiene como meta proporcionar un lenguaje común para representar y expresar reglas.
  • SPARQL Protocol and RDF Query Language (SPARQL): este componente proporciona un protocolo y lenguaje de consulta para la gestión de los datos semánticos de la Web.

La minería de Estructuras Semánticas se puede definir como aquella disciplina extendida de la minería de datos en la que es posible descubrir y extraer información automáticamente de los datos presentes en el contexto de la WEB.

Fases del Descubrimiento de Conocimiento

 

Los procedimientos típicos para la selección y la transformación de datos en la Minería WEB son los siguientes:

  1. La localización y descubrimiento de fuentes de información sobre la que se aplicará el proceso de minería.
  2. Selección y pre – procesado, en la cual se extrae de forma automática información específica de las fuentes antes mencionadas por medio de procesos de selección y transformación de datos.
  3. Reconocimiento de patrones generales encontrados durante la etapa de extracción, como el agrupamiento de clúster y reglas de asociación para diagnosticar la secuencia de patrones.
  4. Proceso de análisis, en la cual se desarrollan técnicas y herramientas que permitan modelar la forma en que se utiliza el conocimiento.

Herramientas

Para analizar las diferentes opciones que nos permiten trabajar con datos no estructurados y jerarquizados hemos estado investigando diferentes “plugins” que ofrece la herramienta Rapidminer, como:

  1. Linked Open Data Extension

Es una extensión del software de minería de datos de código abierto que permite el uso de datos de datos abiertos vinculados tanto como una entrada para la minería de datos, así como para enriquecer los conjuntos de datos existentes con conocimientos de fondo.

Proporciona tres categorías principales de operadores:

  • Importadores de datos que cargan datos de Linked Open Data para su procesamiento posterior.
  • Enlaces que crean vínculos desde un conjunto de datos dado a un conjunto de datos en Linked Open Data (por ejemplo, vinculando un archivo CSV a DBpedia).
  • Generadores que recopilan datos de Linked Open Data y lo añaden como atributos en el conjunto de datos a mano.
  1. Semweb

Transforma las triplas de RDF en un conjunto de ejemplos y luego se puede aplicar cualquier tipo de aprendizaje sobre dichos datos. Proporciona dos operadores de transformación de datos con algoritmos ‘FastMap’ y ‘Correspondence Analysis’ y un operador de visualización para ver el proceso subyacente mediante la visualización de la matriz de distancia y la matriz de datos transformados. Estas técnicas de transformación de datos utilizan las cuatro métricas de distancia Levenshtein, Dice-coefficient, VDM and VDM-SetValue, que también forman parte del proyecto.

Proceso con operadores Semweb
  1. RMONTO

Es un framework fácilmente extensible, actualmente provee soporte para clustering no supervisado con métodos de kernel y modelación de patrones en bases de conocimiento. Una característica importante de RMonto es que permite trabajar directamente en datos estructurados y relacionales. Además, sus implementaciones de algoritmos personalizados pueden combinarse con la potencia de RapidMiner a través de la transformación / extracción de los datos ontológicos a los datos de valor de atributo.

Como triplestore se ha elegido a Virtuoso para almacenar las anotaciones de las ontologías.

Virtuoso es una solución moderna para el acceso a datos, integración y gestión de bases de datos relacionales (tablas SQL y/o RDF basados en gráficos de propiedades/predicados).

 

 

Modelo Semántico de Segmentación

El clustering o segmentación se caracteriza por ser una técnica de aprendizaje automático no supervisado. Esto significa que un algoritmo de clustering deberá ser capaz de establecer por sí mismo patrones de comportamiento genérico en la muestra de datos y a su vez categorizar cada instancia de datos en alguno de los grupos formados.

Todas las pruebas y ejemplos las hemos realizado con los operadores de RMonto y una ontología de cáncer de mama.

Operadores utilizados:

Selector SPARQL ( Ejemplo de query para seleccionar los datos a tratar):

select distinct
?paciente ?pc ?historial ?edad ?episodio ?fecha_episodio ?diagnostico_valor ?fecha_diagnostico ?tratamiento_valor ?farmaco
where {
?paciente historial:hasHistory ?his.
?paciente historial:hasPatientCode ?pc.
FILTER(regex(?pc,’MAMA’))
?paciente historial:hasHistory> ?historial.
?paciente historial:hasAge ?edad.
?historial historial:hasEpisode ?episodio.
?episodio historial:hasDate ?fecha_episodio.
?episodio historial:hasDisease ?diagnostico.
?diagnostico historial:hasDiseaseValue ?diagnostico_valor.
?diagnostico historial:hasDate ?fecha_diagnostico.
?diagnostico historial:hasTreatment ?tratamiento.
?tratamiento historial:hasTreatmentValue ?tratamiento_valor.
?tratamiento historial:hasPharmacologicSubstance ?farmaco.
}
order by ASC(?his) ASC(?episodio)

Fr-ONT-Qu: Descubre patrones frecuentes en la Knowledge Base semántica en formas de patrones SPARQL. El espacio de búsqueda está restringido sólo a las partes especificadas en Classes, Abstract properties y Concrete properties parameters. La selección de los mejores patrones se puede hacer de manera no supervisada (Support on KB) o supervisada (el resto de las medidas).

 

 

 

Los patrones generados por este operador a partir de la consulta Sparql, teniendo en cuenta las clases y las propiedades de la ontología seleccionadas, nos genera una tabla con los patrones más frecuentes que serán utilizados por el operador Propositionalisation para transformar estos ejemplos de aprendizaje ó patrones frecuentes en una tabla de atributos-valor.

 

Propositionalisation: Convierte la lista de patrones y ejemplos frecuentes obtenidos por el operador Fr-ONT-Qu  en una tabla de atributos-valor, donde los atributos son los patrones obtenidos y los valores puede ser 0 (si el ejemplo no satisface el patrón) ó 1 (si el ejemplo satisface el patrón), como puede verse aquí arriba.

 

Procesamos el modelo de Clustering.

URI attributes: Lista de atributos con URI de individuos a ser utilizados. (Se seleccionan manualmente, una mejora al sistema sería la selección automática de los mismos por medios analíticos).

Normal attributes: Lista de atributos con valores concretos a utilizar.

Probamos con k= 5,  Kernel function= Identity, obteniendo estos resultados:

Clusters: (por cada cluster, nos muestra el centroide o perfil representativo de cada muestra, y se basa en el diagnóstico, tratamiento, tipo de acción médica, y edad)
1:    [http://www.HOBC.org/clinicalrecords#Breast_Carcinoma,http://www.HOBC.org/clinicalrecords#Zoladex_,http://www.HOBC.org/clinicalrecords#Revision_procedure,34]
2:    [http://www.HOBC.org/clinicalrecords#Endometrial_Polyp,http://www.HOBC.org/clinicalrecords#Tamoxifen_,http://www.HOBC.org/clinicalrecords#Therapeutic_procedure,34]
3:    [http://www.HOBC.org/clinicalrecords#Infiltrating_Ductal_Carcinoma,http://www.HOBC.org/clinicalrecords#Tamoxifen_,http://www.HOBC.org/clinicalrecords#Hormone_Therapy_Procedure,57]
4:    [http://www.HOBC.org/clinicalrecords#Secondary_malignant_neoplasm_of_bone,http://www.HOBC.org/clinicalrecords#Analgesics_,http://www.HOBC.org/clinicalrecords#Exploration_procedure,57]
5:    [http://www.HOBC.org/clinicalrecords#Secondary_malignant_neoplasm_of_bone,http://www.HOBC.org/clinicalrecords#Analgesics_,http://www.HOBC.org/clinicalrecords#Therapeutic_procedure,57]

Probamos con k= 3, Kernel function= Identity, obteniendo estos resultados:

Clusters:
1:    [http://www.HOBC.org/clinicalrecords#Breast_Carcinoma,http://www.HOBC.org/clinicalrecords#Zoladex_,http://www.HOBC.org/clinicalrecords#Revision_procedure,34]
2:    [http://www.HOBC.org/clinicalrecords#Endometrial_Polyp,http://www.HOBC.org/clinicalrecords#Tamoxifen_,http://www.HOBC.org/clinicalrecords#Therapeutic_procedure,34]
3:    [http://www.HOBC.org/clinicalrecords#Secondary_malignant_neoplasm_of_bone,http://www.HOBC.org/clinicalrecords#Analgesics_,http://www.HOBC.org/clinicalrecords#Therapeutic_procedure,57]

 

 

Y finalmente con k= 2, Kernel function= Identity, que nos dan este resultado:

Clusters:
1:    [http://www.HOBC.org/clinicalrecords#Secondary_malignant_neoplasm_of_bone,http://www.HOBC.org/clinicalrecords#Analgesics_,http://www.HOBC.org/clinicalrecords#Therapeutic_procedure,57]
2:    [http://www.HOBC.org/clinicalrecords#Breast_Carcinoma,http://www.HOBC.org/clinicalrecords#Zoladex_,http://www.HOBC.org/clinicalrecords#Revision_procedure,34]

Midiendo estadísticos de comparativa entre las distintas segmentaciones, el sistema nos indica que la mejor “ganancia de información” se obtiene con las segmentación K=2.

Obtenemos un clúster de procedimiento terapéutico y otro clúster de procedimiento de revisión, como podemos ver en el gráfico:

 

Eliminamos el filtro de ‘MAMA’ para obtener una segmentación de todos los historiales y volvemos a procesar la segmentación con K=2, Kernel function= Identity, obteniendo estos resultados:

Clusters:
1:
[http://www.HOBC.org/clinicalrecords#Meningeal_Carcinomatosis,http://www.HOBC.org/clinicalrecords#Acetaminophen_,http://www.HOBC.org/clinicalrecords#Sedation_procedure,59]
2:
[http://www.HOBC.org/clinicalrecords#Malignant_neoplasm_of_breast,http://www.HOBC.org/clinicalrecords#Nolvadex_,http://www.HOBC.org/clinicalrecords#Hormone_Therapy_Procedure,53]

Ahora vamos a investigar cada una de las segmentaciones obtenidas para ver si a su vez existe la posibilidad de afinar más el modelo obteniendo sub segmentaciones de cada segmento.

Para generar estas sub segmentaciones, he intentado utilizar el mismo modelo de RMonto, pero no ha sido posible por lo que al final utilizo un modelo k-Means pero usando los atributos semánticos:

 

 

El segmento_nivel 0 de menores de 56 años se divide en 3 clúster:

Objetivo: ?tratamiento_valor

Objetivo: ?farmaco

 

El segmento_nivel de los mayores de 55 años nos da el siguiente resultado:

 

Objetivo: ?tratamiento_valor

 

Objetivo: ?farmaco

 

 

Resultados:

  • Se genera un sistema de segmentación en jerarquía, en dos niveles….
    • El primer nivel devuelve 2 segmentos diferentes (Segmento_nivel0), uno con los pacientes mayores de 55 años y el otro con los menores de 56 años.
    • El segundo nivel, devuelve 3 subsegmentos (clúster) por cada uno de los segmentos principales.

Otros operadores:

Epistemic kernel: Núcleo semántico utilizando un conjunto de características. El conjunto de características se puede construir con operadores en el grupo TBox.

EL++ Convolution kernel: Núcleo semántico derivado de núcleos de gráfos.

ALCN kernel: Núcleo semántico para el lenguaje ALCN que trabaja en forma normal disyuntiva.

Calculate Gram/distance matrix: Calcula Matriz de valores de núcleo (o distancias) entre cada una de las tuplas dadas. Una tupla contiene al menos un URI que identifica un individuo en Knowledge Base y cero o más valores literales. El resultado es un EjemploSet con tres columnas, las dos primeras contienen descripciones de las tuplas comparadas y la tercera contiene kernel o valor de distancia.

Transform Semantic Clustering Model: transforma el modelo de agrupación semántica en modelo normal.

Add label from KB: Extiende los ejemplos dados con valores de propiedad de tipo de datos recuperados de la base de conocimientos dada.

Extract all clases: Genera una lista de todas las clases, nombradas y sin nombre, que están disponibles en KB.

Create TBox features: Le ayuda a crear un conjunto de funciones TBox.

Modelo Semántico de Anomalías

Al modelo de Segmentación le añadimos el operador Local Outlier Probablity (LoOP) y obtenemos el modelo semántico de anomalías.

Al operador Local Outlier Probablity (LoOP) le rellenamos estos parámetros:

 

Obtenemos este resultado, donde al lado del cluster nos aparece el outlier.

 

En este gráfico podemos ver claramente los outlier que indican una anomalía:

 

 

Modelo Semántico Árbol de Decisión

Como objetivo utilizamos el atributo ?diagnostico_valor y utilizamos el operador Decision Tree.

El operador de Correlación nos da como resultado estos atributos como los que tienen más correlación con nuestro label.

Siendo el principal el fármaco.

 

El resultado del Árbol de Decisión:

Tree
?edad = 28: Malignant_neoplasm_of_breast
?edad = 34
|   ?tratamiento_valor = Revision_procedure: Breast_Carcinoma
|   ?tratamiento_valor = Therapeutic_procedure
|   |   ?farmaco = Gonadorelin_: Neoplasm
|   |   ?farmaco = Tamoxifen_: Neoplasm
|   |   ?farmaco = Zoladex_: Endometrial_Polyp
?edad = 46: Adenocarcinoma
?edad = 53: Malignant_neoplasm_of_breast
?edad = 54
|   ?tratamiento_valor = Hormone_Therapy_Procedure: Invasive_Ductal_Breast_Carcinoma
|   ?tratamiento_valor = Revision_procedure: Infiltrating_Ductal_Carcinoma
|   ?tratamiento_valor = Therapeutic_Radiology_Procedure
|   |   ?farmaco = capecitabine_: Adenocarcinoma
|   |   ?farmaco = letrozole_: Invasive_Ductal_Breast_Carcinoma
|   ?tratamiento_valor = Therapeutic_procedure: Invasive_Ductal_Breast_Carcinoma
?edad = 55: Neoplasm_Metastasis
?edad = 56: Carcinomatosis_of_peritoneal_cavity
?edad = 57
|   ?tratamiento_valor = Demand_clinical: Neoplasm_Metastasis
|   ?tratamiento_valor = Drainage_procedure: Ductal_Carcinoma_
|   ?tratamiento_valor = Exploration_procedure: Secondary_malignant_neoplasm_of_bone
|   ?tratamiento_valor = Hormone_Therapy_Procedure: Infiltrating_Ductal_Carcinoma
|   ?tratamiento_valor = Therapeutic_procedure
|   |   ?farmaco = Analgesics_: Secondary_malignant_neoplasm_of_bone
|   |   ?farmaco = Hyrex_Brand_of_Dimenhydrinate: Secondary_malignant_neoplasm_of_bone
|   |   ?farmaco = Lyrica_: Neoplasm_Metastasis
|   |   ?farmaco = Omeprazole_: Neoplasm_Metastasis
?edad = 59: Meningeal_Carcinomatosis
?edad = 62: Neoplasm_Metastasis
?edad = 66: Colon_Carcinoma
?edad = 69: Adenocarcinoma
?edad = 76: Carcinoma
?edad = 77: Disseminated_carcinoma
 

Modelo Semántico de Reglas de Clasificación

Seguimos con nuestro objetivo de ?DiagnosticoValor.

Utilizamos el operador Rule Induction e utilizamos estos parámetros:

 

 

La correlación de atributos es la misma que el modelo del Árbol de Decisión y obtenemos estas reglas de clasificación:

RuleModel
if ?edad = 55 then Neoplasm_Metastasis
if ?edad = 54 and ?tratamiento_valor = Therapeutic_procedure then Invasive_Ductal_Breast_Carcinoma
if ?edad = 59 then Meningeal_Carcinomatosis
if ?edad = 57 and ?tratamiento_valor = Therapeutic_procedure then Neoplasm_Metastasis
if ?edad = 76 then Carcinoma
if ?edad = 46 then Adenocarcinoma
if ?tratamiento_valor = Hormone_Therapy_Procedure and ?edad = 57 then Infiltrating_Ductal_Carcinoma
if ?edad = 66 then Colon_Carcinoma
if ?farmaco = Zoladex_ and ?tratamiento_valor = Revision_procedure then Breast_Carcinoma
if ?edad = 28 then Malignant_neoplasm_of_breast
if ?edad = 34 and ?farmaco = Gonadorelin_ then Neoplasm
if ?edad = 34 and ?farmaco = Zoladex_ then Endometrial_Polyp
if ?edad = 62 then Neoplasm_Metastasis
if ?edad = 77 then Disseminated_carcinoma
if ?edad = 69 then Adenocarcinoma
if ?tratamiento_valor = Revision_procedure then Infiltrating_Ductal_Carcinoma
if ?edad = 54 and ?tratamiento_valor = Hormone_Therapy_Procedure then Invasive_Ductal_Breast_Carcinoma
if ?tratamiento_valor = Exploration_procedure then Secondary_malignant_neoplasm_of_bone
if ?tratamiento_valor = Demand_clinical then Neoplasm_Metastasis
if ?edad = 57 then Ductal_Carcinoma_
if ?edad = 34 and ?tratamiento_valor = Therapeutic_procedure then Neoplasm
if ?edad = 56 then Carcinomatosis_of_peritoneal_cavity
if ?farmaco = capecitabine_ then Adenocarcinoma
if ?edad = 54 then Invasive_Ductal_Breast_Carcinoma  else Malignant_neoplasm_of_breast
correct: 47 out of 50 training examples.

Consideramos que las reglas de clasificación son más fáciles de anotar en la ontología, pero no existe ningún operador que actualice la ontología con los resultados obtenidos.

 

Conclusiones

 

Los tiempos de respuesta obtenidos como resultado de las pruebas efectuadas nos hacen pensar que el Modelado sobre Estructuras Semánticas puede ser una muy buena alternativa para abordar estos temas sobre fuentes semánticas de información.
Sin embargo y pese a todas las bondades que parece tener el uso de arquitecturas basadas en tecnologías como SPARQL, RDF,  y que sin lugar a dudas, representan la mejor opción en temas de consulta semántica de información, existen problemas de actualización de las herramientas y de sus compatibilidades.
Algunos de los argumentos a  favor o en contra que permiten sustentar esta afirmación, se mencionan a continuación:
  1. Nos permite manejar una gran cantidad de datos.
  2. Datos limpios. Los datos con ruido y corruptos pueden esconder las predicciones y hacerlas más difíciles. La entrada de los datos de forma manual y la integración con los sistemas de envío pueden introducir inconsistencias y anomalías.
  3. El contenido semántico de los documentos que se coloca en Internet, permite una mejor organización de la información, mucho más definida, ya que se lleva a cabo a través de conceptos, “garantizando búsquedas por significado y no por contenido textual”.
  4. Mejora la obtención de conocimiento hasta el momento reservada a las personas y hace posible el uso de modelos de inteligencia artificial.
  5. Una desventaja, es la complejidad de la codificación semántica, es necesario unificar los estándares semánticos, otro laborioso proceso.
  6. Otra desventaja es que la sintaxis RDF/ZML no es muy fácil de leer.
  7. RMonto no ha sido actualizado desde 2012 y las demás herramientas están en fase de experimentación y sería necesario utilizar otros software (Python, R, …) para poder realizar lo que hemos visto en estas pruebas.
  8. Este software no permite realizar inserciones en la ontología, es decir, que no podemos actualizar el conocimiento y deberemos apoyarnos en otro software para ello.
  9. Finalmente, el sistema desarrollado pone de manifiesto la importancia de la Web Semántica como futuro de Internet, demostrando la capacidad del modelo RDF para la comunicación de conocimiento y de las ontologías para expresarlo.
  10. No existen prácticamente diferencias con la minería clásica en los algoritmos utilizados para realizar los modelos. Solamente hay que realizar una doble selección separada de atributos, por un lado los semánticos y por otro los datos normales.

Como hacer tu blog accesible semánticamente en LinkedData. Un ejemplo sencillo y práctico.

Oct 1, 2013   //   by wpuser   //   Semántica  //  Comentarios desactivados en Como hacer tu blog accesible semánticamente en LinkedData. Un ejemplo sencillo y práctico.

Las paginas Web actuales, tienen dos formas de ser indexadas y analizadas… Una, buscando e interpretando el fichero HTML de las páginas por los humanos, a través de buscadores, que básicamente, indexan información “meta” dentro de las páginas, y leyéndolas, y otra, permitiendo que sean las propias máquinas las que lean el contenido (URI, o cualquier concepto abstracto con información) de forma automática de las páginas, lo “comprendan”, y lo indexen, en los llamados buscadores semánticos, (hay varios, cada vez más), y que permiten que los contenidos relacionados estén disponibles en la nube de LinkedData, para compartirlos con el mundo, e incluso, enlazar dicha información con otros “datasets” disponibles.

Básicamente, hay dos estándares para realizar este tipo de publicaciones, que son RDF, admitida por la comunidad W3C, como el estándar semántico por excelencia, basado en tripletas (sujeto->objeto->predicado), y RDFa, (microformatos), basados en una estandarización llamada Schema, promocionada por los grandes buscadores, como Google, Yahoo y Bing.

Transformar nuestra información en tripletas semánticas no es demasiado complicado, y existen numerosas herramientas que nos permiten realizarlo, y en numerosas plataformas de programación. La ventaja de utilizar RDF es que existen numerosos vocabularios ya estándares que permiten a las máquinas entender qué es cada concepto. El mejor ejemplo es Dbpedia, que es básicamente, el contenido de la wikipedia estructurado en tripletas con vocabularios normalizados que las máquinas entienden. Por ejemplo, si buscamos en Wikipedia, “Kutxa”, tendremos la siguiente información:

 kuctawikipedia

Pero si buscamos en dbpedia, la misma información, veremos que ya está “normalizada” en formato RDF, accesible y comprensible para las máquinas:

 kutxadbpedia

 Es como si el sistema fuese capaz de incluir en una Base de Datos la información de la Wikipedia, pero en vez de estar alojada en nuestros servidores, está disponible en Internet, que se convertirá en la gran Base de Datos distribuida y normalizada para todos, incluidas las máquinas.

Una vez generado el fichero .rdf, hay que publicarlo para que los buscadores semánticos o el mundo, sean capaces de reconocerlos, y aquí, también hay varias formas: o almacenarlas en una base de datos especial, que trabaja con tripletas, como Virtuoso u otras, o publicarlas como un archivo accesible desde nuestra Web, adjuntando el enlace a dicho archivo al HTML de turno, y así, ya tendremos disponible la información para el mundo. ¿Cómo hacerlo? Ver:  How to publish Linked Data on the Web

La idea de este post es mostrar cómo podemos publicar información general sobre nuestra web, y nuestros posts en una plataforma de blogs (por ejemplo, WordPress), para que sean accesibles al mundo.

Una buena manera es empezar con nosotros mismos, creando lo que llamamos un archivo “foaf“, que muestra al mundo quienes somos. FOAF es una aplicación de XML y RDF. Básicamente es un archivo XML (en realidad, RDF escrito en XML) con el cual se describen PersonasDocumentos, etc, siendo su uso en la descripción de personas el más interesante hoy por hoy.

Una de las formas más sencillas de darse a conocer en el mundo semántico es a través de una sencilla aplicación, llamada Foaf-a-matic, que en un pequeño formulario,  nos permite generar nuestro archivo .rdf con nuestra información.  Accesdemos a la páqina, rellenamos nuestros datos, y generamos nuestro fichero rdf. Todos los pasos está muy bien descritos en la página: http://www.ldodds.com/foaf/foaf-a-matic.es.html

Es interesante, si ya tenemos otros rdf que nos interesa que los buscadores infieran nuevo conocimiento sobre ellos, incorporarlos a Foaf, como “seaaAlso” si son recursos externos, o como “knows”, si son personas.

 Por ejemplo, dentro del RDF que hace referencia al blog: (rtdibermatica.rdf):

<dct:contributor>
      <rdf:Description>
        <foaf:name rdf:resource=”http://rtdibermatica.com/AitorMoreno.rdf#me“></foaf:name>
        <rdfs:seeAlso rdf:resource=”http://rtdibermatica.com/AitorMoreno.rdf#me” />
        <foaf:holdsAccount rdf:resource=”http://rtdibermatica.com/AitorMoreno.rdf#me“/>
      </rdf:Description>
    </dct:contributor>

o dentro del foaf propio, hacer referencia al blog: (en AitorMoreno.rdf):

<foaf:homepage rdf:resource=”http://rtdibermatica.com“/>
<rdfs:seeAlso rdf:resource=”http://rtdibermatica.com/rtdibermatica.rdf“/>

  Podemos incrementar la información con los siguientes enlaces:

foaf:workplaceHomepage rdf:resource=”http://ibermatica.com/innovacion“/>
<foaf:workInfoHomepage rdf:resource=”http://rtdibermatica.com“/>
<schema:worksFor rdf:resource=”http://ibermatica.com/innovacion“/>
<foaf:interest rdf:resource=”http://dbpedia.org/resource/Semantic_Web“/>
<foaf:interest rdf:resource=”http://dbpedia.org/resource/Data_Mining“/>
<foaf:interest rdf:resource=”http://dbpedia.org/resource/Artificial_Intelligence“/>

 Y enlaces a las publicaciones que tiene:

 <owl:sameAs rdf:resource= “http://dblp.l3s.de/d2r/resource/authors/Aitor_Moreno“/>

Bien, ya tenemos nuestro rdf, que podemos validar si es correcto con la herramienta W3C, rdfvalidator(u otros validadores en formato y tiempo), como:

 rdfvalidator

Como ya está validado, y es correcto, sólo tenemos que subir dicho fichero a nuestro sitio web (vía FTP, o como podamos), y alojarlo como parte de nuestro blog.

Una vez subido nuestro fichero, deberíamos poder ver el archivo accediendo a su ruta desde la Web (por ejemplo, http://rtdibermatica.com/AitorMoreno.rdf), o de la forma indirecta http://rtdibermatica.com/AitorMoreno.rdf#me.

Para que los “robots” automáticos de los buscadores semánticos sean capaces de encontrar esta información, deben ser capaces de gestionarla con un tipo de negociación basada en un tipo type=”application/rdf+xml”. Algunos servidores no son capaces de realizarlo, y para ello, hay que configurar un fichero, sito en la raiz de WordPress, junto con el fichero index.php, llamado .htaccess, y añadiendo la siguiente línea (esto es vital para que la negociación funcione):

# Directive to ensure *.rdf files served as appropriate content type, # if not present in main apache config AddType application/rdf+xml .rdf

Si todo está bien configurado, con la herramienta Vapour Validator, podemos ver que si introducimos nuestra URL a nuestro RDF, todo va bien:

 vapourvalidator_ok

 

Pero no es suficiente con que los buscadores ya encuentren nuestro archivo “foaf” vía nuestro directorio FTP, sino que además, es interesante que incluyamos en nuestro HTML una referencia (como si fuese un link), ha dicho archivo, para que los buscadores, cuando lean los HTML, lo encuentren y lo interpreten.

Para ello, hay que incluir en nuestra página Web, en las cabeceras del html, en la sección “meta”, el siguiente enlace:

<link rel=”meta” type=”application/rdf+xml” title=”FOAF” href=”foaf.rdf” />

Desde WordPress, tenemos algunos plugins que nos permiten hacer esto. El principal que instalamos es wp-rdfa, que nos permite incluir de forma automática, después de parametrizarlo, un enlace a los rdf por cada post o página que automáticamente creemos en WordPress. Hay que configurar el plugin, y cambiar el código un poco, pero es muy sencillo: básicamente, en la función insert_foaf_meta_tag, hay que cambiar el foaf.php que viene por defecto, por el nuestro (está muy bien explicado en Semantic Web: FOAF en WordPress » InGonza.com):

function insert_foaf_meta_tag() {

echo ‘<link rel=”meta” href=”http://www.rtdibermatica.com/rtdibermatica.rdf” type=”application/rdf+xml” title=”FOAF”/>’;

}

De esta forma, tendremos en la cabecera de todas nuestras páginas por WordPress, la siguiente cabecera:

<link rel=’archives’ title=’julio 2011′ href=’http://rtdibermatica.com/?m=201107‘ />
<link rel=”meta” href=”http://www.rtdibermatica.com/rtdibermatica.rdf” type=”application/rdf+xml” title=”FOAF”/>

Otro plugin que convierte nuestros post en enlaces RDF para ser descubirtos, en formato de publicaciones de revistas y artículos de interés, que también hemos incorporado a nuestro blog es el plugin Enhanced Publication

Una vez que ya hemos incluido nuestros archivos semánticos en la red, podemos ver los servicios de indexación de distintas plataformas, como por ejemplo:

Para que nuestra información sea recogida por los numerosos robots semánticos que actúan en los buscadores, hay estrategias que ayudan a los mismos a encontrar los ficheros rdf en nuestros servidores, estrategias como Semantic Web Crawling: A Sitemap ExtensionSindice Search Engine SupportDisco – Hyperdata Browser, y más….

Por último, podemos indexar directamente nuestra información en Sindice, para que sea visible en el mundo de LinkedData.

Una vez publicada, podemos ver cómo aplicaciones de terceros, utilizan foaf como entrada ( FoafSites – W3C Wiki)

Finalmente, podremos acceder a nuestra información, vía un explorador de foaf (FoafExplorer), o Yandex (livejournal), y relacionarla con otro tipo de información (dbpedia), haciendo “queries”, tipo “Selects SQL”, a la web, a través de el lenguaje SPARQL (a través de JENA, por ejemplo, o de la librería Semantic Web Client Library).

Un ejemplo sencillo es utilizar Twinkle, o Triplr, con el que podemos acceder a nuestros datasets:

 sparqltwinkle

Se pueden hacer consultas del tipo (“devuelve todas las tripletas de dos namespaces):

 Select * 
from <http://rtdibermatica.com/AitorMoreno.rdf>
from <http://rtdibermatica.com/rtdibermatica.rdf>
where {?x ?y ?z}

Finalmente, si no queremos usar SPARQL para realizar nuestras consultas por falta de conocimientos técnicos, podemos utilizar herramientas gráficas como Yahoo Pipes, que de una forma más sencilla, nos permitirá enlazar estos datos en la web en formato RDF, con otros datos disponibles…

A a hora de indexar nuestra información en buscadores como GoogleBot, estos buscan un fichero rdf para indexar esta información (index.rdf), que, desde WordPress se configura automáticamente en base a sus ficheros index.php y wp-rdf.php, pero que podemos generar manualmente, como se escribe en Generating RDF from data.gov – Data-gov Wiki, para mejorar el posicionamiento de nuestra web.

Si alguien tiene más interés en el modelado semántico de posts, o páginas web, o publicar datos masivos en formato LinkedData (OpenData a nivel internacional) no dudéis en poneros en contacto con I3B...