Blog

Cómo construir un grafo de comunicación a partir de un listado de proyectos
Negocios

Cómo construir un grafo de comunicación a partir de un listado de proyectos

Cómo construir un grafo de comunicación automáticamente a partir de un listado de proyectos

Los grafos de comunicación es una estructura en red que permite visualizar como las comunicaciones, información y decisiones fluyen en una organización, convirtiéndose así, en la base fundamental para la aplicación de un análisis de redes organizacionales ONA. Un ejemplo de esta red es la imagen principal, ejemplo de una red de comunicación organizacional.

A continuación se mostrará cómo construir una red de comunicación automáticamente usando como entrada un listado de proyectos y miembros de una organización, con una estructura de datos similar a la expuesta en la siguiente imagen:

Fig 1. Estructura de proyectos

proyectos

El paquete de herramientas de modelamiento y el orden en que se usarán es el siguiente:

Fig 2. Herramientas a utilizar

herramientas

  • Google Sheet: Es un software en la nube (SaaS) que permite crear y manipular hojas de cálculo.
  • Knime: Es una plataforma de minería de datos de gran poder en la manipulación de datos.
  • Neo4J: Es una base de datos NoSQL orientada a grafos, su arquitectura de grafos es efectiva para modelar y visualizar aquellas situaciones que por naturaleza son redes, como es nuestro caso.

Lo primero que haremos será exportar nuestro listado de proyectos en un formato .csv o .tsv para que se pueda leer en Knime, luego haremos la limpieza que sea necesaria y usando los nodos de group by obtendremos por separado el conjunto de proyectos y el conjunto de personas (miembros), los cuales se convertirán en nodos para neo4j así:

Fig 3. Ruta de Knime para traducir celdas en nodos

comunicacionDentro del método “create node” se encuentra el pre-proceso que se sigue para crear las consultas (queries) en cypher (el lenguaje de consulta de Neo4j).

Fig 4. Método “create node”

ruta

A través de los nodos vamos preprocesado cada celda hasta convertirla en la consulta Cypher, con la siguiente estructura, por ejemplo para un miembro:

CREATE (:Person { Miembro : “Isa” })

De igual forma creamos la consulta para crear las relaciones Proyecto – Miembro, las cuales como es natural, pueden ser de muchos a muchos. Este proceso se hace en un nodo JavaSnipet (vease Fig. 1) y tiene el siguiente código:

Fig 5. Código Java para crear las relaciones Proyecto – Miembro

Con esto tendremos listas nuestras consultas para crear los nodos y sus relaciones en cypher, las cuales lucirán de esta forma:

1| match(p:Person{Miembro:’Xiomara’})              // Encontrar a “Xiomara”

2| match(l:Project{Proyecto:’Videojuego’})           // Encontrar al proyecto “Videojuego”

3| create (p)-[:pertenece]->(l)                               // Crear la relación  Xiomara-Videojuego
4| WITH 1 as dummy                                           // Concatenar con la siguiente consulta

Como se evidencia lo importante acá es “adornar” los datos con la sintaxis que necesita Neo4j para mapear nuestra información en un grafo.

Luego, al copiar todas estas consultas en el entorno gráfico de Neo4J, obtendremos para este ejemplo que se crearon 38 nodos y 54 relaciones, donde los nodos verdes son los miembros y los magenta los proyectos.

Fig 6. Subgrafo ejemplo de proyectos y miembros participantes

Ahora como nos interesa transformar este grafo en uno de comunicación para análisis ONA usaremos el siguiente código que básicamente cuenta los vecinos en común (proyectos) y crea una relación entre sus miembros, siendo el número de proyectos en común el peso de la relación.

Fig 7. Código Cypher para transformar el grafo de proyectos y participantes en

un grafo de comunicación.

Con esto, Neo4j agrega 24 relaciones de tipo “communication” y 24 propiedades “exp” que indican la experiencia de la persona “source” trabajando con la persona “Target”. Luego, usando la consulta por la relación “communication” del menú principal, Neo4j desplegará finalmente nuestro grafo, que vimos anteriormente en al Fig 1.

Así concluimos la factibilidad de crear un grafo de comunicación de forma automática a partir de un listado de proyectos con sus respectivos participantes, la estructura final será la entrada y base fundamental para la implementación de un análisis de redes organizacionales (ONA).

Autor
Jason E. Angel