【问题标题】:How to combine two tokenized bert sequences如何组合两个标记化的伯特序列
【发布时间】:2020-11-23 23:00:14
【问题描述】:

假设我有两个标记化的 BERT 序列:

seq1 = tensor([[ 101,  2023,  2003,  1996, 23032,   102]])
seq2 = tensor([[ 101, 2023, 2003, 6019, 1015,  102]])

这是用 huggingface 的分词器生成的:

seq = torch.tensor(tokenizer.encode(text=query, add_special_tokens=True)).unsqueeze(0)

组合标记化序列以获得最终序列的最佳方法是什么,其中 [sep] 标记是自动递增的?

例如:

combined = tensor([[ 101,  2023,  2003,  1996, 23032,   102,  2023,  2003,  6019,  1015,
           102]])

似乎我应该循环并增加特殊标记,但这似乎也很老套。

【问题讨论】:

  • 是否有必要使用seq1seq2 或者您也可以使用实际的字符串?
  • 不理想,不

标签: python tokenize bert-language-model huggingface-transformers


【解决方案1】:

有多种选择可以实现您的目标。例如,您可以使用标记器的 test_pair 输入,以防您可以直接使用字符串。您还可以将张量与torch.cat 连接起来。请看下面的例子:

import torch
from transformers import BertTokenizer

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

query1= 'hello stackoverflow'
query2= 'hello huggingface'
#creating an input pair with the original strings
print(tokenizer.encode(text = query1, text_pair=query2, return_tensors='pt'))

seq1 = tokenizer.encode(text=query1, return_tensors='pt')
seq2  = tokenizer.encode(text=query2, return_tensors='pt')
#concatenating existing tensors 
print(torch.cat((seq1, seq2[:, 1:]),dim=1))

输出:

tensor([[  101,  7592,  9991,  7840, 12314,   102,  7592, 17662, 12172,   102]])
tensor([[  101,  7592,  9991,  7840, 12314,   102,  7592, 17662, 12172,   102]])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-05
    • 1970-01-01
    • 1970-01-01
    • 2015-02-15
    • 2018-06-16
    • 2020-05-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多