mt5模型文件地址
mt5模型由于vocab词汇表中的词汇过多,采用从spiece.model之中读取的方式,读取过程如下
import sentencepiece as spm
spm_path = '/home/xiaoguzai/模型/mt5/spiece.model'
# 加载训练好的模型,切分文本
sp = spm.SentencePieceProcessor(model_file=spm_path)
# 编码 text -> id
result = sp.encode(['This is a test', 'Hello world'], out_type=int)
print(result)
result = sp.encode(['This is a test', 'Hello world'], out_type=str)
print(result)
# 解码 id -> text
result = sp.decode([285, 46, 10, 170, 382])
print(result)
result = sp.decode(['▁This', '▁is', '▁a', '▁t', 'est'])
print(result)
# 采样
for _ in range(10):
result = sp.encode('This is a test', out_type=str, enable_sampling=True, alpha=0.1, nbest_size=-1)
print(result)
# 其它常用方法
sp.get_piece_size()
sp.id_to_piece(2)
sp.id_to_piece([2, 3, 4])
sp.piece_to_id('<s>')
sp.piece_to_id(['</s>', '\r', '▁'])
其中sp.get_piece_size() = 250100,可以看出来词汇表的总词汇量为250100个,词汇量巨大,所以这里选用spiece.model模型的方式进行打包
使用spm进行切词操作
print(sp.EncodeAsPieces("食材上不会有这样的纠结"))
切分的结果
['▁', '食材', '上', '不会', '有', '这样的', '纠', '结']