JaimeObregon / subvenciones

Volcado de la Base de Datos Nacional de Subvenciones (BDNS).
GNU General Public License v3.0
235 stars 55 forks source link

Es necesario normalizar los datos de los convocantesN1, N2 y N3 #15

Closed elsatch closed 2 years ago

elsatch commented 2 years ago

En los primeros análisis del volcado de la base de datos de convocatorias, se ha detectado que los campos de los convocantes, no están normalizados. Podemos encontrar un primer ejemplo, en el análisis de @dacamposol: análisis fichero convocatorias

En esta primera exploración, se eliminan las preposiciones de los datos disponibles consiguiendo resultados más homogéneos. Una limitación de este sistema, es que al final, necesitaremos la cadena original para mostrarla en los resultados de la búsqueda.

Por poner un ejemplo, "Ayuntamiento del Puerto de Santa Maria" y "Ayuntamiento Puerto de Santa Maria" parecen ser el mismo convocante, pero al tener nombre distinto no aparecen agrupados.

En resumidas, cuentas tenemos que encontrar la forma de generar un listado de entidades consolidado y robusto, que agrupe a los organismos convocantes. ¿Cómo podemos conseguirlo?

elsatch commented 2 years ago

Revisando los datos, me encuentro con que la normalización debería hacerse por lo menos en dos niveles.

En el primer post, estaba refiriéndome a una normalización en cuanto a contenido de los registros. Esto implica que seamos capaces de determinar que "Ayuntamiento de Madrid", "Ayto. Madrid" "AYTO MADRID" y "Ayuntamiento Madrid" se refieren a la misma entidad.

Pero también encontramos un problema respecto a que las categorías en si mismas no están normalizadas. Se sobreentiende que ConvocanteN1 es jerárquicamente una entidad de nivel superior a N2, que N2 es jerárquicamente superior a N3, etc. Pero aparte de esta jerarquía, no podemos inferir a qué nivel de la administración del estado se refiere cada uno de los niveles, encontrando resultados totalmente dispares en los datos.

Por poner un ejemplo, estos son los valores mas populares de ConvocanteN1: image

En esta tabla de resultados más populares encontramos entidades que nada tienen que ver unas con otras: ESTADO, CANARIAS, CABILDO INSULAR DE GRAN CANARIA y OTROS.

Si queremos, por ejemplo, calcular el importe de las subvenciones que se han ofrecido a Canarias, lo vamos a tener bastante crudo ya que no tenemos forma de agrupar resultados (más allá del nombre).

Resumen de este segundo post: una vez tengamos normalizados los datos de los convocantes en modo texto, será necesario mapear cada uno de los distintos organismos y entidades con los niveles correspondientes en la administración, si queremos poder hacer agrupaciones de forma sencilla.

elsatch commented 2 years ago

Respecto a la estructura general de la administración, he localizado el siguiente recurso donde se agrupan los distintos tipos de entes:

https://www.hacienda.gob.es/es-ES/CDI/Paginas/Inventario/Inventario.aspx

Por otra parte, existe un listado de entidades públicas llamado INVENTE: https://datos.gob.es/es/catalogo/e05024001-invente-inventario-de-entidades-del-sector-publico-estatal-autonomico-y-local

El responsable del listado es el Ministerio de Hacienda y se actualiza de forma diaria.

Lo ideal para normalizar nuestros convocantes sería hacer match entre este listado de entidades y los convocantes de subvenciones.

Kazzpa commented 2 years ago

El Inventario de Entes del sector público estatal (INVESPE) con Enlace que aparece en la web de https://www.hacienda.gob.es/es-ES/CDI/Paginas/Inventario/Inventario.aspx esta roto.

Kazzpa commented 2 years ago

A partir de la web compartida en el discord por @lcabrera https://www.infosubvenciones.es/bdnstrans/GE/es/convocatorias

Se pueden obtener los listados de departamentos que dependen de cada CCAA: image

He probado a obtener todas los departamentos de Andalucía pero quizas alguien que sepa de scrapping nos puede ayudar a extraer los datos de todas las comunidades automáticamente. Lo he hecho a través de la consola una vez seleccionada la CCAA de Andalucía con este fragmento de código:

let select_options = document.getElementById("departamentos").options
const list_andalucia = new Array();
for (let i = 0; i < select_options.length; i++) {
  list_andalucia.push(select_options[i].title);
}
Rsilnav commented 2 years ago

Aquí recopilé brevemente lo que se puede extraer de las APIS que utiliza el formulario: https://discord.com/channels/957383054832336986/960867664132202536/960872780616855562

En el caso de departamentos andaluces, tienes https://www.infosubvenciones.es/bdnstrans/organos?code=A&value=01

El proceso es el siguiente para saber el "value":

  1. Saca el código de la siguiente imagen en función de la CA: image
  2. Navega a https://www.infosubvenciones.es/bdnstrans/ccaa/GE/{codigo}
  3. Con el nuevo número puedes ir a En el caso de departamentos andaluces, tienes https://www.infosubvenciones.es/bdnstrans/organos?code=A&value={numero}
elsatch commented 2 years ago

Con la información suministrada por Rafa y los códigos de búsqueda disponibles desde la ayuda de la web de la BDNS es posible obtener los datos de los convocantes.