A high-performance Python tokenizer using Byte-Pair Encoding (BPE) with 100k vocabulary, supporting text encoding, decoding, and normalization for NLP applications.
Project description
BP Tokenizer
bp_tokenizer is a high-performance Python tokenizer based on Byte-Pair Encoding (BPE). It supports a 100k vocabulary, efficient text encoding/decoding, batch processing, and basic text normalization. It is designed for NLP applications, preprocessing pipelines, or any project that requires custom tokenization.
Features
-
Efficient Encoding: Encode text into token IDs using BPE.
-
Decoding: Decode token IDs back to human-readable text.
-
Batch Processing: Support for encoding multiple texts at once.
-
Special Tokens: Built-in support for
<UNK>,<BOS>, and<EOS>. -
Large Vocabulary: Supports a vocabulary size of up to 100,000 tokens.
-
Normalization: Basic text normalization (lowercasing, punctuation removal).
-
Sentence Splitting: Simple utilities to split text into sentences.
Installation
You can install directly from PyPI :
pip install bp-tokenizer
Quick Start
Import and Initialize
from bp_tokenizer import Tokenizer
# Initialize tokenizer
tokenizer = Tokenizer()
Encode a Single Text
text = "Hello world!"
encoded = tokenizer.encode(text)
print("Encoded:", encoded)
Output:
Encoded: [72, 9257, 1295, 33]
Decode Token IDs
decoded = tokenizer.decode(encoded)
print("Decoded:", decoded)
Output:
Decoded: Hello world!
Encode a Batch of Texts
texts = ["Hello world!", "Byte-Pair Encoding example."]
encoded_batch = tokenizer.encode_batch(texts)
print("Batch Encoded:", encoded_batch)
Output:
Batch Encoded: [[72, 9257, 1295, 33], [66, 121, 507, 45, 80, 937, 18258, 16022, 2461, 46]]
Additional Utilities
# Get number of tokens in a text
print(tokenizer.token_count("Hello world!"))
# Normalize text
print(tokenizer.normalize_text("Hello, World!!!", lower=True, remove_punct=True))
# Split text into words/punctuation
print(tokenizer.tokenize("Hello, world! How are you?"))
Special Tokens
These tokens are used internally to handle unknown tokens or sequence markers.
| Token | ID | Description |
|---|---|---|
<BOS> |
256 | Beginning of Sequence |
<EOS> |
257 | End of Sequence |
<UNK> |
258 | Unknown Token |
Contributing
If you want to improve bp_tokenizer:
-
Fork the repository.
-
Make your changes.
-
Submit a pull request with a clear description.
License
This project is licensed under the MIT License – see the LICENSE file for details.
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 Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file bp_tokenizer-1.0.2.tar.gz.
File metadata
- Download URL: bp_tokenizer-1.0.2.tar.gz
- Upload date:
- Size: 716.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ba887fd294e27191fb32222ccbd023bae45738921bfba0e8bd9f11ee9cb49f46
|
|
| MD5 |
99eb12c801518d2fa3976db98d5f64fa
|
|
| BLAKE2b-256 |
c6f78c2dc7ad50d9431d8dedd220ced8de03db6d0639c37c5477f3151d212b15
|
File details
Details for the file bp_tokenizer-1.0.2-py3-none-any.whl.
File metadata
- Download URL: bp_tokenizer-1.0.2-py3-none-any.whl
- Upload date:
- Size: 718.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2adcae309ba1d3fc9cd29d872bd2c72f436e64145ca188f2c16acbeaf389f37e
|
|
| MD5 |
89d31d6fd6cf0d39a14cd5d802696611
|
|
| BLAKE2b-256 |
a23d2c39fce05c6eedb8c28c9ddd8524f06c8909e668940338dccd4c1eff1ebf
|