Texto Transformer: Framework para processamento de textos utilizando modelos de linguagem baseados baseados em Transformer
Project description
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. SeNone
, 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for texto_transformer-0.0.12-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b45c4e517d30fd82fce6ff56cdf7f8279e7bd5a2f0955b2ee1fc268674f3fa68 |
|
MD5 | 2b1ecff7b8253a51de3b9970016fc2e7 |
|
BLAKE2b-256 | d34f3750d50c47db6ad136ee6dde6f9ff95d5c04a314f8a29a6199879f33635b |