Трансформеры и BERT: работа с собственниками и апострофами при кодировании - PullRequest
0 голосов
/ 02 апреля 2020

Давайте рассмотрим два предложения:

"why isn't Alex's text tokenizing? The house on the left is the Smiths' house"

Теперь давайте разберем и расшифруем

from transformers import BertTokenizer
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased', do_lower_case=True)
tokenizer.decode(tokenizer.convert_tokens_to_ids(tokenizer.tokenize("why isn't Alex's text tokenizing? The house on the left is the Smiths' house")))

Получим:

"why isn't alex's text tokenizing? the house on the left is the smiths'house"

Мой вопрос как справиться с отсутствующим пространством в некоторых притяжательных людях, таких как smiths'house ?

Мне кажется, что процесс токенизации в Transformers не так. Давайте рассмотрим вывод

tokenizer.tokenize("why isn't Alex's text tokenizing? The house on the left is the Smiths' house")

, который мы получим:

['why', 'isn', "'", 't', 'alex', "'", 's', 'text', 'token', '##izing', '?', 'the', 'house', 'on', 'the', 'left', 'is', 'the', 'smith', '##s', "'", 'house']

Итак, на этом этапе мы уже потеряли важную информацию о последнем апострофе. Было бы намного лучше, если бы токенизация была сделана другим способом:

['why', 'isn', "##'", '##t', 'alex', "##'", '##s', 'text', 'token', '##izing', '?', 'the', 'house', 'on', 'the', 'left', 'is', 'the', 'smith', '##s', "##'", 'house']

Таким образом, токенизация хранит всю информацию об апострофах, и у нас не будет проблем с притяжательными людьми.

...