sentencePiece入门小结
生活随笔
收集整理的这篇文章主要介绍了
sentencePiece入门小结
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
环境搭建
1.安装C++源码版
step1 安装环境依赖
ubuntu系统:
centos系统:
sudo yum install cmake pkg-config gperfools-devel注:如果之前安装过cmake,但是3.1以下的,会编译不成功,因此需要安装更高版本的3.1以上版本的,具体更新办法戳这里。
step2 下载项目并进行编译
% git clone https://github.com/google/sentencepiece % cd /path/to/sentencepiece % mkdir build % cd build % cmake .. % make -j $(nproc) % sudo make install % sudo ldconfig -v安装过程中可能遇到的错误
运行spm_train报错:
解决方案:
echo "/usr/local/lib" >> /etc/ld.so.confldconfig2.安装python调用接口
很简单,一句话就可以了,也支持训练和分词,但是在细节上还是没有源码版齐全,训练速度稍微慢点,因此还是建议装一个c++版,再装一个python包进行调用。
pip install sentencepiecesentencePiece简介
可以看做是一个分词算法,而且用在做特定领域的新词发现上还是蛮不错的,包含4种模型训练方式:
- unigram,就是一元分词,把句子从头到尾分成一个一个的汉字
- bpe,字节对编码,首先将词分成一个一个的字符,然后在词的范围内统计字符对出现的次数,每次将次数最多的字符对保存起来,直到循环次数结束,具体推演的话可以看论文
- char,字符型分词
- word,使用这种模式,使用的语料首先要经过预分词
模型训练参数
重要参数:
- input 每行一句的训练文本的路径
- model_prefix 输出模型的路径
- vocab_size 训练出的词库大小,不指定的话就是8000
- character_coverage 模型中覆盖的字符数,默认是0.995,对于字符集丰富的中文最好是1
- model_type 训练使用的模型,四种可选,不指定的话就使用unigram模型
其它比较有用的参数:
- max_sentence_length 控制模型输入句子的长度,默认是4192,超过这个长度的句子会被过滤掉
- max_sentencepiece_length 最大的句子块长度,默认是16
- seed_sentencepiece_size 种子训练句子量,默认是100w条
- num_threads 线程数,默认是开16个
- use_all_vocab 使用所有的tokens作为词库,不过只对word/char 模型管用
- input_sentence_size 训练器最大加载数量,默认为0,作者说为了避免内存溢出,只会选择100万句子进行训练,对应的就是seed_sentencepiece_size吧
训练模型时需要注意的点
1.语料太少,报错
RuntimeError: Internal: C:\projects\sentencepiece\src\trainer_interface.cc(468) [(trainer_spec_.vocab_size()) == (model_proto->pieces_size())]这是因为保留的词小于4000,就会报这个错,sentencepiece最好拿大语料去训练
解决方法:
2.训练大语料值得参考的参数设置
spm_train --input=my_input --model_prefix=en_clean_unigram --vocab_size=32000 --character_coverage=1.0 --model_type=unigram --num_threads=40 --input_sentence_size=5000000 --shuffle_input_sentence=truepython接口用法
之前在github项目上有python的具体用法,但是这几天不见了,先分享调用模型分词的代码,希望之后作者能够补上吧。
import sentencepiece as spm sp = spm.SentencePieceProcessor() sp.Load("test/test_model.model") #加载训练好的模型test_text = "这是一个测试"sp.EncodeAsPieces(test_text) #切词参考资料
- https://github.com/google/sentencepiece
- http://114.115.240.75/?p=729
- https://github.com/google/sentencepiece/issues/308
- https://github.com/google/sentencepiece/issues/226
总结
以上是生活随笔为你收集整理的sentencePiece入门小结的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: android 转音频格式,androi
- 下一篇: 宇视摄像机媒体流达到上限