Настройте модуль кодирования в модели huggingface bert - PullRequest
1 голос
/ 19 июня 2020

Я работаю над проектом классификации текста, используя модуль преобразователей Huggingface . Функция encode_plus предоставляет пользователям удобный способ генерации идентификаторов ввода, масок внимания, идентификаторов типов токенов и т. Д. c. Например:

from transformers import BertTokenizer

pretrained_model_name = 'bert-base-cased'
bert_base_tokenizer = BertTokenizer.from_pretrained(pretrained_model_name)

sample_text = 'Bamboo poles, ‍installation by an unknown building constructor #discoverhongkong #hongkonginsta'

encoding = bert_base_tokenizer.encode_plus(
        cleaned_tweet, hashtag_string,
        max_length=70,
        add_special_tokens=True,  # Add '[CLS]' and '[SEP]'
        return_token_type_ids=True,
        pad_to_max_length=True,
        return_attention_mask=True,
        return_tensors='pt',  # Return PyTorch tensors
    )

print('*'*20)
print(encoding['input_ids'])
print(encoding['attention_mask'])
print(encoding['token_type_ids'])
print('*'*20)

Однако мой текущий проект требует, чтобы я сгенерировал индивидуальные идентификаторы для заданного текста. Например, для списка слов [HK, US, UK] я хочу сгенерировать идентификаторы для этих слов, а идентификаторы других слов, которых нет в этом списке, оставить равными нулю. Эти идентификаторы используются для встраивания в другую настраиваемую матрицу встраивания, а не из предварительно обученного модуля bert.

Как я могу получить такой настраиваемый кодировщик? Любые предложения и решения приветствуются! Спасибо ~

1 Ответ

1 голос
/ 21 июня 2020

Я думаю, вы можете использовать токены <unusedxxx> в словаре BERT и добавить туда свои собственные токены. Так что теперь вы можете легко обращаться к ним с действующим идентификатором токена.

...