KnowledgeMap

KnowledgeMap is a project implemented to try to answer the following questions:

  1. What do I know? Get objective awareness of the subjects in which I have deeper knowledge. This would enable to identify own’s area of expertise. E.g. Do I know more about History or Science? Do I know more about Biology or Physics?
  2. What do I don’t know? Get awareness of the subjects in which I have very little knowledge. This would enable to discover further subjects to explore. E.g. «Baseball in US» is a large subject with tons of data and trivia of which I’m completely unaware (and will keep it so).
  3. Do I know more about a subject than any other particular person? Objectively compare the knowledge of two different persons using a randomly generated quiz.
  4. Which books or sources can expand my knowledge? Whenever I read a book, I need it to be not too trivial (if I already know most of its content) and not too technical (if I lack the basis to understand large portions). By generating the KnowledgeMap of a certain book and overlapping with own’s KnowledgeMap, it would be possible to determine whether the book fits to my own knowledge boundaries and may help to expand it, without losing interest midway.

 

The name «KnowledgeMap» tries to use the metaphor of a cartographic map. If we represent all the different areas of knowledge as a bidimensional map, there will be shadowy unknown areas (fog of war) representing «ignorance» and some bright zones representing «knowledge».

The first problem arises: what is «all knowledge»? For this purpose, we may use a simplified approach by saying: Wikipedia.

The second problem follows: knowledge is NOT bidimensional, but multidimensional! There are many ways to classify knowledge and the same content could be classified within several disjoint categories at the same time. Therefore we do another simplification here:

  • We take «Articles» as the top category and everything follows a hierarchy downwards from there.
  • We only take the shortest path within Wikipedia Categories from an certain article to that top category «Articles«.

 

These are briefly the main ideas:

  1. We take a Wikipedia dump and upload to a graph database.
  2. We generate quiz questions from Wikipedia articles.
  3. The user answers those questions, with either a positive or negative result.
  4. Parent categories (following the shortest path to Wikipedia category «Articles») inherit those results.
  5. The system generates a hierarchical heat-map visualization, with white areas representing known categories and black areas representing unknown categories.

 

Questions are generated by removing one of the Wikipedia links in the article, showing some sentences around that link to provide context and asking the user to fill in the gap. The quiz interface looks like this:

KnowledgeMap - Quiz interface

A KnowledgeMap looks like this:

KnowledgeMap

 

An interactive demo visualization is available here:



There is also another visualization of the individual pages about which questions were asked:

KnowledgeMap - Page visualization

The link between the user and the known (or unknown categories) is calculated with Neo4j using such a Cypher query

MATCH (u:User)-[k:Knows]->(n:Page) WHERE id(u)=193773 WITH n,k,u MATCH path=shortestPath((a:Category)<-[r:In_Category*]-(n)) WHERE a.title='Articles' RETURN path,u LIMIT 1

KnowledgeMap - User to Articles Path

 

To sum up: with this approach, by now we may be able to answer previous question 1 («what do I know?«), but not the rest yet. As the old saying goes, now at least I know that I know nothing.

The complete source code and build instruction are available at my GitHub.

Dibujo – Study 5 after Caravaggio’s Flagellation

Dibujo - Study 5 after Caravaggio's Flagellation

Título: «Study 5 after Caravaggio’s Flagellation»
Técnica: acuarela sobre papel
Fecha: 04/2014

Dibujo – Sueños rojos

Dibujo - Sueños rojos

Título: «Sueños rojos»
Técnica: tablet
Fecha: 09/2014

Penang – Inmortalidad

Penang - Inmortalidad kitsch

Penang – Inmortalidad

Análisis de programas electorales mediante nubes de palabras

El próximo domigo 22 de marzo de 2015 se celebran las elecciones al Parlamento de Andalucía. Motivado por mi deber democrático de elegir a los mejores candidatos, me he descargado los programas de los 7 partidos más relevantes en la actualidad, con el objetivo inicial de leerlos. Sin embargo, he descubierto inmediatamente que me enfrentaba a un total de 863 páginas, la mayoría de ellas cubiertas de morralla o bull-shit, como lo llaman los anglosajones.

Partido Páginas en el programa para las elecciones andaluzas 2015
Ciudadanos 43
IU 155
PA 94
Podemos 128
PP 148
PSOE 222
UPyD 73

Como no tengo tiempo físico para una lectura tan amena, he decidido tomar la vía más eficiente y generar una nube de palabrastag cloud«) de cada programa electoral, de forma que pueda intuir qué temas le interesan a cada partido y comparar con cuáles comparto intereses.

Para ello:

  1. He descargado el programa electoral de cada partido en PDF. Algunos estaban muy bien escondidos para que nadie los pudiera usar en su contra en caso de victoria electoral y posterior incumplimiento.
  2. He convertido cada PDF a texto plano mediante la herramienta pdftotext.
  3. He limpiado cada texto de palabras innecesarias y agrupado algunos términos (e.g. convertir sustantivos singulares a plurales). Este paso es ligeramente subjetivo y puede considerarse manipulación de los resultados. Aquí está la lista de palabras innecesarias y la lista de reemplazos.
  4. He analizado y generado las nubes de palabras mediante la librería Java Kumo de Kenny Cason.

El resultado tiene el siguiente aspecto, ajustando la nube a los logotipos de cada partido por motivos puramente estéticos:

Ciudadanos

Ciudadanos

IU

IU

PA

PA

Podemos

Podemos

PP

PP

PSOE

PSOE

UPyD

UPyD

A continuación, la lista de los 25 términos más utilizados por cada partido:

Ciudadanos IU PA Podemos PP PSOE UPyD
servicios sociales sociales sociales gobierno sociales servicios
sociales desarrollo crisis servicios servicios servicios sistema
empresas servicios derechos sociedad sectores desarrollo empresas
formación derechos europea administraciones desarrollo ciudadanía gestión
sistema gobierno desarrollo instituciones sociales derechos sociales
acción sectores unión economía formación gobierno administraciones
elecciones gestión gobierno cultura programa sistema educación
secretaría participación calidad territorios elecciones sectores desarrollo
administraciones empresas servicios desarrollo administración empresas administración
calidad administraciones sistema ciudadanía empresas formación competencias
gestión izquierda económica derechos profesionales sociedad sectores
laborales economía autónomos participación colaboración igualdad formación
ciudadanos calidad paro gestión sistema calidad control
desarrollo fuerza territorios sectores gestión participación parlamento
administración transporte participación bienestar personal economía personal
profesionales ciudadanía económico sistema actividad económica acceso
sectores mujeres sectores conocimiento infraestructuras profesionales profesionales
educación igualdad defensa riqueza calidad sostenible eficiencia
eficiencia sistema regiones social discapacidad financiación igualdad
gastos laborales renta mayoría proyectos españa calidad
sociedad sostenible educación fuente laborales educación cargos
países transformar control podemos locales administración transparencia
partidos formación transparencia regeneración familias económico investigación
políticos educación vida viviendas financiación gestión nacional
universidades sociedad pobreza igualdad administraciones competencias promoción

Mi resumen personal: los partidos analizados parecen enfocarse en temas sociales, administrativos o un genérico «desarrollo» sin concretar. Ninguno de los partidos parece dar relevancia a temas críticos del siglo XXI que deberían afectar a Andalucía, como industrialización, ciencia, tecnología, investigación, innovación, ingeniería, energías renovables, etc. ¡Que inventen ellos! (igual que hace 100 años).

Cargar más