这是 Hugging Face“变形金刚”库中设置
tokenizer
的默认方式:
from transformers import BertForSequenceClassification,BertTokenizer
tokenizer=BertTokenizer.from_pretrained('ProsusAI/finbert')
tokens=tokenizer.encode_plus(text,add_special_tokens=True, max_length=512, truncation=True, padding="max_length")
据我了解,设置
add_special_tokens=True
会将 [CLS]、[SEP] 等特殊标记和填充标记添加到输入序列中。这对于模型正确解释输入很有用。但是,我遇到过一些代码示例,人们将其设置为 False
。
我想知道在哪些特定情况下应该设置 add_special_tokens=True 以及在使用 tokenizer.encode_plus() 时何时应将其设置为 False?在分块或其他预处理步骤之后手动管理特殊令牌是否有任何场景会是有益的?
我认为用例正是分块。
为了确保每个块中的标记少于模型的最大上下文,您不希望模型特定的标记引入噪声。
否则,您将在第一个块中拥有一些
[CLS]
标记,然后只有一些块的数据,最后在最后一个块中再次有模型特定的标记。