language: zh
license: apache-2.0
BERTweet.BR:面向葡萄牙语推文的预训练语言模型
我们采用与BERTweet相同的架构,基于RoBERTa的预训练流程,在包含1亿条葡萄牙语推文、约9GB规模的语料库上从头训练了本模型。
使用方法
标准化输入处理
import torch
from transformers import AutoModel, AutoTokenizer
model = AutoModel.from_pretrained('melll-uff/bertweetbr')
tokenizer = AutoTokenizer.from_pretrained('melll-uff/bertweetbr', normalization=False)
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)
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]])
原始推文标准化处理
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]
['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)
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]])
使用Pipeline进行掩码填充
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)
[{'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'}]