readme: ---
  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'}]
  ```