Tercera etapa: Datos e ingeniería de características

Plataforma de gestión y etiquetado de datos de lenguaje natural de código abierto, centrada en métodos de construcción de modelos NLP centrados en datos.

DataLabelingNLPWeakSupervisionGitHubTextFreeEnglish

Refinery - Herramienta de gestión de datos de lenguaje natural de código abierto para científicos de datos

Resumen del Proyecto

Refinery es una plataforma de gestión de datos de anotación y entrenamiento de código abierto desarrollada por Kern AI, especializada en tareas de Procesamiento de Lenguaje Natural (PLN). El proyecto tiene como objetivo ayudar a los científicos de datos a "construir mejores modelos de PLN adoptando un enfoque centrado en los datos" y a "tratar los datos de entrenamiento como artefactos de software".

Características Principales

1. Funcionalidades de Anotación de Datos

  • Anotación manual y programática: Soporta tareas de anotación de clasificación y de tramos (span).
  • Anotación semiautomática: Automatiza parte del trabajo de anotación mediante heurísticas.
  • Soporte multitarea: Un solo proyecto puede manejar múltiples tareas de anotación.

2. Capacidades de Gestión de Datos

  • Explorador de datos inteligente: Permite filtrar, ordenar y buscar datos por dimensiones como confianza, superposición heurística, usuario, anotaciones, etc.
  • Monitoreo de calidad de datos: Identifica subconjuntos de baja calidad en los datos de entrenamiento.
  • Resumen de métricas del proyecto: Proporciona distribución de confianza, distribución de etiquetas y matriz de confusión.

3. Integración de Aprendizaje Automático

  • Integración con 🤗 Hugging Face: Creación automática de incrustaciones (embeddings) a nivel de documento y de token.
  • Integración con spaCy: Utiliza modelos de lenguaje preentrenados.
  • Búsqueda neuronal: Recuperación de registros similares y detección de anomalías basada en Qdrant.

4. Heurísticas y Supervisión Débil

  • Funciones de anotación: Creación y gestión de lógica de anotación automática basada en reglas.
  • Aprendizaje por supervisión débil: Integra múltiples heurísticas ruidosas e imperfectas.
  • Gestión de bases de conocimiento: Creación y gestión de listas de búsqueda para apoyar el proceso de anotación.

5. Funcionalidades de Colaboración

  • Espacio de trabajo en equipo: Entorno multiusuario (versión comercial).
  • Control de acceso basado en roles: Gestión de permisos de usuario.
  • Integración de anotación colaborativa (crowdsourcing): Soporta flujos de trabajo de anotación externos.

Arquitectura Técnica

Servicios Principales

- embedder: Servicio de generación de incrustaciones
- weak-supervisor: Servicio de aprendizaje por supervisión débil
- tokenizer: Servicio de tokenización
- neural-search: Servicio de búsqueda neuronal
- ui: Interfaz de usuario
- gateway: Pasarela API

Integraciones de Terceros

- PostgreSQL: Almacenamiento de datos
- Minio: Almacenamiento de objetos
- MailHog: Servicio de correo
- Ory Kratos: Gestión de identidad
- Ory Oathkeeper: Control de acceso

Librerías de Aprendizaje Automático

- scikit-learn: Aprendizaje automático tradicional
- spaCy: Procesamiento de lenguaje natural
- Hugging Face Transformers: Modelos preentrenados
- Qdrant: Base de datos vectorial

Instalación y Uso

Instalación Rápida

# Instalar con pip
pip install kern-refinery

# Iniciar el servicio
cd your-project-directory
refinery start

# Acceder a la aplicación
# Abrir en el navegador http://localhost:4455

Instalación Manual

# Clonar el repositorio
git clone https://github.com/code-kern-ai/refinery.git
cd refinery

# Iniciar el servicio (Mac/Linux)
./start

# Iniciar el servicio (Windows)
start.bat

# Detener el servicio
./stop  # o stop.bat (Windows)

Soporte de Formatos de Datos

Formatos de Entrada

  • Archivos JSON
  • Archivos CSV
  • Hojas de cálculo
  • Archivos de texto
  • Formato JSON genérico

Formato de Salida

[
  {
    "running_id": "0",
    "headline": "T. Rowe Price (TROW) Dips More Than Broader Markets",
    "date": "Jun-30-22 06:00PM  ",
    "headline__sentiment__MANUAL": null,
    "headline__sentiment__WEAK_SUPERVISION": "NEGATIVE",
    "headline__sentiment__WEAK_SUPERVISION__confidence": 0.62,
    "headline__entities__MANUAL": null,
    "headline__entities__WEAK_SUPERVISION": [
      "STOCK", "STOCK", "STOCK", "STOCK", "STOCK", "STOCK", "O", "O", "O", "O", "O"
    ],
    "headline__entities__WEAK_SUPERVISION__confidence": [
      0.98, 0.98, 0.98, 0.98, 0.98, 0.98, 0.00, 0.00, 0.00, 0.00, 0.00
    ]
  }
]

SDK de Python

El proyecto proporciona un SDK de Python completo que soporta:

  • Carga y descarga de datos
  • Gestión de proyectos
  • Exportación de datos anotados
  • Adaptadores para frameworks como Rasa
# Obtener datos
rsdk pull

# Enviar datos
rsdk push <file_name>

Librería de código abierto bricks

Refinery integra la librería de código abierto bricks, que ofrece:

  • Funcionalidades de anotación automática listas para usar
  • Extracción de metadatos de texto (detección de idioma, complejidad de la oración, etc.)
  • Plantillas de funciones de anotación preconstruidas

Casos de Uso

Grupo de Usuarios Ideal

  1. Desarrolladores de proyectos de PLN individuales: Investigadores que carecen de suficientes datos anotados.
  2. Proyectos de colaboración en equipo: Equipos que necesitan gestionar y evaluar la calidad de los datos de entrenamiento.
  3. Proyectos con recursos limitados: Proyectos que necesitan optimizar los recursos de anotación (mano de obra, presupuesto, tiempo).

Casos de Uso Principales

  • Análisis de sentimientos
  • Reconocimiento de entidades nombradas
  • Clasificación de texto
  • Extracción de información
  • Procesamiento de texto multilingüe

Modelo de Negocio

  • Versión de código abierto: Versión para un solo usuario, completamente gratuita.
  • Versión comercial: Entorno multiusuario, ofrece funcionalidades de colaboración en equipo.
  • Soluciones empresariales: Despliegue local y servicios personalizados.

Comunidad y Soporte

  • Comunidad de Discord: Discusión técnica y soporte.
  • GitHub Issues: Informes de problemas y solicitudes de funciones.
  • Centro de documentación: Guías de uso detalladas y tutoriales.
  • Canal de YouTube: Tutoriales en video y demostraciones.

Ventajas del Proyecto

  1. Enfoque centrado en los datos: Se centra en mejorar la calidad de los datos de entrenamiento en lugar de solo aumentar la cantidad de datos.
  2. Anotación semiautomática: Reduce significativamente la carga de trabajo de anotación manual.
  3. Arquitectura escalable: La arquitectura de microservicios soporta un despliegue flexible.
  4. Transparencia de código abierto: Completamente de código abierto, desarrollo impulsado por la comunidad.
  5. Funcionalidades de nivel empresarial: Soporta despliegues a gran escala y colaboración en equipo.

Recursos de Aprendizaje

Refinery representa las mejores prácticas en la gestión moderna de datos de PLN, proporcionando a los científicos de datos una herramienta potente y flexible para construir conjuntos de datos de entrenamiento de alta calidad.