赞
踩
# 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 = [
'选择珠江花园的原因就是方便。',
'笔记本的键盘确实爽。',
'房间太小。其它都一般。',
]
# 编码两个句子 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))
# 批量编码句子 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]))
# 获取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)
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('路径')
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。