如何对文字进行数字编码 利用bert

 batch = [    "我喜欢红色",    "你喜欢蓝色吗",    "我们都喜欢绿色,不是吗"]

可以使用Tokenizer进行数字编码,例如:

from transformers import BertTokenizer
tokenizer = BertTokenizer.from_pretrained('bert-base-chinese') # 加载中文BERT分词器

batch = [
    "我喜欢红色",
    "你喜欢蓝色吗",
    "我们都喜欢绿色,不是吗"
]

encoded_batch = tokenizer(batch, padding=True, truncation=True, return_tensors='pt') # 返回pytorch张量

print(encoded_batch)

输出结果:

{'input_ids': tensor([[ 101,  2769,  6421,  4692,  2399,  102],
        [ 101,  872,  6421,  5023,  7274,  720,   102],
        [ 101,  2767,  6963,  2218,  4692,  1086,  8024,  679,  3221,  2739,
          8024,  679,  3221,  6662,   102]]), 
 'token_type_ids': tensor([[0, 0, 0, 0, 0, 0],
        [0, 0, 0, 0, 0, 0, 0],
        [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]), 
 'attention_mask': tensor([[1, 1, 1, 1, 1, 1],
        [1, 1, 1, 1, 1, 1, 1],
        [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]])}

其中,input_ids是每个句子的token id序列,token_type_ids表示句子所属的句子对,attention_mask是注意力掩码,以便在序列长度不同时进行填充。需要注意的是,如果使用其他预训练模型,语言对应的分词器不一定相同

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
BERT使用了一种叫做WordPiece的分词方法,将单词和子词片段组合成词汇表中的词。对于已经分好词的文本,BERT需要将每个词转换成对应的向量表示,这个过程被称为编码。 BERT使用了一种叫做Transformer的神经网络模型来进行编码。具体来说,BERT使用了两个Transformer编码器,分别称为BERT-base和BERT-large,它们有不同的层数和参数数量。 下面是一个简单的Python代码示例,演示如何使用BERT对分好的词进行编码: ```python from transformers import BertTokenizer, BertModel # 加载BertTokenizer和BertModel tokenizer = BertTokenizer.from_pretrained('bert-base-uncased') model = BertModel.from_pretrained('bert-base-uncased') # 定义要编码的文本 text = "This is an example sentence." # 使用tokenizer将文本转换为词汇表中的token tokens = tokenizer.tokenize(text) # 将token转换为其对应的编号 input_ids = tokenizer.convert_tokens_to_ids(tokens) # 将编号转换为PyTorch张量 input_tensor = torch.tensor([input_ids]) # 使用BertModel对文本进行编码 outputs = model(input_tensor) # 获取编码结果 encoded_layers = outputs[0] ``` 在这个例子中,我们首先加载了BertTokenizer和BertModel。然后,我们定义了一个要编码的文本。我们使用BertTokenizer将文本转换为词汇表中的token,并将token转换为其相应的编号。接下来,我们将编号转换为PyTorch张量,并使用BertModel对文本进行编码。最后,我们获取编码结果,即`encoded_layers`。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值