当前位置:   article > 正文

huggingface加载预训练模型部分API笔记_huggingface 加载 torch模型

huggingface 加载 torch模型

1.加载预训练模型的词表和tokenizer

# huggingface使用
from transformers import BertTokenizer

# 加载预训练字典和分词方法,本地路径
tokenizer = BertTokenizer.from_pretrained(
    pretrained_model_name_or_path='E:/bert-base-chinese',
    cache_dir=None,
    force_download=False,
)

sents = [
    '选择珠江花园的原因就是方便。',
    '笔记本的键盘确实爽。',
    '房间太小。其它都一般。',
]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

2.使用预训练语言模型来编码句子

# 编码两个句子
out = tokenizer.encode(
    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,  # 不指定返回的数据类型,默认是list类型
)
#print(out)

print(tokenizer.decode(out))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

3.批量编码句子

#  批量编码句子
out = tokenizer.batch_encode_plus(
    batch_text_or_text_pairs=[sents[0],sents[1]],
    add_special_tokens=True,
    # 句子长度大于max_length时,截断
    truncation=True,
    # 一律补零到max_length的长度
    padding='max_length',
    max_length=15,
    # 返回值类型
    return_tensors=None,
    # 返回token_type_ids
    return_token_type_ids=True,
    # 返回attention_mask
    return_attention_mask=True,
    # 返回special_tokens_mask特殊符号标识
    return_special_tokens_mask=True,
    # 返回length标识长度
    return_length=True,
)

for k,v in out.items():
    print(k, ':', v)

#  一次编码多条句子
print(tokenizer.decode(out['input_ids'][0]))
print(tokenizer.decode(out['input_ids'][1]))
  • 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
  • 27

4.预训练语言模型的词表操作:增加新词、增加新符号

# 获取tokenizer中的字典,也可以说是词表
zidian = tokenizer.get_vocab()

print('月光' in zidian)

# 向词表中添加新词,“月光”被编码为一个token
tokenizer.add_tokens(new_tokens=['月光'])

# 向词表中添加新符号
tokenizer.add_special_tokens({'eos_token': '[EOS'})

zidian = tokenizer.get_vocab()
print('月光' in zidian)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

5.dataset的API

from datasets import load_dataset

# 加载csv格式数据
csv_dataset = load_dataset(
    path='csv',
    data_files='./data/ChnSentiCorp.csv',
    split='train'
)
print(csv_dataset[2])


# 加载json格式数据
json_dataset = load_dataset(
    path='json',
    data_files='./data/ChnSentiCorp.json',
    split='train'
)
print(json_dataset[2])


# 从磁盘加载数据
from datasets import load_from_disk
# 参数是文件夹路径
dataset = load_from_disk('./data/ChnSentiCorp/train')
print(dataset)
# datasets的排序
sorted_dataset = dataset.sort('label')
print(sorted_dataset['label'][:10])
print(sorted_dataset['label'][-10:])
# dataset的打乱
shffled_dataset = sorted_dataset.shuffle(seed=42)
print(shffled_dataset['label'][:10])

# dataset的选择
print(dataset.select([0,10,20,30,40,50]))

# dataset的过滤,参数是一个定义的函数
def f(data):
    return data['text'].startswith('选择')
start_with_ar = dataset.filter(f)
print(start_with_ar['text'])


# # dataset的切分训练集和测试集
dataset.train_test_split(test_size=0.1)
# dataset把数据均匀分配到桶中,取第index份
dataset.shard(num_shards=4, index=0)


# dataset重命名列
dataset.rename_column('text','textA')
# 移除列
dataset.remove_columns(['text'])
# 列数据格式转化
dataset.set_format(type='torch', columns=['label'])


# dataset中的map函数
def f(data):
    data['text'] = 'My sentence:' + data['text']
dataset_map = dataset.map(f)

dataset_map['text'][:5]

# 把数据保存到磁盘上
dataset.save('路径')







  • 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
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/码创造者/article/detail/772593
推荐阅读
相关标签
  

闽ICP备14008679号