gpt4 book ai didi

python - max_length、填充和截断参数在 HuggingFace' BertTokenizerFast.from_pretrained ('bert-base-uncased' ) 中如何工作?

转载 作者:行者123 更新时间:2023-12-04 13:11:01 28 4
gpt4 key购买 nike

我正在处理文本分类问题,我想使用 BERT 模型作为基础,然后是密集层。我想知道这 3 个参数是如何工作的?例如,如果我有 3 个句子:

'My name is slim shade and I am an aspiring AI Engineer',
'I am an aspiring AI Engineer',
'My name is Slim'
那么这 3 个参数会做什么呢?我认为如下:
  • max_length=5将严格保留长度为 5 的所有句子
  • padding=max_length将为第三句
  • 添加 1 的填充
  • truncate=True将截断第一个和第二个句子,使其长度严格为 5。

  • 如果我错了,请纠正我。
    下面是我使用过的代码。
    ! pip install transformers==3.5.1

    from transformers import BertTokenizerFast

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

    tokens = tokenizer.batch_encode_plus(text,max_length=5,padding='max_length', truncation=True)

    text_seq = torch.tensor(tokens['input_ids'])
    text_mask = torch.tensor(tokens['attention_mask'])

    最佳答案

    您所假设的几乎是正确的,但是,几乎没有区别。max_length=5 , max_length 指定 的长度标记化文本 .默认情况下,BERT 执行词段标记化。例如“playing”这个词可以拆分为“play”和“##ing”(这可能不是很精确,只是为了帮助你理解词块标记化),然后添加[CLS]句子开头的标记,以及 [SEP]句末的记号。因此,它首先标记句子,将其截断为 max_length-2 (如果 truncation=True ),然后添加 [CLS]开头和[SEP]最后的标记。(所以总长度为 max_length )padding='max_length' , 在这个例子中,第三个例子将被填充不是很明显,因为长度超过 5追加后 [CLS][SEP] token 。但是,如果您有 max_length共 10 个。标记化的文本对应于 [101, 2026, 2171, 2003, 11754, 102, 0, 0, 0, 0] ,其中 101 是 [CLS] 的 ID 102 是 [SEP] 的 ID token 。因此,用零填充使所有文本的长度为 max_length同样,truncate=True将确保严格遵守 max_length,即较长的句子被截断为 max_length仅当 truncate=True

    关于python - max_length、填充和截断参数在 HuggingFace' BertTokenizerFast.from_pretrained ('bert-base-uncased' ) 中如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65246703/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com