SentencePiece python wrapper
Project description
# SentencePiece Python Wrapper
Python wrapper for SentencePiece with SWIG. This module wraps sentencepiece::SentencePieceProcessor class with the following modifications:
* Encode and Decode methods are re-defined as EncodeAsIds, EncodeAsPieces, DecodeIds and DecodePieces respectively.
* Support model training with SentencePieceTrainer.Train method.
* SentencePieceText proto is not supported.
* Added __len__ and __getitem__ methods. len(obj) and obj[key] returns vocab size and vocab id respectively.
## Build and Install SentencePiece
For Linux (x64/i686), macOS, and Windows(win32/x64) environment, you can simply use pip command to install SentencePiece python module.
```
% pip install sentencepiece
```
To build and install the Python wrapper from source, please install [SentencePiece C++](https://github.com/google/sentencepiece#c-from-source) and try the following commands:
```
% python setup.py build
% sudo python setup.py install
```
If you don’t have write permission to the global site-packages directory or don’t want to install into it, please try:
```
% python setup.py install --user
```
## Usage
See [this google colab page](https://github.com/google/sentencepiece/blob/master/python/sentencepiece_python_module_example.ipynb) to run sentencepiece interactively.
### Segmentation
```
% python
>>> import sentencepiece as spm
>>> sp = spm.SentencePieceProcessor()
>>> sp.Load("test/test_model.model")
True
>>> sp.EncodeAsPieces("This is a test")
['\xe2\x96\x81This', '\xe2\x96\x81is', '\xe2\x96\x81a', '\xe2\x96\x81', 't', 'est']
>>> sp.EncodeAsIds("This is a test")
[284, 47, 11, 4, 15, 400]
>>> sp.DecodePieces(['\xe2\x96\x81This', '\xe2\x96\x81is', '\xe2\x96\x81a', '\xe2\x96\x81', 't', 'est'])
'This is a test'
>>> sp.NBestEncodeAsPieces("This is a test", 5)
[['\xe2\x96\x81This', '\xe2\x96\x81is', '\xe2\x96\x81a', '\xe2\x96\x81', 't', 'est'], ['\xe2\x96\x81This', '\xe2\x96\x81is', '\xe2\x96\x81a', '\xe2\x96\x81', 'te', 'st'], ['\xe2\x96\x81This', '\xe2\x96\x81is', '\xe2\x96\x81a', '\xe2\x96\x81', 'te', 's', 't'], ['\xe2\x96\x81This', '\xe2\x96\x81is', '\xe2\x96\x81a', '\xe2\x96\x81', 't', 'e', 'st'], ['\xe2\x96\x81This', '\xe2\x96\x81is', '\xe2\x96\x81a', '\xe2\x96\x81', 't', 'es', 't']]
>>> for x in range(10):
... sp.SampleEncodeAsPieces("This is a test", -1, 0.1)
...
['\xe2\x96\x81', 'T', 'h', 'i', 's', '\xe2\x96\x81', 'is', '\xe2\x96\x81a', '\xe2\x96\x81', 't', 'e', 's', 't']
['\xe2\x96\x81T', 'h', 'is', '\xe2\x96\x81is', '\xe2\x96\x81', 'a', '\xe2\x96\x81', 't', 'est']
['\xe2\x96\x81This', '\xe2\x96\x81is', '\xe2\x96\x81', 'a', '\xe2\x96\x81', 't', 'e', 'st']
['\xe2\x96\x81This', '\xe2\x96\x81is', '\xe2\x96\x81a', '\xe2\x96\x81', 't', 'e', 'st']
['\xe2\x96\x81This', '\xe2\x96\x81is', '\xe2\x96\x81a', '\xe2\x96\x81', 't', 'e', 's', 't']
['\xe2\x96\x81T', 'h', 'is', '\xe2\x96\x81', 'i', 's', '\xe2\x96\x81a', '\xe2\x96\x81', 'te', 's', 't']
['\xe2\x96\x81This', '\xe2\x96\x81', 'is', '\xe2\x96\x81a', '\xe2\x96\x81', 'te', 's', 't']
['\xe2\x96\x81This', '\xe2\x96\x81', 'i', 's', '\xe2\x96\x81a', '\xe2\x96\x81', 't', 'e', 'st']
['\xe2\x96\x81This', '\xe2\x96\x81', 'is', '\xe2\x96\x81', 'a', '\xe2\x96\x81', 't', 'e', 'st']
['\xe2\x96\x81This', '\xe2\x96\x81', 'i', 's', '\xe2\x96\x81', 'a', '\xe2\x96\x81', 'te', 's', 't']
>>> sp.DecodeIds([284, 47, 11, 4, 15, 400])
'This is a test'
>>> sp.GetPieceSize()
1000
>>> sp.IdToPiece(2)
'</s>'
>>> sp.PieceToId('</s>')
2
>>> len(sp)
1000
>>> sp['</s>']
2
```
### Model Training
Training is performed by passing parameters of [spm_train](https://github.com/google/sentencepiece#train-sentencepiece-model) to SentencePieceTrainer.Train() function.
```
>>> import sentencepiece as spm
>>> spm.SentencePieceTrainer.Train('--input=test/botchan.txt --model_prefix=m --vocab_size=1000')
unigram_model_trainer.cc(494) LOG(INFO) Starts training with :
input: "test/botchan.txt"
model_prefix: "m"
model_type: UNIGRAM
..snip..
unigram_model_trainer.cc(529) LOG(INFO) EM sub_iter=0 size=1239 obj=10.4055 num_tokens=36256 num_tokens/piece=29.2623
unigram_model_trainer.cc(529) LOG(INFO) EM sub_iter=1 size=1239 obj=10.3187 num_tokens=36256 num_tokens/piece=29.2623
unigram_model_trainer.cc(529) LOG(INFO) EM sub_iter=0 size=1100 obj=10.5285 num_tokens=37633 num_tokens/piece=34.2118
unigram_model_trainer.cc(529) LOG(INFO) EM sub_iter=1 size=1100 obj=10.4973 num_tokens=37630 num_tokens/piece=34.2091
trainer_interface.cc(284) LOG(INFO) Saving model: m.model
trainer_interface.cc(293) LOG(INFO) Saving vocabs: m.vocab
>>>
```
## Python2/3 String/Unicode compatibility
Sentencepiece python wrapper accepts both Unicode string and legacy byte string.
The output string type is determined by the input string type.
The output type of IdToPiece/DecodeIds methods is *str*, but note that it is a legacy byte string in Python2 and Unicode string in Python3 respectively.
* Python2:
```
>>> sp.EncodeAsPieces('吾輩は猫である')
['\xe2\x96\x81', '\xe5\x90\xbe', '\xe8\xbc\xa9', '\xe3\x81\xaf', '\xe7\x8c\xab', '\xe3\x81\xa7\xe3\x81\x82\xe3\x82\x8b']
>>> sp.EncodeAsPieces(u'吾輩は猫である')
[u'\u2581', u'\u543e', u'\u8f29', u'\u306f', u'\u732b', u'\u3067\u3042\u308b']
>>> sp.EncodeAsPieces(u'吾輩は猫である'.encode('utf-8'))
['\xe2\x96\x81', '\xe5\x90\xbe', '\xe8\xbc\xa9', '\xe3\x81\xaf', '\xe7\x8c\xab', '\xe3\x81\xa7\xe3\x81\x82\xe3\x82\x8b']
>>> sp.IdToPiece(10)
'\xe3\x81\xab'
>>> type(sp.IdToPiece(10))
<type 'str'>
```
* Python3:
```
>>> sp.EncodeAsPieces('吾輩は猫である')
['▁', '吾', '輩', 'は', '猫', 'である']
>>> sp.EncodeAsPieces('吾輩は猫である'.encode('utf-8'))
[b'\xe2\x96\x81', b'\xe5\x90\xbe', b'\xe8\xbc\xa9', b'\xe3\x81\xaf', b'\xe7\x8c\xab', b'\xe3\x81\xa7\xe3\x81\x82\xe3\x82\x8b']
>>>
>>> sp.IdToPiece(10)
'に'
>>> type(sp.IdToPiece(10))
<class 'str'>
```
Python wrapper for SentencePiece with SWIG. This module wraps sentencepiece::SentencePieceProcessor class with the following modifications:
* Encode and Decode methods are re-defined as EncodeAsIds, EncodeAsPieces, DecodeIds and DecodePieces respectively.
* Support model training with SentencePieceTrainer.Train method.
* SentencePieceText proto is not supported.
* Added __len__ and __getitem__ methods. len(obj) and obj[key] returns vocab size and vocab id respectively.
## Build and Install SentencePiece
For Linux (x64/i686), macOS, and Windows(win32/x64) environment, you can simply use pip command to install SentencePiece python module.
```
% pip install sentencepiece
```
To build and install the Python wrapper from source, please install [SentencePiece C++](https://github.com/google/sentencepiece#c-from-source) and try the following commands:
```
% python setup.py build
% sudo python setup.py install
```
If you don’t have write permission to the global site-packages directory or don’t want to install into it, please try:
```
% python setup.py install --user
```
## Usage
See [this google colab page](https://github.com/google/sentencepiece/blob/master/python/sentencepiece_python_module_example.ipynb) to run sentencepiece interactively.
### Segmentation
```
% python
>>> import sentencepiece as spm
>>> sp = spm.SentencePieceProcessor()
>>> sp.Load("test/test_model.model")
True
>>> sp.EncodeAsPieces("This is a test")
['\xe2\x96\x81This', '\xe2\x96\x81is', '\xe2\x96\x81a', '\xe2\x96\x81', 't', 'est']
>>> sp.EncodeAsIds("This is a test")
[284, 47, 11, 4, 15, 400]
>>> sp.DecodePieces(['\xe2\x96\x81This', '\xe2\x96\x81is', '\xe2\x96\x81a', '\xe2\x96\x81', 't', 'est'])
'This is a test'
>>> sp.NBestEncodeAsPieces("This is a test", 5)
[['\xe2\x96\x81This', '\xe2\x96\x81is', '\xe2\x96\x81a', '\xe2\x96\x81', 't', 'est'], ['\xe2\x96\x81This', '\xe2\x96\x81is', '\xe2\x96\x81a', '\xe2\x96\x81', 'te', 'st'], ['\xe2\x96\x81This', '\xe2\x96\x81is', '\xe2\x96\x81a', '\xe2\x96\x81', 'te', 's', 't'], ['\xe2\x96\x81This', '\xe2\x96\x81is', '\xe2\x96\x81a', '\xe2\x96\x81', 't', 'e', 'st'], ['\xe2\x96\x81This', '\xe2\x96\x81is', '\xe2\x96\x81a', '\xe2\x96\x81', 't', 'es', 't']]
>>> for x in range(10):
... sp.SampleEncodeAsPieces("This is a test", -1, 0.1)
...
['\xe2\x96\x81', 'T', 'h', 'i', 's', '\xe2\x96\x81', 'is', '\xe2\x96\x81a', '\xe2\x96\x81', 't', 'e', 's', 't']
['\xe2\x96\x81T', 'h', 'is', '\xe2\x96\x81is', '\xe2\x96\x81', 'a', '\xe2\x96\x81', 't', 'est']
['\xe2\x96\x81This', '\xe2\x96\x81is', '\xe2\x96\x81', 'a', '\xe2\x96\x81', 't', 'e', 'st']
['\xe2\x96\x81This', '\xe2\x96\x81is', '\xe2\x96\x81a', '\xe2\x96\x81', 't', 'e', 'st']
['\xe2\x96\x81This', '\xe2\x96\x81is', '\xe2\x96\x81a', '\xe2\x96\x81', 't', 'e', 's', 't']
['\xe2\x96\x81T', 'h', 'is', '\xe2\x96\x81', 'i', 's', '\xe2\x96\x81a', '\xe2\x96\x81', 'te', 's', 't']
['\xe2\x96\x81This', '\xe2\x96\x81', 'is', '\xe2\x96\x81a', '\xe2\x96\x81', 'te', 's', 't']
['\xe2\x96\x81This', '\xe2\x96\x81', 'i', 's', '\xe2\x96\x81a', '\xe2\x96\x81', 't', 'e', 'st']
['\xe2\x96\x81This', '\xe2\x96\x81', 'is', '\xe2\x96\x81', 'a', '\xe2\x96\x81', 't', 'e', 'st']
['\xe2\x96\x81This', '\xe2\x96\x81', 'i', 's', '\xe2\x96\x81', 'a', '\xe2\x96\x81', 'te', 's', 't']
>>> sp.DecodeIds([284, 47, 11, 4, 15, 400])
'This is a test'
>>> sp.GetPieceSize()
1000
>>> sp.IdToPiece(2)
'</s>'
>>> sp.PieceToId('</s>')
2
>>> len(sp)
1000
>>> sp['</s>']
2
```
### Model Training
Training is performed by passing parameters of [spm_train](https://github.com/google/sentencepiece#train-sentencepiece-model) to SentencePieceTrainer.Train() function.
```
>>> import sentencepiece as spm
>>> spm.SentencePieceTrainer.Train('--input=test/botchan.txt --model_prefix=m --vocab_size=1000')
unigram_model_trainer.cc(494) LOG(INFO) Starts training with :
input: "test/botchan.txt"
model_prefix: "m"
model_type: UNIGRAM
..snip..
unigram_model_trainer.cc(529) LOG(INFO) EM sub_iter=0 size=1239 obj=10.4055 num_tokens=36256 num_tokens/piece=29.2623
unigram_model_trainer.cc(529) LOG(INFO) EM sub_iter=1 size=1239 obj=10.3187 num_tokens=36256 num_tokens/piece=29.2623
unigram_model_trainer.cc(529) LOG(INFO) EM sub_iter=0 size=1100 obj=10.5285 num_tokens=37633 num_tokens/piece=34.2118
unigram_model_trainer.cc(529) LOG(INFO) EM sub_iter=1 size=1100 obj=10.4973 num_tokens=37630 num_tokens/piece=34.2091
trainer_interface.cc(284) LOG(INFO) Saving model: m.model
trainer_interface.cc(293) LOG(INFO) Saving vocabs: m.vocab
>>>
```
## Python2/3 String/Unicode compatibility
Sentencepiece python wrapper accepts both Unicode string and legacy byte string.
The output string type is determined by the input string type.
The output type of IdToPiece/DecodeIds methods is *str*, but note that it is a legacy byte string in Python2 and Unicode string in Python3 respectively.
* Python2:
```
>>> sp.EncodeAsPieces('吾輩は猫である')
['\xe2\x96\x81', '\xe5\x90\xbe', '\xe8\xbc\xa9', '\xe3\x81\xaf', '\xe7\x8c\xab', '\xe3\x81\xa7\xe3\x81\x82\xe3\x82\x8b']
>>> sp.EncodeAsPieces(u'吾輩は猫である')
[u'\u2581', u'\u543e', u'\u8f29', u'\u306f', u'\u732b', u'\u3067\u3042\u308b']
>>> sp.EncodeAsPieces(u'吾輩は猫である'.encode('utf-8'))
['\xe2\x96\x81', '\xe5\x90\xbe', '\xe8\xbc\xa9', '\xe3\x81\xaf', '\xe7\x8c\xab', '\xe3\x81\xa7\xe3\x81\x82\xe3\x82\x8b']
>>> sp.IdToPiece(10)
'\xe3\x81\xab'
>>> type(sp.IdToPiece(10))
<type 'str'>
```
* Python3:
```
>>> sp.EncodeAsPieces('吾輩は猫である')
['▁', '吾', '輩', 'は', '猫', 'である']
>>> sp.EncodeAsPieces('吾輩は猫である'.encode('utf-8'))
[b'\xe2\x96\x81', b'\xe5\x90\xbe', b'\xe8\xbc\xa9', b'\xe3\x81\xaf', b'\xe7\x8c\xab', b'\xe3\x81\xa7\xe3\x81\x82\xe3\x82\x8b']
>>>
>>> sp.IdToPiece(10)
'に'
>>> type(sp.IdToPiece(10))
<class 'str'>
```
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
No source distribution files available for this release.See tutorial on generating distribution archives.
Built Distributions
Close
Hashes for sentencepiece-0.1.82-cp37-cp37m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 25ca69bd1b3a0fcbff76a9fb4b8e6bb866857823376fb838eb1bcafa717edf9e |
|
MD5 | 60911c7833b4a225a680b33de9896f81 |
|
BLAKE2b-256 | 242a4cfebad1dddd713db2e80edeb42a3abe67a26ed1fe079e97b21801200f5a |
Close
Hashes for sentencepiece-0.1.82-cp37-cp37m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 41cf40d88ebee9f16a0553c4536359c2a07f4dbe8acf6bc6f1376c5d44697e1b |
|
MD5 | cd3ed197a71c5a93c1e24f89bc3a66f8 |
|
BLAKE2b-256 | 41714a61d310c47b9bad74be71f3593c74863799abed93f409a655b8c5ece823 |
Close
Hashes for sentencepiece-0.1.82-cp37-cp37m-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3fc02ba62f2d5c624f3f107cc256c1c5f877fb7fa80754e2e7cd7f0aa5e0c86f |
|
MD5 | 1a669982e69eb39d2dcbb1676af6df1c |
|
BLAKE2b-256 | ab047a5015e3087c80037776b75e1a85517dc07f7203f234432a79c132a67dc3 |
Close
Hashes for sentencepiece-0.1.82-cp37-cp37m-manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | baebf6a25bf3a915df9566d65dacc916dbc2b6868381d910c5c5de6ffff2edcd |
|
MD5 | d69831d084260898e6b3afe2bc454733 |
|
BLAKE2b-256 | bf810639f1223b16d74e1481218c2d1d3d676ac3999d6c7a6b3dc750829dff27 |
Close
Hashes for sentencepiece-0.1.82-cp37-cp37m-macosx_10_6_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | cc857d47fb57abdf2d9d6997145a9f151833dfa1d3cda4f10504590521db25e9 |
|
MD5 | 35763f8c8cb8759ca853d6b627f71698 |
|
BLAKE2b-256 | 998cca2c3ab61848526e85146aef40bfb7b399c7e70b1686a43b82d44cf1690f |
Close
Hashes for sentencepiece-0.1.82-cp36-cp36m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b1064138b5290d8204c63baf0d369f8461ae5a4a2a819fda480baa544a0dc42c |
|
MD5 | e8e72d71df0d06e2aa38bd4238e04f8f |
|
BLAKE2b-256 | 6a5e791af07b03f5131785a1dedcf69d76c1cd73208235b639fc4b1eb2cae653 |
Close
Hashes for sentencepiece-0.1.82-cp36-cp36m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4160377f30910cd38c2ccbb159e198c494968b4a29cc49f304b5b823f203a674 |
|
MD5 | 920e1e6b697578079ab1da96bb6a0ca6 |
|
BLAKE2b-256 | 9906ac7ef89e6198cc478275b51938e110c324270555d3c7c87d3a4201062c37 |
Close
Hashes for sentencepiece-0.1.82-cp36-cp36m-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d05c026df496d58a0539dbe4e091cab9040729730d97b5469a66d2de195ef04e |
|
MD5 | bd998b1c6928a151633cb478df5d0c17 |
|
BLAKE2b-256 | 00957f357995d5eb1131aa2092096dca14a6fc1b1d2860bd99c22a612e1d1019 |
Close
Hashes for sentencepiece-0.1.82-cp36-cp36m-manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 88a836341c1f9ff38e3303cbb4bb47bb46e76ac6e1ae5481b20a6914580d3461 |
|
MD5 | 931d6b9003b67ff9d01a05bade01689b |
|
BLAKE2b-256 | 080d636a5d6e54c6262a88a141febd41e93c46cfb5537f3d68af0dc1d7542447 |
Close
Hashes for sentencepiece-0.1.82-cp36-cp36m-macosx_10_6_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 52d05025a9b50d68edaea1de4dd71e57f86a301510103d5348d5f57115896d88 |
|
MD5 | be72089440e3560d0eddb8205d9b320f |
|
BLAKE2b-256 | df3c31fc5e89e3597c3275657860d4bb2f72af3185edbbd298ae6416916ab4bc |
Close
Hashes for sentencepiece-0.1.82-cp35-cp35m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2bf0122e221b657299390c163ab0611f083860420634ab8719b8ae52de469e9b |
|
MD5 | 5d4093a6d88f54f510095a0a3a572240 |
|
BLAKE2b-256 | b2a96b028e825db5e0a064441f1e78cb4eab906b3b7a3a7576b3bdeb63b132bf |
Close
Hashes for sentencepiece-0.1.82-cp35-cp35m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6eaa0141a239f661998739586733e710c9b3fb3c90363a97936aa42354f1ecfe |
|
MD5 | 4389544a742cadbc1bed0ccbad683466 |
|
BLAKE2b-256 | ce4e405d97ed3403beaf152cc61c18dd073255a4acc5cae01d1c17317f70100f |
Close
Hashes for sentencepiece-0.1.82-cp35-cp35m-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0a0cdd8bb774fe300b68326946c98b3f99a38149c880dd50cd8eecb44e1844ca |
|
MD5 | 985501984c227d965074554a80b389d6 |
|
BLAKE2b-256 | c31244b3f1411a6a71890f8ec72034a248c8f629fdf62bd23d0050d9d4f8be5b |
Close
Hashes for sentencepiece-0.1.82-cp35-cp35m-manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 86dfb31dc186680033381a40eaab882ca83fe881d8f5c31bcd6096bc1fe8b627 |
|
MD5 | f6a4c3a167ec0d1189bf609db6419482 |
|
BLAKE2b-256 | 92aae0695ad01d8d631918ad91593e77794657d05dba7605e8c3a8c29ced9cdf |
Close
Hashes for sentencepiece-0.1.82-cp35-cp35m-macosx_10_6_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3017a538d973bd6cd0e0ec6dd293308fdef2e9a69a1be23900ffb1388dd95d60 |
|
MD5 | 17281ef5abb5145f65216dc6c59d7b03 |
|
BLAKE2b-256 | 62a20bd567dab0005390e3aa87d12a1a99282ad0f0e363c62f3de3123ff8bfed |
Close
Hashes for sentencepiece-0.1.82-cp34-cp34m-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1ae755e135b2759bc7c9c3b699e0fb9f094ce89dfa3d79e52e9bdcdc0775eac4 |
|
MD5 | 7f725251d2fb0bc54af1b671dc83341f |
|
BLAKE2b-256 | 151cf123a8051218fb628d76f7f9a853e6d2aa9b13b109a376500243ab90fa9f |
Close
Hashes for sentencepiece-0.1.82-cp34-cp34m-manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e814f01720eafa37853f1a46101a050d25d0d8766a210fdb01687a45467768c4 |
|
MD5 | 0c8070f59b3dc1f53d1e2fe1ba0d6d94 |
|
BLAKE2b-256 | 7ac3968269735e5f7785ad715d1a394638401cebf5d0030dc13840a9cd5efda8 |
Close
Hashes for sentencepiece-0.1.82-cp34-cp34m-macosx_10_6_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ae65af4e3b465c90b53c5554a080d18bf7827d7be151c3358e5612aa73119d71 |
|
MD5 | 58b27dffe9abf03acfa2650cdde76f86 |
|
BLAKE2b-256 | 2b56e735c70c8f7d123a40eea867c84b055c93d66cd56fe23748ed07ad333611 |
Close
Hashes for sentencepiece-0.1.82-cp27-cp27mu-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 71c9457b198ff0465e66ae97412db9e8b44085c143f5b1c11027dc2f49699c3b |
|
MD5 | 863301583b76e96656749e8e636598d0 |
|
BLAKE2b-256 | f4194d0398fc2abae24384f7f8a2d87f63d192f99277cabbbd2459acd3ded4d3 |
Close
Hashes for sentencepiece-0.1.82-cp27-cp27mu-manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 85ba19fd54a926e947f2e5da8ecc0a1a2f15df120e3364226f332107b3b152d8 |
|
MD5 | fa2551a3f0ef6b2e3b03e4f31839cf12 |
|
BLAKE2b-256 | d4bff17e77bb589ebc3b461cff740591cc3ee3aad8753e3d57d73ff78f4e4b1c |
Close
Hashes for sentencepiece-0.1.82-cp27-cp27m-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9c8bcd9a0c0446de466703a457102e9c27f40345016062651e19b66359b7eb44 |
|
MD5 | 2feda7bda7d1dec6ed7d3e640e63835f |
|
BLAKE2b-256 | a29f279ea03c30c630ef6ac528a3b1f788679e5077364b0f8801b79684383ecf |
Close
Hashes for sentencepiece-0.1.82-cp27-cp27m-manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 87aa4aa132b1ad255a6d7bdfdc0ab85d76e3baa3aa42aaedc581ab1fbaf68913 |
|
MD5 | 8941bea9ac9a764371948904cffeb7fc |
|
BLAKE2b-256 | 7d07c8773b31b38b926a22229655f2d074a2c50d67a314d25b41651791ac9a09 |
Close
Hashes for sentencepiece-0.1.82-cp27-cp27m-macosx_10_6_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 48ee47629f3560b5c75836f59a95fec328d3272baa6571cefd545faca484bdd7 |
|
MD5 | 854293dc8d8157ffe732868046f69adf |
|
BLAKE2b-256 | ce56a2eeb4326050f2f554d0f952e5eff7aa515709040fc08213f80783ff22f8 |