获取 BertTokenizer 生成的子词的索引(在 Transformers 库中)

nam*_*-Pt 2 pytorch huggingface-transformers huggingface-tokenizers

BertTokenizer可以将一个句子标记为标记列表,其中一些长单词(例如“embeddings”)被分成几个子词,即“em”、“##bed”、“##ding”和“##s”。

有没有办法找到子词?例如,

t = BertTokenizer.from_pretrained('bert-base-uncased')

tokens = t('word embeddings', add_special_tokens=False)
location = locate_subwords(tokens)
Run Code Online (Sandbox Code Playgroud)

我想要对应于 的locationbe like ,其中 0 表示普通单词,1 表示子单词。[0, 1, 1, 1, 1]['word', 'em', '##bed', '##ding', '##s']

cro*_*oik 6

快速分词器返回一个具有内置word_ids 的Batchencoding对象:

from transformers import BertTokenizerFast

t = BertTokenizerFast.from_pretrained('bert-base-uncased')

tokens = t('word embeddings are vectors', add_special_tokens=False, return_attention_mask=False, return_token_type_ids=False)
print(tokens.word_ids())
Run Code Online (Sandbox Code Playgroud)

输出:

[0, 1, 1, 1, 1, 2, 3]
Run Code Online (Sandbox Code Playgroud)