Grafos de conocimiento - LVilla/Knowledge-Graph GitHub Wiki
Knowledge Graph
Definición:
Un Grafo de Conocimiento entiende cualquier hecho sobre personas, lugares y todo tipo de cosas y cómo todas estas entidades están conectadas entre sí. Es una forma de conectar y unificar de manera significativa la información y hacerla interrogable de manera natural para las personas con el fin de lograr una web más inteligente.
El término Knowledge Graph, hace referencia al almacenamiento del conocimiento en una estructura de grafo. Entre el conocimiento almacenado en el mismo, se incluye información semántica, es decir el significado de las entidades como palabras de un lenguaje. Esta información incluye tanto información semántica de la propia entidad (Ejemplo: la entidad ‘persona’ tiene un atributo ‘edad’), como información semántica relativa a las relaciones semánticas entre dos entidades (Ejemplo: la entidad ‘gato’ tiene una relación ‘es un’ con la entidad ‘animal’)
Básicamente un grafo es una estructura compuesta por un conjunto de nodos y aristas, en la que los nodos serían las entidades y las aristas las relaciones entre las distintas entidades. Se puede almacenar información tanto en los nodos como en las relaciones.
Aunque el concepto Knowledge Graph es relativamente nuevo, el estudio y aplicación de grafos es un tema muy antiguo. El primer artículo científico sobre grafos fue escrito en el año 1736 por el matemático Euler.
Actualmente los sistemas no trabajan con individuos aislados, para determinar su funcionamiento y respuesta, sino que tienen en cuenta las relaciones de un individuo con el resto de individuos incluidos en el sistema.
Estas relaciones entre entidades pueden ser explícitas, una entidad se relaciona directamente con otra, o implícitas, dos entidades no están directamente relacionadas pero existe una relación indirecta entre ambas. Los grafos de conocimiento facilitan el descubrimiento de las relaciones implícitas entre entidades.
Ventajas de aplicar esta tecnología
- Alta escalabilidad a grandes conjuntos de datos ya que no requieren de costosas operaciones de combinación.
- Mayor capacidad y rapidez de procesamiento de consultas que impliquen la exploración de un gran número de relaciones. La velocidad de ejecución de consultas del tipo ‘Quiero saber que amigos de mis amigos conocen a María’, que implican la búsqueda de relaciones de profundidad tres o más, es mayor que con por ejemplo con una base de datos SQL. Está diferencia aumenta cuanto mayor es el conjunto de entidades y relaciones con las que se trabaja.
- El esquema regular e independiente del dominio que utilizan las bases de datos orientadas a grafos permite la implementación de funcionalidad estándar que se abstraer del área de conocimiento sobre el que se aplica, de manera que sería aplicable a información perteneciente a cualquier dominio de conocimiento.
- El esquema flexible facilita la incorporación de conocimiento, mejorando así la capacidad de aprendizaje del sistema correspondiente.
- Gracias a la incorporación de información semántica, mejoran notablemente las capacidades relacionadas con el procesamiento del lenguaje natural, tales como la desambiguación de términos, ya que facilitan la contextualización de un término para así comprender a qué concepto se está haciendo referencia en un momento dado.
- Facilita la capacidad de inferencia del sistema, ya que se puede descubrir nuevo conocimiento en el grafo, gracias al análisis de las relaciones entre las entidades.
Principales aplicaciones de grafos de conocimientos
En base a las características y ventajas que presentan los grafos de conocimiento, analizamos algunas de las aplicaciones principales de este sistema:
- Sistemas de recomendación: el funcionamiento de los algoritmos de recomendación se basa en las relaciones entre las entidades relevantes para el dominio en el que se desee llevar a cabo la recomendación: normalmente personas y cosas.
- Redes sociales: se puede predecir el comportamiento de un individuo, sin apenas tener información del mismo, en base a cómo se relaciona con otros individuos.
- Aplicaciones sobre redes: red de metro, red carreteras… Para dar solución a problemas como el camino más corto entre dos puntos de una red de carreteras o como recorrer todos las estaciones de metro sin pasar dos veces por ninguno de los puntos.
En nuestro entorno, podemos ver algunos ejemplos de aplicaciones reales de esta tecnología:
Google Knowledge Graph:
Como se ha comentado anteriormente, una de las principales características de los grafos de conocimiento es la mejora de tareas de procesamiento de lenguaje natural, gracias a la incorporación de información semántica. Esta característica hace que este tipo de estructuras sean idóneas para la construcción de buscadores en lenguaje natural.
Desde hace algo más de dos años Google, el buscador más importante del mundo online, ha incorporado un Knowledge Graph a su algoritmo de búsqueda que es capaz de desambiguar la búsqueda y contextualizarla, mejorando de manera notable el funcionamiento del mismo para la ejecución de búsquedas semánticas.
Gracias a ello, el buscador es capaz de responder con información concreta y detallada que da respuesta de manera directa a nuestra consulta sin la necesidad de tener que acceder a ninguna de las páginas web que nos muestra también como resultado de la búsqueda.
Facebook Graph: Otra de las principales aplicaciones de los grafos de conocimiento son las redes sociales. Los knowledge graph que modelizan este tipo de conocimiento se conocen como: Social Graph. En las redes sociales, como el propio nombre de ‘red’ indica, la mayor parte de la información que se almacena son las relaciones entre los individuos, por lo que el almacenamiento de la información en un grafo es de gran utilidad.
Una de los casos más relevantes de está aplicación de los grafos, es el caso de Facebook Graph. El Social Graph de Facebook, además de incluir información de personas, incluye otro tipo de entidades, pero gestiona todos los tipos de entidades de la misma forma.
Actualmente existen un gran número de fuentes Open Data con información de valor, que pueden ser embebidas de manera sencilla y de las que se puede adquirir información de gran valor e incluirlo en un grafo de conocimiento. Algunas de las fuentes Open Data destacadas son:
- Dbpedia: Importa información de Wikipedia. Los datos se actualizan varias veces al año.
- Freebase: Importa los datos de distintas fuentes, entre las que se encuentra Wikipedia. Clasifica la información en diversos dominios, lo que permite realizar búsquedas en un dominio concreto.
Pensemos, por ejemplo, en el caso de uso de la búsqueda de posibles candidatos para una oferta de empleo. Tenemos una oferta de trabajo para el puesto ‘Técnico de innovación’ en la que se ha definido como requisito que se necesitan conocimientos del lenguaje de programación ‘node.js’. Por otro lado, tenemos un candidato con nombre ‘Laura’ que tiene conocimientos del lenguaje de programación ‘javascript’.
Bibliografía
- Knowledge Graph: una nueva fuente de conocimiento. (2018). Retrieved from https://labs.beeva.com/knowledge-graph-una-nueva-fuente-de-conocimiento-ca645a77fd68
- McCusker, J. (2018). What is a Knowledge Graph?. Retrieved from https://www.authorea.com/users/6341/articles/107281-what-is-a-knowledge-graph/_show_article