traducciones
febrero 21, 2025
clasificación: trabajando con Jina (II)
febrero 25, 2025Notas sobre el trabajo de clasificación, tal vez uno de los aspectos más importantes de la investigación con código, algoritmos, modelos de lenguaje. Notas no muy articuladas pero necesarias para asentar ideas propias y ajenas.
Prueba con Fotos de Familia, el blog del diario La Capital, un repositorio increíble que colecta fotos enviadas por los lectores, una por post. Hay más de 12 mil fotos con estos elementos: foto, epígrafe, comentarios. Se puede escrapear y es lo que hice así que trabajo en modo local y actualizo periódicamente.
No es un material curado. Se podría clasificar claro pero ¿cómo? ¿De qué hablan estas fotos que dicen conversar sobre la ciudad?, ¿atendemos al epígrafe? ¿interpretamos la foto? Un ejemplo:

Es un foto de playa, la ciudad balnearia por excelencia no podría dejar de tener una categoría para eso: imágenes de la playa. Pero esa imagen también remite a una familia, no es una imagen de parejas, amigos, niñxs, etc. «Familia» también es bueno. También es un documento, porque es una imagen con un texto mecanografiado. Y así sucede con las 12 mil. Siempre dependerá del trabajo de articulación de las categorías, que arrastran práctica (es imposible no «ver» la arena, el mar, la ropa) y «teoría» (¿de dónde saque la idea de «documento»?). La aparente solución es marcar la foto con varias categorías. Pero está claro que el problema persiste al infinito, reclamando dominio, exigiendo comprender cuándo una cosa remite a otra. Dejo ese tema importante para los historiadores (sistemas monotéticos y politéticos) para otro post.
Se me ocurrió lo siguiente: qué podría pasar si dejo que un clasificador no humano haga el trabajo inicial. El clasificador de Jina AI es un servicio API que permite categorizar texto e imágenes utilizando modelos de embedding como jina-embeddings-v3 y jina-clip-v1. Clasifica imágenes y texto. Justo lo que tengo: foto y epígrafe. Es algo así:
import requests
import pandas as pd
api_key = 'jina_algo'
url = 'https://api.jina.ai/v1/classify'
headers = {
'Content-Type': 'application/json',
'Authorization': f'Bearer {api_key}'
}
def clasifa_imagen(texto, image_path):
data = {
"model": "jina-clip-v2",
"input": [
{
"text":texto,
"image": image_path,
}
],
"labels": [
'personas',
'edificios',
'transporte',
'animales',
'playa',
'barrio',
'casa',
'familia'
]
}
try:
response = requests.post(url, headers=headers, json=data)
return response.json()
except Exception as e:
print(f"Error clasificando imagen {image_path}: {e}")
return NoneSolo tengo que pasar la función a los registros del dataframe con el epígrafe y la foto. Pero lo más importante que quiero dejar anotado es cómo arrancamos. Cómo le pasé estas etiquetas (‘labels’). Más adelante comentaré qué tal clasifica jina y cómo etiqueté sobre la clasificación que hizo, y cómo fue cambiando el set de etiquetas, condensando cosas, como en los sueños.
Adelanto algo: todo lo que pueda decir sobre su trabajo también puede decirse sobre el mío.



