Terceira Etapa: Dados e Engenharia de Atributos

Plataforma de gerenciamento e anotação de dados de linguagem natural de código aberto, focada em métodos de construção de modelos de PNL centrados em dados.

DataLabelingNLPWeakSupervisionGitHubTextFreeEnglish

Refinery - Ferramenta de Gerenciamento de Dados de Linguagem Natural de Código Aberto para Cientistas de Dados

Visão Geral do Projeto

Refinery é uma plataforma de gerenciamento de dados de treinamento e rotulagem de dados de código aberto desenvolvida pela Kern AI, especificamente para tarefas de Processamento de Linguagem Natural (PLN). O projeto visa ajudar os cientistas de dados a "construir melhores modelos de PLN, adotando uma abordagem centrada em dados" e a "tratar os dados de treinamento como artefatos de software".

Principais Recursos

1. Funcionalidades de Rotulagem de Dados

  • Rotulagem manual e programática: Suporta tarefas de classificação e rotulagem de extensão (span labeling)
  • Rotulagem semiautomática: Automatiza parte do trabalho de rotulagem por meio de métodos heurísticos
  • Suporte a múltiplas tarefas: Um único projeto pode lidar com várias tarefas de rotulagem

2. Capacidades de Gerenciamento de Dados

  • Navegador de dados inteligente: Permite filtrar, classificar e pesquisar dados por confiança, sobreposição heurística, usuário, anotação, etc.
  • Monitoramento da qualidade dos dados: Identifica subconjuntos de baixa qualidade nos dados de treinamento
  • Visão geral das métricas do projeto: Fornece distribuição de confiança, distribuição de rótulos e matriz de confusão

3. Integração de Machine Learning

  • Integração 🤗 Hugging Face: Cria automaticamente embeddings em nível de documento e token
  • Integração spaCy: Utiliza modelos de linguagem pré-treinados
  • Busca neural: Recuperação de registros semelhantes e detecção de anomalias baseada em Qdrant

4. Heurísticas e Supervisão Fraca

  • Funções de rotulagem: Cria e gerencia lógica de rotulagem automática baseada em regras
  • Aprendizado por supervisão fraca: Integra múltiplas heurísticas ruidosas e imperfeitas
  • Gerenciamento de base de conhecimento: Cria e gerencia listas de consulta para apoiar o processo de rotulagem

5. Funcionalidades de Colaboração

  • Espaço de trabalho em equipe: Ambiente multiusuário (versão comercial)
  • Controle de acesso baseado em função: Gerencia permissões de usuário
  • Integração de rotulagem por crowdsourcing: Suporta fluxos de trabalho de rotulagem externos

Arquitetura Técnica

Serviços Principais

- embedder: Serviço de geração de embeddings
- weak-supervisor: Serviço de aprendizado por supervisão fraca
- tokenizer: Serviço de tokenização
- neural-search: Serviço de busca neural
- ui: Interface de usuário
- gateway: Gateway de API

Integrações de Terceiros

- PostgreSQL: Armazenamento de dados
- Minio: Armazenamento de objetos
- MailHog: Serviço de e-mail
- Ory Kratos: Gerenciamento de identidade
- Ory Oathkeeper: Controle de acesso

Bibliotecas de Machine Learning

- scikit-learn: Machine learning tradicional
- spaCy: Processamento de Linguagem Natural
- Hugging Face Transformers: Modelos pré-treinados
- Qdrant: Banco de dados vetorial

Instalação e Uso

Instalação Rápida

# Instalar usando pip
pip install kern-refinery

# Iniciar o serviço
cd your-project-directory
refinery start

# Acessar o aplicativo
# Abrir no navegador http://localhost:4455

Instalação Manual

# Clonar o repositório
git clone https://github.com/code-kern-ai/refinery.git
cd refinery

# Iniciar o serviço (Mac/Linux)
./start

# Iniciar o serviço (Windows)
start.bat

# Parar o serviço
./stop  # Ou stop.bat (Windows)

Suporte a Formatos de Dados

Formatos de Entrada

  • Arquivos JSON
  • Arquivos CSV
  • Planilhas eletrônicas
  • Arquivos de texto
  • Formato JSON genérico

Formatos de Saída

[
  {
    "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 Python

O projeto oferece um SDK Python completo, que suporta:

  • Upload e download de dados
  • Gerenciamento de projetos
  • Exportação de dados rotulados
  • Adaptadores para frameworks como Rasa
# Puxar dados
rsdk pull

# Enviar dados
rsdk push <file_name>

Biblioteca bricks de Código Aberto

Refinery integra a biblioteca de código aberto bricks, que oferece:

  • Funcionalidades de rotulagem automática prontas para uso
  • Extração de metadados de texto (detecção de idioma, complexidade de frase, etc.)
  • Modelos de função de rotulagem pré-construídos

Cenários de Aplicação

Grupos de Usuários Ideais

  1. Desenvolvedores de projetos de PLN individuais: Pesquisadores que carecem de dados rotulados suficientes
  2. Projetos de colaboração em equipe: Equipes que precisam gerenciar e avaliar a qualidade dos dados de treinamento
  3. Projetos com recursos limitados: Projetos que precisam otimizar recursos de rotulagem (mão de obra, orçamento, tempo)

Principais Casos de Uso

  • Análise de sentimento
  • Reconhecimento de entidades nomeadas
  • Classificação de texto
  • Extração de informações
  • Processamento de texto multilíngue

Modelo de Negócios

  • Versão de código aberto: Versão de usuário único, totalmente gratuita
  • Versão comercial: Ambiente multiusuário, oferece funcionalidades de colaboração em equipe
  • Soluções de nível empresarial: Implantação local e serviços personalizados

Comunidade e Suporte

  • Comunidade Discord: Discussão técnica e suporte
  • GitHub Issues: Relatório de problemas e solicitações de recursos
  • Centro de documentação: Guias de uso detalhados e tutoriais
  • Canal do YouTube: Tutoriais em vídeo e demonstrações

Vantagens do Projeto

  1. Abordagem centrada em dados: Foca em melhorar a qualidade dos dados de treinamento em vez de apenas aumentar a quantidade de dados
  2. Rotulagem semiautomática: Reduz significativamente a carga de trabalho de rotulagem manual
  3. Arquitetura escalável: Arquitetura de microsserviços suporta implantação flexível
  4. Transparência de código aberto: Totalmente de código aberto, desenvolvimento impulsionado pela comunidade
  5. Funcionalidades de nível empresarial: Suporta implantação em larga escala e colaboração em equipe

Recursos de Aprendizagem

Refinery representa as melhores práticas modernas de gerenciamento de dados de PLN, fornecendo aos cientistas de dados uma ferramenta poderosa e flexível para construir conjuntos de dados de treinamento de alta qualidade.