HuggingFace的安装和编码

安装

使用以下命令安装:

pip install transformers

模型的加载

导入包:

from transformers import BertTokenizer

加载预训练模型bert-base-chinese,初次加载可能需要较长的时间。

#加载预训练字典和分词方法
tokenizer = BertTokenizer.from_pretrained(
	# 下载或者从本地加载模型
    pretrained_model_name_or_path='bert-base-chinese',
    force_download=False,
)

接下来就可以看到tokenizer的内容:

tokenizer

#print:(name_or_path='bert-base-chinese', vocab_size=21128, model_max_len=512, is_fast=False, padding_side='right', truncation_side='right', special_tokens={'unk_token': '[UNK]', 'sep_token': '[SEP]', 'pad_token': '[PAD]', 'cls_token': '[CLS]', 'mask_token': '[MASK]'})

进行编码

sents = [
    '我在一所学院上大三。',
    '今天天气好,我来图书馆学习。',
]

res= tokenizer.encode(
    # 可以一次编码两个句子,即text和text_pair
    text = sents[0],
    text_pair=sents[1],
    
    # 当句子长度大于max_length是选择截断
    truncation=True,
    
    # 一律补pad到max_length长度
    padding='max_length',
    add_special_tokens = True,
    max_length=30,
    return_tensors=None,
)

可以打印出res的结果:

# 101为CLS    102为SEP    0为PAD
#print(res):[101, 2769, 1762, 671, 2792, 2110, 7368, 677, 1920, 676, 511, 102, 791, 1921, 1921, 3698, 1962, 8024, 2769, 3341, 1745, 741, 7667, 2110, 739, 511, 102, 0, 0, 0]

也可以查看编码之后的结果:

tokenizer.decode(res)
# [CLS] 我 在 一 所 学 院 上 大 三 。 [SEP] 今 天 天 气 好 , 我 来 图 书 馆 学 习 。 [SEP] [PAD] [PAD] [PAD]

多功能编码

res = tokenizer.encode_plus(
    # 可以一次编码两个句子
    text = sents[0],
    text_pair=sents[1],
    
    # 当句子长度大于max_length是选择截断
    truncation=True,
    
    # 一律补pad到max_length长度
    padding='max_length',
    add_special_tokens = True,
    max_length=30,
    
    # 返回值的类型:tf  pt  np
    return_tensors=None,
    
    # 返回token_type_ids
    return_token_type_ids=True,
    
    # 返回attention_mask
    return_attention_mask = True,
    
    
    # 返回length标识长度
    return_length = True,
)

查看编码的结果:

for k,v in res.items():
    print(k,':',v)
    
tokenizer.decode(res['input_ids'])

# input_ids:编码后的句子
# token_type_ids:第一个句子和特殊符号的位置是0,第二个句子的位置是1
# attention_mask:pad的位置是0,其它位置是1
# length:返回句子的长度

将句子批量进行编码

out = tokenizer.batch_encode_plus(
    batch_text_or_text_pairs=[sents[0],sents[1]],
    
    # 当句子长度大于max_length是选择截断
    truncation=True,
    
    # 一律补pad到max_length长度
    padding='max_length',
    add_special_tokens = True,
    max_length=30,
    
    # 返回值的类型:tf  pt  np
    return_tensors=None,
    
    # 返回token_type_ids
    return_token_type_ids=True,
    
    # 返回attention_mask
    return_attention_mask = True,
    
    # 返回length标识长度
    return_length = True,
)
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值