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},
}
```