File size: 3,816 Bytes
f5344ed 487659f f5344ed 6686b7f f8c2752 966dd59 07fab57 966dd59 07fab57 966dd59 f38ec9f 5c8dfaa 5af2a4f 5c8dfaa 966dd59 5c8dfaa 966dd59 5c8dfaa f38ec9f 5af2a4f 07fab57 1332e64 07fab57 1332e64 1bcd20e 1332e64 5c8dfaa 1332e64 5c8dfaa 24940da 5c8dfaa 24940da 5c8dfaa 5af2a4f 5c8dfaa 5af2a4f 1332e64 07fab57 786a2bc 07fab57 1bcd20e 5c8dfaa 1bcd20e 966dd59 |
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 |
---
language: pt
license: apache-2.0
---
# <a name="introduction"></a> BERTweet.BR: A Pre-Trained Language Model for Tweets in Portuguese
Having the same architecture of [BERTweet](https://huggingface.co/docs/transformers/model_doc/bertweet) we trained our model from scratch following [RoBERTa](https://huggingface.co/docs/transformers/model_doc/roberta) pre-training procedure on a corpus of approximately 9GB containing 100M Portuguese Tweets.
## Usage
### Normalized Inputs
```python
import torch
from transformers import AutoModel, AutoTokenizer
model = AutoModel.from_pretrained('melll-uff/bertweetbr')
tokenizer = AutoTokenizer.from_pretrained('melll-uff/bertweetbr', normalization=False)
# INPUT TWEETS ALREADY NORMALIZED!
inputs = [
"Procuro um amor , que seja bom pra mim ... vou procurar , eu vou até o fim :nota_musical:",
"Que jogo ontem @USER :mãos_juntas:",
"Demojizer para Python é :polegar_para_cima: e está disponível em HTTPURL"]
encoded_inputs = tokenizer(inputs, return_tensors="pt", padding=True)
with torch.no_grad():
last_hidden_states = model(**encoded_inputs)
# CLS Token of last hidden states. Shape: (number of input sentences, hidden sizeof the model)
last_hidden_states[0][:,0,:]
tensor([[-0.1430, -0.1325, 0.1595, ..., -0.0802, -0.0153, -0.1358],
[-0.0108, 0.1415, 0.0695, ..., 0.1420, 0.1153, -0.0176],
[-0.1854, 0.1866, 0.3163, ..., -0.2117, 0.2123, -0.1907]])
```
### Normalize raw input Tweets
```python
from emoji import demojize
import torch
from transformers import AutoModel, AutoTokenizer
model = AutoModel.from_pretrained('melll-uff/bertweetbr')
tokenizer = AutoTokenizer.from_pretrained('melll-uff/bertweetbr', normalization=True)
inputs = [
"Procuro um amor , que seja bom pra mim ... vou procurar , eu vou até o fim 🎵",
"Que jogo ontem @cristiano 🙏",
"Demojizer para Python é 👍 e está disponível em https://pypi.org/project/emoji/"]
tokenizer.demojizer = lambda x: demojize(x, language='pt')
[tokenizer.normalizeTweet(s) for s in inputs]
# Tokenizer first normalizes tweet sentences
['Procuro um amor , que seja bom pra mim ... vou procurar , eu vou até o fim :nota_musical:',
'Que jogo ontem @USER :mãos_juntas:',
'Demojizer para Python é :polegar_para_cima: e está disponível em HTTPURL']
encoded_inputs = tokenizer(inputs, return_tensors="pt", padding=True)
with torch.no_grad():
last_hidden_states = model(**encoded_inputs)
# CLS Token of last hidden states. Shape: (number of input sentences, hidden sizeof the model)
last_hidden_states[0][:,0,:]
tensor([[-0.1430, -0.1325, 0.1595, ..., -0.0802, -0.0153, -0.1358],
[-0.0108, 0.1415, 0.0695, ..., 0.1420, 0.1153, -0.0176],
[-0.1854, 0.1866, 0.3163, ..., -0.2117, 0.2123, -0.1907]])
```
### Mask Filling with Pipeline
```python
from transformers import pipeline
model_name = 'melll-uff/bertweetbr'
tokenizer = AutoTokenizer.from_pretrained('melll-uff/bertweetbr', normalization=False)
filler_mask = pipeline("fill-mask", model=model_name, tokenizer=tokenizer)
filler_mask("Rio é a <mask> cidade do Brasil.", top_k=5)
# Output
[{'sequence': 'Rio é a melhor cidade do Brasil.',
'score': 0.9871652126312256,
'token': 120,
'token_str': 'm e l h o r'},
{'sequence': 'Rio é a pior cidade do Brasil.',
'score': 0.005050931591540575,
'token': 316,
'token_str': 'p i o r'},
{'sequence': 'Rio é a maior cidade do Brasil.',
'score': 0.004420778248459101,
'token': 389,
'token_str': 'm a i o r'},
{'sequence': 'Rio é a minha cidade do Brasil.',
'score': 0.0021856199018657207,
'token': 38,
'token_str': 'm i n h a'},
{'sequence': 'Rio é a segunda cidade do Brasil.',
'score': 0.0002110043278662488,
'token': 667,
'token_str': 's e g u n d a'}]
``` |