当前位置:   article > 正文

HuggingFace的安装和编码_huggingface安装

huggingface安装

安装

使用以下命令安装:

pip install transformers
  • 1

模型的加载

导入包:

from transformers import BertTokenizer
  • 1

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

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

接下来就可以看到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]'})
  • 1
  • 2
  • 3

进行编码

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,
)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

可以打印出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]
  • 1
  • 2

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

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

多功能编码

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,
)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

查看编码的结果:

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:返回句子的长度
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

将句子批量进行编码

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,
)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号