File size: 9,801 Bytes
fc5fc1f 33a7687 fc5fc1f e281aaf fc5fc1f 501c710 fc5fc1f 308bd95 fc5fc1f 6279017 fc5fc1f 33a7687 e281aaf 33a7687 fc5fc1f e281aaf fc5fc1f bdd4243 fc5fc1f 1b1de09 fc5fc1f 1b1de09 fc5fc1f e281aaf fc5fc1f 76a7d96 e281aaf 76a7d96 45012d8 76a7d96 45012d8 76a7d96 a393442 76a7d96 a393442 76a7d96 a393442 fc5fc1f |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 |
---
pipeline_tag: sentence-similarity
tags:
- sentence-transformers
- feature-extraction
- sentence-similarity
- transformers
---
# Mode description
*This is a [sentence-transformers](https://www.SBERT.net) model: It maps sentences & paragraphs to a 512 dimensional dense vector space and can be used for tasks like clustering or semantic search.*
Este modelo é do tipo [sentence-transformers](https://www.SBERT.net) baseado no modelo [ult5-pt-small](https://huggingface.co/tgsc/ult5-pt-small). Ele mapeia sentenças e parágrafos para vetores denso de dimensão 512, e pode ser utilizado para clustering, similaridades entre textos um busca semântica.
| Model | type | Vocabulary | Parameters | Context length |
| :-: | :-: | :-: | :-: | :-: |
| [ult5-pt-small](https://huggingface.co/tgsc/ult5-pt-small) | encoder-decoder | 65k |82.4M | 1024 |
| [sentence-transformer-ult5-pt-small](https://huggingface.co/tgsc/sentence-transformer-ult5-pt-small) | sentence-transformer | 65k | 51M | 1024 |
| [DeBERTina-base](https://huggingface.co/tgsc/debertina-base) | encoder | 32k | 100M | 512 |
## Use cases
Os modelos [sentence-transformers](https://www.SBERT.net) geram *embeddings* do texto de melhor qualidade do que utilizar embeddings diretamente de encoders como BERT ou T5.
Possíveis aplicações para o modelo são:
*Possible use cases*:
- [Clustering](https://www.sbert.net/examples/applications/clustering/README.html)
- [Semantic Textual Similarity](https://www.sbert.net/docs/usage/semantic_textual_similarity.html)
- [Paraphrase Mining](https://www.sbert.net/examples/applications/paraphrase-mining/README.html)
- [Semantic Search](https://www.sbert.net/examples/applications/semantic-search/README.html)
## Base Model
[tgsc/ult5-pt-small](https://huggingface.co/tgsc/ult5-pt-small)
## Usage (Sentence-Transformers)
O modo mais simples de uso é utilizar a biblioteca [sentence-transformers](https://www.SBERT.net):
*Using this model becomes easy when you have [sentence-transformers](https://www.SBERT.net) installed:*
```
pip install -U sentence-transformers
```
Para obter o embeddings:
*Then you can use the model like this:*
```python
from sentence_transformers import SentenceTransformer
sentences = ["Este é um exemplo de sentença", "A sentença é convertida em um texto de dimensão 513"]
model = SentenceTransformer('tgsc/sentence-transformer-ult5-pt-small')
embeddings = model.encode(sentences)
print(embeddings)
```
## Usage (HuggingFace Transformers)
É possível utilizar o modelo apenas com a biblioteca transfomers. Primeiro, passa-se o texto pelo modelo, e em seguida se aplica a operação de *right pooling* aos embeddings contextuais do texto.
*Without [sentence-transformers](https://www.SBERT.net), you can use the model like this: First, you pass your input through the transformer model, then you have to apply the right pooling-operation on-top of the contextualized word embeddings.*
```python
from transformers import AutoTokenizer, T5EncoderModel
import torch
#Mean Pooling - Take attention mask into account for correct averaging
def mean_pooling(model_output, attention_mask):
token_embeddings = model_output[0] #First element of model_output contains all token embeddings
input_mask_expanded = attention_mask.unsqueeze(-1).expand(token_embeddings.size()).float()
return torch.sum(token_embeddings * input_mask_expanded, 1) / torch.clamp(input_mask_expanded.sum(1), min=1e-9)
# Sentences we want sentence embeddings for
sentences = ["Este é um exemplo de sentença", "A sentença é convertida em um texto de dimensão 513"]
# Load model from HuggingFace Hub
tokenizer = AutoTokenizer.from_pretrained('tgsc/sentence-transformer-ult5-pt-small')
model = T5EncoderModel.from_pretrained('tgsc/sentence-transformer-ult5-pt-small')
# Tokenize sentences
encoded_input = tokenizer(sentences, padding=True, truncation=True, return_tensors='pt')
# Compute token embeddings
with torch.no_grad():
model_output = model(**encoded_input)
# Perform pooling. In this case, mean pooling.
sentence_embeddings = mean_pooling(model_output, encoded_input['attention_mask'])
print("Sentence embeddings:")
print(sentence_embeddings)
```
## Similarity example
```python
from sentence_transformers import SentenceTransformer, util
model = SentenceTransformer('tgsc/sentence-transformer-ult5-pt-small')
# Two lists of sentences
sentences1 = 10*['A Constituição da República é a norma máxima que regula a organização e funcionamento do Estado, garantindo os direitos fundamentais e estabelecendo os princípios e deveres que norteiam a sociedade brasileira.']
sentences2 = [
# Reescrituras da frase de referência
'Garantindo os direitos fundamentais e estabelecendo os princípios e deveres que norteiam a sociedade brasileira, a Constituição da República é a norma máxima que regula a organização e funcionamento do Estado.',
'A Constituição federal, enquanto lei suprema, determina a organização política da nação, protegendo os direitos fundamentais e estabelecendo as diretrizes e obrigações que conduzem a sociedade brasileira.',
'A Carta magna, como norma fundamental, regula a ordem jurídica e política do Estado, protegendo as garantias fundamentais e estabelecendo os princípios e responsabilidades que direcionam a sociedade brasileira.',
'A Lei maior, que disciplina a organização e o funcionamento dos poderes públicos, garante as liberdades e direitos essenciais e estabelece os valores e compromissos que orientam a sociedade brasileira.',
'A Lei fundamental do Estado, ao definir a estrutura e o funcionamento do Estado, assegura os direitos fundamentais e estabelece as normas e preceitos que orientam a sociedade brasileira.',
# Sentidos diferentes
'O contrato de prestação de serviços deve ser elaborado com clareza e objetividade, definindo as obrigações e responsabilidades de ambas as partes envolvidas.',
'A Lei Geral de Proteção de Dados (LGPD) estabelece as regras para o tratamento e proteção de informações pessoais no Brasil, visando a privacidade e segurança dos titulares.',
'O festival de música contou com a participação de diversas bandas nacionais e internacionais, atraindo um grande público ao longo de três dias de evento.',
'A feira de artesanato reuniu artesãos de diversas regiões do país, oferecendo uma variedade de produtos criativos e exclusivos para os visitantes.',
'O encontro de empreendedorismo contou com a presença de grandes líderes empresariais, que compartilharam suas experiências e estratégias para o sucesso nos negócios.',]
#Compute embedding for both lists
embeddings1 = model.encode(sentences1, convert_to_tensor=True)
embeddings2 = model.encode(sentences2, convert_to_tensor=True)
#Compute cosine-similarities
cosine_scores = util.cos_sim(embeddings1, embeddings2)
#Output the pairs with their score
# Print
print('sentença de referência\n', sentences1[0],'\n')
print('Reescrituras da frase de referência')
for i in range(len(sentences1)):
print("Score: {:.4f} {} \t\t".format(cosine_scores[i][i], sentences2[i]))
if i==4:
print('\nFrases sobre assuntos diferentes')
# sentença de referência
# A Constituição da República é a norma máxima que regula a organização e funcionamento do Estado, garantindo os direitos fundamentais e estabelecendo os princípios e deveres que norteiam a sociedade brasileira.
# Reescrituras da frase de referência
# Score: 0.9825 Garantindo os direitos fundamentais e estabelecendo os princípios e deveres que norteiam a sociedade brasileira, a Constituição da República é a norma máxima que regula a organização e funcionamento do Estado.
# Score: 0.8496 A Constituição federal, enquanto lei suprema, determina a organização política da nação, protegendo os direitos fundamentais e estabelecendo as diretrizes e obrigações que conduzem a sociedade brasileira.
# Score: 0.8192 A Carta magna, como norma fundamental, regula a ordem jurídica e política do Estado, protegendo as garantias fundamentais e estabelecendo os princípios e responsabilidades que direcionam a sociedade brasileira.
# Score: 0.8385 A Lei maior, que disciplina a organização e o funcionamento dos poderes públicos, garante as liberdades e direitos essenciais e estabelece os valores e compromissos que orientam a sociedade brasileira.
# Score: 0.8745 A Lei fundamental do Estado, ao definir a estrutura e o funcionamento do Estado, assegura os direitos fundamentais e estabelece as normas e preceitos que orientam a sociedade brasileira.
# Frases sobre assuntos diferentes
# Score: 0.4742 O contrato de prestação de serviços deve ser elaborado com clareza e objetividade, definindo as obrigações e responsabilidades de ambas as partes envolvidas.
# Score: 0.5510 A Lei Geral de Proteção de Dados (LGPD) estabelece as regras para o tratamento e proteção de informações pessoais no Brasil, visando a privacidade e segurança dos titulares.
# Score: 0.1828 O festival de música contou com a participação de diversas bandas nacionais e internacionais, atraindo um grande público ao longo de três dias de evento.
# Score: 0.1489 A feira de artesanato reuniu artesãos de diversas regiões do país, oferecendo uma variedade de produtos criativos e exclusivos para os visitantes.
# Score: 0.2284 O encontro de empreendedorismo contou com a presença de grandes líderes empresariais, que compartilharam suas experiências e estratégias para o sucesso nos negócios.
```
## Citation
```bibtex
@misc{ult5-pt2023,
author = {Thacio Garcia Scandaroli},
title = {ULT5-pt: Portuguese Language Model trained with UL2},
year = {2023},
}
``` |