Objetivos e Funcionalidades - aiboxlab/nlp GitHub Wiki

Essa página contém os objetivos e funcionalidades da biblioteca.

Stack de Desenvolvimento

Define quais tecnologias vamos utilizar para a criação da biblioteca.

  • Python 3.8+ -> Python 3.10+;
  • spaCy (https://spacy.io/): implementação de características e modelos;
  • PyTorch (https://pytorch.org/): algoritmos envolvendo ANNs;
  • tqdm (https://github.com/tqdm/tqdm): logs de execução;
  • apart: armazenamento de artefatos manipulados pela biblioteca -> versão simplificada do apart em aibox.nlp.resources;
  • scikit-learn: implementação de algoritmos de ML clássicos;
  • transformers: implementação de algoritmos DL;

Objetivos

Essa seção resume os principais objetivos da biblioteca.

Gerais

  • Treinamento de modelos com interface simples (fit/train + predict);
  • Criação de pipelines para o treinamento e avaliação de modelos;
  • Pipelines pré-definidas/automáticas (AutoML) para determinadas tarefas de PLN;
  • Permitir o cálculo de métricas de avaliação como parte da pipeline;
  • Serialização de modelos treinados junto com suas especificações;
  • Abrange problemas de classificação e regressão;

Específicos

Os objetivos abaixo especializam a biblioteca para o Português Brasileiro.

  • Disponibilizar características para PLN considerando o Português Brasileiro;
  • Disponibilizar modelos pré-treinados para PLN em Português;
  • Disponibilizar corpus em Português para tarefas de PLN;

Desejáveis

Os objetivos abaixam são desejáveis para a biblioteca, todavia são secundários.

  • Paralelismo e distribuição para execução da biblioteca;
  • Reutilização de etapas da pipeline;

Funcionalidades

  • Construir modelos clássicos para classificação/regressão através de uma interface unificada de treinamento e predição;
    • Deve ser possível treinar o modelo através de um método (e.g., fit(...));
    • Deve ser possível realizar predições através de um método (e.g., predict(...));
    • Deve ser possível recuperar os hiper-parâmetros do modelo através de um método ou propriedade (e.g., get_params(...));
    • Deve ser possível salvar o modelo através de um método (e.g., save(...));
    • Deve ser possível carregar o modelo através de um método (e.g., load(...));
  • Construir pipelines para classificação/regressão com as seguintes etapas: (i) pré-processamento; (ii) extração de características; (iii) execução do modelo; (iv) pós-processamento.
    • Deve ser possível treinar a pipeline usando um método (e.g., fit(...));
    • Deve ser possível realizar predições usando um método (e.g., predict(...));
    • Deve ser possível salvar a pipeline através de um método (e.g., save(...));
    • Deve ser possível carregar uma pipeline através de um método (e.g., load(...));
    • Deve ser possível obter as configurações da pipeline através de um método (e.g, get_params(...));
  • Extrair características através da biblioteca e agregar os resultados em um vetor de característica;
    • Deve existir uma interface para extração de características;
    • Deve existir uma funcionalidade para converter um conjunto de características em um vetor/dicionário;
  • Utilizar modelos pré-treinados de PLN para português;
    • Deve ser possível carregar esses modelos através de um método (e.g., load(...));
    • A interface deve ser a mesma para pipelines (e.g, fit(...) + predict(...));
  • Carregar corpus/datasets de PLN para o Português;
    • Deve ser possível carregar os corpus/datasets através de um método (e.g., load(...));
    • Deve ser possível obter as colunas target e a coluna dos textos para datasets através de um método;
    • Para datasets, deve ser possível realizar a conversão para um DataFrame;
    • Para datasets, deve ser possível obter splits de treino e teste;
  • Treinar modelos baseline para classificação/regressão passando como entrada um conjunto de dados (textos + target);
    • Deve ser possível determinar as métricas de avaliação para os baselines;
    • Deve ser possível escolher quais modelos serão treinados;
    • Deve ser possível obter os resultados da execução, com um comparativo dos modelos e métricas obtidas;
    • Deve ser possível acessar os modelos treinados;