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
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | f1512f349e503893075776e3016b39766b37c3de04ebc4ed3d97b43fef57155e |
|
MD5 | ca673ac9e5f92e3849c8490379041fa1 |
|
BLAKE2b-256 | 22e8cfb1b7c6f3e8e178b629b9f1d1559d5ba244bd87c55e718bfb9afdace2fb |
File details
Details for the file texto_transformer-0.0.12-py3-none-any.whl
.
File metadata
- Download URL: texto_transformer-0.0.12-py3-none-any.whl
- Upload date:
- Size: 83.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b45c4e517d30fd82fce6ff56cdf7f8279e7bd5a2f0955b2ee1fc268674f3fa68 |
|
MD5 | 2b1ecff7b8253a51de3b9970016fc2e7 |
|
BLAKE2b-256 | d34f3750d50c47db6ad136ee6dde6f9ff95d5c04a314f8a29a6199879f33635b |