Estrutura da Biblioteca - aiboxlab/nlp GitHub Wiki

Essa página provê uma visão geral da arquitetura e organização da biblioteca.

Entidades

A biblioteca é construído com base nas seguintes entidades:

  • Estimator: representa um algoritmo de ML que pode ser treinado em um conjunto de dados para geração de um modelo.
  • FeatureExtractor: extrator de características, recebe um texto como entrada e produz como saída o valor para as características calculadas.
  • Vectorizer: representa uma abordagem de vetorização, recebendo como entrada um texto (String) e produzindo como saída um vetor (NumPy, Tensorflow, PyTorch).
  • Pipeline: representa todas as etapas sequenciais para o treinamento e execução de um algoritmo de ML para resolução de um problema. Toda pipeline é composta por 3 partes:
    • Abordagem de Vetorização: define como o texto digital (String) é convertido para uma representação numérica (e.g., vetor de características, Embeddings, TF-IDF, etc).
    • Algoritmo de ML: algoritmo propriamente utilizado para treinamento e obtenção do modelo (e.g., SVM, SVR, Redes Neurais, etc).
    • Pós-processamento: pós-processamento necessários para resolver o problema em questão (e.g., restrição de valores, discretização, conversão de classes, etc).
  • Dataset: representa um conjunto de textos e rótulos para atividades de classificação ou regressão.
  • Metric: representa uma métrica de avaliação que pode ser calculada recebendo como entrada os valores reais e os valores preditos por algum modelo.
  • Experiment: representa o processo de obtenção de um modelo que resolva classificação ou regressão. Um experimento é composto por uma ou mais pipelines que são treinadas e avaliadas (utilizando métricas) no conjunto de dados passado.
    • É possível definir manualmente as pipelines que serão testadas, bem como definir o dataset e conjunto de métricas de avaliação.
    • Também é possível utilizar AutoML para obter o melhor modelo passando como entrada um dataset e um conjunto de métricas de avaliação.

Estrutura de Pacotes

  • aibox.nlp: namespace da biblioteca. O prefixo aibox. é utilizado como namespace package .
    • core: pacote com interfaces e classes abstratas das entidades.
    • data: pacote de dados.
      • datasets: sub-pacote com classes para manipulação de datasets para classificação ou regressão em Português.
      • corpora: sub-pacote com classes para manipulação de corpora em Português.
    • experiments: pacote com implementação de classes de experimento e seus componentes.
    • estimators: pacote com implementação de estimadores para classificação e regressão.
    • factory: pacote com utilidades para construção de objetos da biblioteca através do padrão factory/builder.
    • models: pacote com implementação de pipelines, estimadores e vetorizadores pré-treinados para PLN em Português.
      • estimators: estimadores standalone; por exemplo um modelo de Coesão (SVR) que recebe como entrada features.
      • pipelines: pipelines completas para resolver uma tarefa; por exemplo o vetorizador (features seguido por scaler) + modelo de coesão (SVR) + pós-processamento (regressão -> classificação), que recebe como entrada o texto e produz como saída uma classe.
      • vectorizer: vetorizadores que precisam de algum treinamento; por exemplo, um BERT fine-tuned para textos educacionais em Português.
    • pipelines: pacote que contém implementações de pipelines.
    • features: pacote que contém os extratores de características.
    • lazy_loading: pacote com utilidades para lazy loading de classes, módulos e afins.
    • vectorizers: pacote que contém os vetorizadores.
    • metrics: pacote com implementação de métricas.
    • resources: pacote com utilidades para recuperação de artefatos e modelos necessários para a biblioteca.