Cómo correr Sidekick

Cómo correr Sidekick

A inicios de este año, MuckRock recibió la invitación para ser parte del JournalismAI Collab, y trabajar con organizaciones en las Américas para exportar, probar y desarrollar nuevas formas de aplicar inteligencia artificial y machine learning en algunos de los retos que enfrenta el periodismo de investigación. Nos asociamos con CLIP, Ojo Público, y La Nación para retroalimentarnos y continuar desarrollando Sidekick. En estos artículos compartimos los resultados de esta colaboración. Puedes leer todos los materiales en inglés y en español en la página del proyecto DockIns..

Alguna vez ¿has tenido una pila de documentos y has querido comenzar a concentrarte rápidamente en una parte determinada de material? ¿Te gustaría contar con ayuda para trabajar solamente en los contratos, o quizás, los informes policiales que detallan un determinado tipo de encuentro, o bien, poder dividir rápidamente las cartas de respaldo de aquellas negativas dirigidas a un político sobre un tema clave?

Con la plataforma DocumentCloud de MuckRock, es un desafío que todos conocemos bien ‒actualmente, aloja más de 7.782.977 documentos que componen 13.233.118 páginas de material de fuentes principales, que es mucha lectura.

Como parte de 2021 JournalismAI Collab Project DockIns y en colaboración con La Nacion, desarrollamos SideKick, una plataforma de aprendizaje automático integrada a DocumentCloud, diseñada para formar rápida y eficientemente nuevos modelos basados en la misma plataforma DocumentCloud.

Este trabajo es el resultado del desarrollo de la interfaz y la investigación del modelo del Prof. Eli T. Brown y del Laboratory for Interactive Human Computer Analytics. También amplía el trabajo anterior de MuckRock respaldado por Ethics and Governance in AI Initiative and the Knight Foundation y estamos emocionados de lanzar estas tecnologías como avance del trabajo que continuamos desarrollando en las devoluciones y exploración de nuevas formas de colaboración con redacciones , investigadores y a técnicos en temas cívicos por encima de un flujo creciente de documentos y de datos.

Estamos especialmente interesados en brindar respaldo a los esfuerzos de nuestros socios para analizar y monitorear regularmente los conjuntos de documentos publicados, tales como los informes que contienen conjuntos de preguntas y respuestas del Congreso, publicados en Argentina .

Cómo funciona SideKick

SideKick está diseñado para ayudar a categorizar y clasificar grandes cantidades de documentos en DocumentCloud. El tipo de categorías puede definirse como se desee ‒incluso de muchas formas para una sola colección‒ si hay muchos temas en los que esté interesado.

Se trata de seleccionar una etiqueta y empezar a leer documentos y marcarlos como relevantes o no para esa etiqueta. Una vez que haya marcado una cantidad determinada de documentos, podrá ejecutar SideKick y el programa dará una puntuación a todos los documentos no marcados según la probabilidad que crea que tengan de estar en esa categoría, sobre la base de los documentos que se encuentren marcados. Es de esperar que esto sitúe a los documentos más relevantes en el primer lugar. A medida que continúe con la lectura de más documentos, también se podrá etiquetarlos y volver a ejecutar SideKick ocasionalmente para que éste pueda mejorar sus puntuaciones a medida que proporcione más datos.

Cómo comenzar

SideKick no tiene aún una interfaz de usuario (UI) dedicada ‒toda la interacción se programa a través de la API. Se han desarrollado un conjunto de scripts (secuencias de comando) como el ejemplo que usaremos para esta guía. Se podrá adaptar sin inconvenientes estos scripts a las necesidades específicas de su proyecto. Para esto es necesario instalar Python DocumentCloud Library, que es el punto de partida ideal para cualquier trabajo de DocumentCloud hecho en Python.

Crear un proyecto

El primer paso es crear un proyecto en DocumentCloud que se usará para SideKick. Para comenzar seleccionar el botón de ‘Nuevo Proyecto’ (New Project) sobre la barra lateral izquierda.

alt_text

Escriba un nombre y una descripción del proyecto y luego haga clic en ‘Crear’ (Create). El nuevo proyecto aparecerá en la barra lateral izquierda. Haga clic en el nombre del proyecto y anote el ID del proyecto para usar en la siguiente sección. El ID del proyecto será el número que aparece después de la última raya en la barra de búsqueda.

alt_text

Configurar variables de cliente

En el client.py de este lugar, necesitará cambiar algunos de los valores de los ejemplos. Nombre de usuario (USERNAME) – asignado para su nombre de usuario de DocumentCloud Contraseña (PASSWORD) – se asigna con una variable del entorno. Podrá asignarse con la exportación de DC_PASSWORD= para la sesión shell o para prefijarla por comando, como en DC_PASSOWORD= Python script.py ID de proyecto (PROJECT_ID) – asignado a un ID numérico de proyecto, tal como se observa en el paso anterior. Nombre de etiqueta (TAG_NAME) – La etiqueta que desearía usar para marcar categorías de documentos en SideKick.

Carga de documentos

Regrese a DocumentCloud en su navegador. Debería estar aún en el proyecto que creó para SideKick. En este paso podrá subir los documentos. Haga clic en el botón ‘Cargar’ (Load), seleccione los archivos y haga clic en iniciar la carga. Tenga en cuenta que su proyecto debe contener más de 300 palabras únicas, de modo tal que SideKick tenga suficientes datos para iniciar correctamente ‒asegúrese de subir, por lo menos, unos pocos documentos de una extensión considerable para poder probarlos correctamente.

alt_text

Iniciar SideKick

En este momento, podrá iniciar SideKick para su proyecto. Ejecute SideKick.py (https://gist.github.com/mitchelljkotler/903711854ada0002163fa2dd82c13b11#file SideKick-py). SideKick se iniciará y esperará a estar listo.

Esto requiere una solicitud POST en https://api.documentcloud.org/projects/{PROJECT_ID}/sidekick/ que comenzará a iniciar SideKick en su proyecto. Luego requerirá una solicitud GET en la misma URL, hasta que el estado haya cambiado de ‘pendiente’ (pending) a ‘logrado’ (success), lo que significa que ha terminado de iniciar. Esta operación podrá tardar algunos minutos.

Observación: si agrega o quita documentos de su proyecto, necesitará repetir este paso.

Etiquetar documentos

En este momento tendrá que etiquetar algunos de los documentos. Debe tener, por lo menos, un documento positivo que coincida con la etiqueta y recomendamos ejemplos de documentos negativos, aunque no son necesarios desde un punto de vista técnico. Cuantas más etiquetas aplique, más posibilidades tendrá de encontrar otros documentos interesantes. Utilizará el nombre de la etiqueta que haya establecido en clients.py. En primer lugar, elija los documentos a los que desee definir en una categoría:

alt_text

Luego haga clic en ‘Editar Menú’ (Edit Menu) y seleccione ‘Editar datos del documento’ (Edit Document Data).

alt_text

A continuación, seleccione ‘Clave/Valor’ (Key/Value) del menú desplegable, ingrese la etiqueta de clients.py como la clave e ingrese ‘verdadero’ (true) como el valor. Haga clic en ‘Agregar botón’ (Add button), luego clic en el botón ‘Hecho’ (Done).

alt_text

Podrá repetir este proceso para agregar más documentos como ejemplos de esta categoría o podrá repetirlo al reemplazar ‘verdadero’ (true) con ‘falso’ (false) como el valor para marcar documentos que no son parte de esa categoría.

Ejecutar un algoritmo de aprendizaje

En este momento podrá ejecutar el algoritmo de aprendizaje para que SideKick puntúe todos los documentos que usted no haya marcado específicamente en el último paso. Esto se hace a través de la API, con learn.py en este script. Se ejecutará una vez más y comprobará el estado hasta que termine de procesarlo.

Se requiere una solicitud de POST en https://api.documentcloud.org/projects/{PROJECT_ID}/SideKick/learn/ con un nombre de etiqueta asignado para su nombre de etiqueta específico. Luego se requiere una solicitud GET en https://api.documentcloud.org/projects/{PROJECT_ID}/SideKick/ hasta que el estado haya cambiado de ‘pendiente’.

Analizar los resultados

En este momento podrá actualizar y ver las puntuaciones asignadas por SideKick. La puntuación es un número entre -1 y 1 y se considera más probable que se sitúe dentro de la categoría más cercana a 1.

alt_text

Si tiene un conjunto de datos en el que sabe qué documentos forman parte de una categoría determinada, podrá comparar las puntuaciones para ver cómo hizo SideKick. Si no conoce las respuestas, podrá empezar a ver algunos de los documentos que SideKick ha puntuado con una puntuación alta, marcarlos como dentro o fuera del conjunto definitivamente y luego volver a ejecutar el paso de aprendizaje para actualizar las puntuaciones. No es necesario reiniciar SideKick cada vez, podrá etiquetar más documentos y volver a ejecutar el paso de aprendizaje, que debería ser relativamente rápido. Solo es necesario reiniciar SideKick si se agregan o se quitan documentos al proyecto.

Recomendamos ejecutar.


This project is part of the 2021 JournalismAI Collab Challenges, a global initiative that brings together media organizations to explore innovative solutions to improve journalism via the use of AI technologies.

It was developed as part of the Americas cohort of the Collab Challenges that focused on “How might we use AI technologies to innovate newsgathering and investigative reporting techniques?” with the support of the Knight Lab at Northwestern University.

JournalismAI is a project of Polis – the journalism think-tank at the London School of Economics and Political Science – and it’s sponsored by the Google News Initiative. If you want to know more about the Collab Challenges and other JournalismAI activities, sign up for the newsletter or get in touch with the team via hello@journalismai.info.

Header image via Shutterstock under commercial license.