Transformers documentation
HerBERT
Este modelo foi publicado no HF papers em 2020-05-01 e contribuído para o Hugging Face Transformers em 2020-11-16.
HerBERT
Visão geral
O modelo HerBERT foi proposto em KLEJ: Comprehensive Benchmark for Polish Language Understanding por Piotr Rybak, Robert Mroczkowski, Janusz Tracz e Ireneusz Gawlik. Trata-se de um modelo de linguagem baseado em BERT, treinado em corpora poloneses usando apenas o objetivo MLM com mascaramento dinâmico de palavras inteiras.
O resumo do artigo é o seguinte:
Nos últimos anos, uma série de modelos baseados em Transformer desbloqueou grandes melhorias em tarefas gerais de compreensão de linguagem natural (NLU). Esse ritmo acelerado de pesquisa não seria possível sem benchmarks gerais de NLU, que permitem uma comparação justa dos métodos propostos. No entanto, esses benchmarks estão disponíveis apenas para um pequeno número de idiomas. Para mitigar esse problema, introduzimos um benchmark abrangente de múltiplas tarefas para a compreensão da língua polonesa, acompanhado por um leaderboard online. Ele consiste em um conjunto diversificado de tarefas, adotadas de conjuntos de dados existentes para reconhecimento de entidades nomeadas, question-answering, entailment textual e outros. Também introduzimos uma nova tarefa de análise de sentimento para o domínio de e-commerce, chamada Allegro Reviews (AR). Para garantir um esquema de avaliação comum e promover modelos que generalizam para diferentes tarefas de NLU, o benchmark inclui conjuntos de dados de domínios e aplicações variados. Além disso, liberamos o HerBERT, um modelo baseado em Transformer treinado especificamente para a língua polonesa, que apresenta o melhor desempenho médio e obtém os melhores resultados em três das nove tarefas. Por fim, fornecemos uma avaliação extensa, incluindo vários baselines padrão e modelos multilíngues baseados em Transformer propostos recentemente.
Este modelo foi contribuído por rmroczkowski. O código original pode ser encontrado aqui.
Exemplo de uso
from transformers import HerbertTokenizer, RobertaModel
tokenizer = HerbertTokenizer.from_pretrained("allegro/herbert-klej-cased-tokenizer-v1")
model = RobertaModel.from_pretrained("allegro/herbert-klej-cased-v1", device_map="auto")
encoded_input = tokenizer.encode("Kto ma lepszą sztukę, ma lepszy rząd – to jasne.", return_tensors="pt").to(model.device)
outputs = model(encoded_input)
# HerBERT can also be loaded using AutoTokenizer and AutoModel:
from transformers import AutoModel, AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("allegro/herbert-klej-cased-tokenizer-v1")
model = AutoModel.from_pretrained("allegro/herbert-klej-cased-v1", device_map="auto")A implementação do Herbert é a mesma do
BERT, exceto pelo método de tokenização. Consulte a documentação do BERT para referência da API e exemplos.
HerbertTokenizer
classe transformers.HerbertTokenizer
< source >( vocab: str | dict[str, int] | None = Nonemerges: str | list[str] | None = Nonecls_token: str = '<s>'unk_token: str = '<unk>'pad_token: str = '<pad>'mask_token: str = '<mask>'sep_token: str = '</s>'vocab_file: str | None = Nonemerges_file: str | None = None**kwargs )
Parâmetros
- vocab_file (
str) — Caminho para o arquivo de vocabulário. - merges_file (
str) — Caminho para o arquivo de mesclagens. - cls_token (
str, opcional, padrão"<s>") — O token do classificador. - unk_token (
str, opcional, padrão"<unk>") — O token desconhecido. - pad_token (
str, opcional, padrão"<pad>") — O token de preenchimento. - mask_token (
str, opcional, padrão"<mask>") — O token de máscara. - sep_token (
str, opcional, padrão"</s>") — O token separador. - vocab (
str,dictoulist, opcional) — Dicionário de vocabulário personalizado. - merges (
stroulist[str], opcional) — Lista de mesclagens personalizada.
Construa um tokenizador BPE para HerBERT (baseado na biblioteca tokenizers da HuggingFace).
Particularidades:
- usa o pré-tokenizador do BERT: BertPreTokenizer divide os tokens em espaços e também em pontuação. Cada ocorrência de um caractere de pontuação será tratada separadamente.
Este tokenizador herda de TokenizersBackend, que contém a maioria dos métodos. Os usuários devem consultar a superclasse para obter mais informações sobre os métodos.