Sentencepiece构建词典

一、在Ubuntu下安装sentencepiece的C++版本

1、安装环境依赖

sudo apt-get install cmake build-essential pkg-config libgoogle-perftools-dev

2、源文件编译

git clone https://github.com/google/sentencepiece.git 
cd sentencepiece
mkdir build
cd build
cmake ..
make -j $(nproc)
sudo make install
sudo ldconfig -v

这里git下载很慢,可以采用sz和rz工具在windows端下载好文件后上传到Ubuntu

2.1安装sz和rz

一般来说,linux服务器大多是通过ssh客户端来进行远程的登陆和管理的,使用ssh登陆linux主机以后,如何能够快速的和本地机器进行文件的交互呢,也就是上传和下载文件到服务器和本地;
   与ssh有关的两个命令可以提供很方便的操作:
   sz:将选定的文件发送(send)到本地机器
   rz:运行该命令会弹出一个文件选择窗口,从本地选择文件上传到服务器(receive)

apt-get install -y lrzsz

此处我用的是SecureCRT,具体的更改 rz上传/sz下载 的默认的路径的方法:

右键点击当前会话session -> Session Options -> Terminal -> Xmodem/Zmodem ->Directories 

3、Build and install using vcpkg

git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.sh
./vcpkg integrate install
./vcpkg install sentencepiece

如果报错按照相应的提示进行即可

二、使用spm_train对语料库构建词典

spm_train --input='result1.txt' --model_prefix='mymodel' --vocab_size=30000 --pad_id=0 --unk_id=1 --eos_id=-1 --bos_id=-1 --control_symbols=[CLS],[SEP],[MASK] --input_sentence_size=10000000 --character_coverage=1 --model_type=char --vocabulary_output_piece_score=false

input为语料库

model_prefix为保存的模型前缀名

vocab_size为保存的词典的大小

pad_id,unk_id,eos_id,bos_id当等于-1时没有这个特殊标识

vocabulary_output_piece_score为是否保留分词后的分数

character_coverage为模型覆盖的字符数

model_type为模型类型:

unigram:就是一元分词,把句子从头到尾分成一个一个的汉字。

bpe:字节对编码,首先将词分成一个一个的字符,然后在词的范围内统计字符对出现的次数,每次将次数最多的字符对保存起来,直到循环次数结束,具体推演的话可以看论文
char:字符型分词
word:使用这种模式,使用的语料首先要经过预分词

三、代码测试

1、安装sentencepiece模块

pip install sentencepiece

2、代码测试

import sentencepiece as spm
sp=spm.SentencePieceProcessor()
text='建议做次胃镜及肝胆脾胰彩超检查以排除相关疾病,并予中药治疗。'
sp.Load('mymodel.model')
print(sp.EncodeAsPieces(text))

3、结果

['▁', '建', '议', '做', '次', '胃', '镜', '及', '肝', '胆', '脾', '胰', '彩', '超', '检', '查', '以', '排', '除', '相', '关', '疾', '病', ',', '并', '予', '中', '药', '治', '疗', '。']


 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱在桂子山

再不打赏我就失业了

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值