Давайте рассмотрим два предложения:
"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']
Таким образом, токенизация хранит всю информацию об апострофах, и у нас не будет проблем с притяжательными людьми.