Skip to main content

Texto Transformer: Framework para processamento de textos utilizando modelos de linguagem baseados baseados em Transformer

Project description

Github Actions Status for osmarbraz/texto-transformer GitHub - License PyPI - Python Version PyPI - Package Version

Texto-Transformer: Framework para processamento de textos utilizando modelos de linguagem baseados em Transformer

Este framework realiza o processamento de textos utilizando modelos de linguagem baseados em transformer. Permite gerar embeddings de textos, sentenças, palavras e tokens utilizando modelos de linguagem baseados em Transformer. Utiliza modelos de linguagem como BERT/Albert/DistilBERT e etc. Os embeddings de textos, sentenças e palavras podem ser consolidados utilizando as estratégias de pooling média e máximo dos tokens.

Instalação

Recomendamos Python 3.6, Transformers 4.26.1, PyTorch 2.0.1, spaCy 3.5.2, SciPy 1.10.1, NumPy 1.22.4, Sentence Piece 0.1.99 e Protocol Buffers 3.20.3.

Instalação com pip

Para instalar o pacote utilizando o pip, basta executar o comando abaixo:

$ pip install texto-transformer

Instalação dos fontes

Você também pode clonar a versão mais recente do repositório e instalá-la diretamente do código-fonte:

$ pip install -e .

O comando deve ser executado no diretório onde foi realizado o download do repositório.

Exemplos

Uso simples

# Importa a classe
from textotransformer import TextoTransformer

# Instância uma objeto e baixa o modelo de linguagem
modelo = TextoTransformer("neuralmind/bert-base-portuguese-cased")

# Alguns textos a serem codificados
textos = ["Bom Dia, professor.",
          "Qual o conteúdo da prova?",
          "Vai cair tudo na prova?",
          "Aguardo uma resposta, João."]

# Recupera os embeddings consolidados dos textos
embeddings_texto = modelo.getEmbeddingTexto(textos)      

# Mostra os textos e seus embeddings
for texto, embedding in zip(textos, embeddings_texto):
    print("Texto:", texto)
    print("Embedding:", embedding)

#Resultado
#Texto: Bom Dia, professor.
#Embedding: tensor([ 1.3736e-01,  6.1996e-02,  3.2554e-01, -3.1146e-02,  3.5892e-01,...
#Texto: Qual o conteúdo da prova?
#Embedding: tensor([ 8.3348e-02, -1.8269e-01,  5.9241e-01, -9.5235e-02,  5.0978e-01,...
#Texto: Vai cair tudo na prova?
#Embedding: tensor([ 1.3447e-01,  1.1854e-01,  6.0201e-02,  1.0271e-01,  2.6321e-01,...
#Texto: Aguardo uma resposta, João.
#Embedding: tensor([ 3.7160e-02, -7.3645e-02,  3.3942e-01,  8.0847e-02,  3.8259e-01,...

Recuperando embeddings de diversas granularidades

# Importa a classe
from textotransformer import TextoTransformer

# Instância uma objeto e baixa o modelo de linguagem
modelo = TextoTransformer("neuralmind/bert-base-portuguese-cased")

# Texto a ser codificado
texto = "Você gosta de sorvete de manga? Sim, adoro muito."

# Recupera os embeddings consolidados do texto
embeddings_texto = modelo.getEmbeddingTexto(texto)
print("Um texto de tamanho     :",len(embeddings_texto))

# Recupera os embeddings consolidados das sentenças do texto
embeddings_sentenca = modelo.getEmbeddingSentenca(texto)
print("Quantidade de sentenças  :",len(embeddings_sentenca))
print("Cada sentença de tamanho :",len(embeddings_sentenca[0]))

# Recupera os embeddings consolidados das palavras do texto
embeddings_palavra = modelo.getEmbeddingPalavra(texto)
print("Quantidade de palavras   :",len(embeddings_palavra))
print("Cada palavra de tamanho  :",len(embeddings_palavra[0]))

# Recupera os embeddings dos tokens do texto
embeddings_token = modelo.getEmbeddingToken(texto)
print("Quantidade de tokens     :",len(embeddings_token))
print("Cada token de tamanho    :",len(embeddings_token[0]))

#Resultado
#Um texto de tamanho      : 768
#Quantidade de sentenças  : 2
#Cada sentença de tamanho : 768
#Quantidade de palavras   : 12
#Cada palavra de tamanho  : 768
#Quantidade de tokens     : 15
#Cada token de tamanho    : 768

Os exemplos podem ser executados através deste notebook no GoogleColab ExemplosTextoTransformer.ipynb.

Classe principal

A classe principal TextoTransformer carrega e cria um objeto para manipular um modelo de linguagem baseado e transformer. Permite recuperar e manipular embeddings recuperados de tokens, palavras, sentenças e textos.

Parâmetros inicialização

Aqui os parâmetros a serem especificados para instanciar a classe TextoTransformer.

  • pretrained_model_name_or_path - Se for um caminho de arquivo no disco, carrega o modelo a partir desse caminho. Se não for um caminho, ele primeiro faz o download do repositório de modelos do Huggingface com esse nome. Valor default: neuralmind/bert-base-portuguese-cased.
  • modelo_spacy - Nome do modelo spaCy a ser instalado e carregado pela ferramenta de pln spaCy. Valor default 'pt_core_news_lg'.
  • abordagem_extracao_embeddings_camadas - Especifica a abordagem padrão para a extração dos embeddings das camadas do transformer. Valor default '2'. Valores possíveis: 0-Primeira/1-Penúltima/2-Ùltima/3-Soma 4 últimas/4-Concat 4 últimas/5-Todas.
  • device - Dispositivo (como 'cuda' / 'cpu') que deve ser usado para o processamento. Se None, verifica se uma GPU pode ser usada. Se a GPU estiver disponível será usada no processamento. Valor default 'None'.

Métodos principais

Aqui os métodos principais para recuperar embeddings de textos, sentenças, palavras e tokens. Os métodos para recuperar os embeddings de textos, sentenças e palavras consolidados podem utilizar as estratégias de pooling média (MEAN) e máximo (MAX) dos embeddings de seus tokens.

  • getEmbeddingTexto(texto: Union[str, List[str]], estrategia_pooling: int)

    • Retorna uma lista dos embeddings consolidados dos textos.
    • Parâmetros:
      • texto: Um texto ou uma lista de textos para obter os embeddings.
      • estrategia_pooling: Especifica a estratégia de pooling dos tokens do texto. Valores possívels 0 - MEAN ou 1 - MAX. Valor default 0(MEAN).
  • getEmbeddingSentenca(texto: Union[str, List[str]], estrategia_pooling: int)

    • Retorna uma lista dos embeddings consolidados das sentenças dos textos.
    • Parâmetros:
      • texto: Um texto ou uma lista de textos para obter os embeddings.
      • estrategia_pooling: Especifica a estratégia de pooling dos tokens do texto. Valores possívels 0 - MEAN ou 1 - MAX. Valor default 0(MEAN).
  • getEmbeddingPalavra(texto: Union[str, List[str]], estrategia_pooling: int)

    • Retorna uma lista dos embeddings consolidados das palavras dos textos.
    • Parâmetros:
      • texto: Um texto ou uma lista de textos para obter os embeddings.
      • estrategia_pooling: Especifica a estratégia de pooling dos tokens do texto. Valores possívels 0 - MEAN ou 1 - MAX. Valor default 0(MEAN).
  • getEmbeddingToken(texto: Union[str, List[str]])

    • Retorna uma lista dos embeddings dos tokens dos textos.
    • Parâmetros:
      • texto: Um texto ou uma lista de textos para obter os embeddings.

Mensuração

Permite realizar a mensuração entre embeddings de diversas granularidades utilizando funções de similaridade e distância. As funções de similaridade do cosseno, produto cartesiano, distância Euclidiana e distância de Manhattan estão no pacote mensurador.medidas.

Modelos Pré-treinados

Testamos o framework com os modelos Albert, BERT, DistilBERT, GTPT2, OpenAIGPT, Roberta, XLMRoberta, XLMNet e T5.

A lista completa dos modelos de linguagem pré-treinados podem ser consultados no site da Huggingface.

A lista completa dos modelos da ferramenta de PLN spaCy podem ser consultados no site.

Dependências

  • transformers==4.26.1
  • spacy==3.5.2
  • tqdm==4.65.0
  • torch==2.0.1
  • scipy==1.10.1
  • numpy==1.22.4
  • sentencepiece==0.1.99
  • protobuf==3.20.3

Licença

Esse projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

texto_transformer-0.0.12.tar.gz (629.0 kB view details)

Uploaded Source

Built Distribution

texto_transformer-0.0.12-py3-none-any.whl (83.5 kB view details)

Uploaded Python 3

File details

Details for the file texto_transformer-0.0.12.tar.gz.

File metadata

  • Download URL: texto_transformer-0.0.12.tar.gz
  • Upload date:
  • Size: 629.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.12

File hashes

Hashes for texto_transformer-0.0.12.tar.gz
Algorithm Hash digest
SHA256 f1512f349e503893075776e3016b39766b37c3de04ebc4ed3d97b43fef57155e
MD5 ca673ac9e5f92e3849c8490379041fa1
BLAKE2b-256 22e8cfb1b7c6f3e8e178b629b9f1d1559d5ba244bd87c55e718bfb9afdace2fb

See more details on using hashes here.

File details

Details for the file texto_transformer-0.0.12-py3-none-any.whl.

File metadata

File hashes

Hashes for texto_transformer-0.0.12-py3-none-any.whl
Algorithm Hash digest
SHA256 b45c4e517d30fd82fce6ff56cdf7f8279e7bd5a2f0955b2ee1fc268674f3fa68
MD5 2b1ecff7b8253a51de3b9970016fc2e7
BLAKE2b-256 d34f3750d50c47db6ad136ee6dde6f9ff95d5c04a314f8a29a6199879f33635b

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page