Skip to main content

A high-performance Python tokenizer using Byte-Pair Encoding (BPE) with 100k vocabulary, supporting text encoding, decoding, and normalization for NLP applications.

Project description

BPE 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 bpe_tokenizer:

  1. Fork the repository.

  2. Make your changes.

  3. 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bp_tokenizer-1.0.1.tar.gz (716.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

bp_tokenizer-1.0.1-py3-none-any.whl (718.3 kB view details)

Uploaded Python 3

File details

Details for the file bp_tokenizer-1.0.1.tar.gz.

File metadata

  • Download URL: bp_tokenizer-1.0.1.tar.gz
  • Upload date:
  • Size: 716.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.0

File hashes

Hashes for bp_tokenizer-1.0.1.tar.gz
Algorithm Hash digest
SHA256 c09df59642f2f63d5f8d23bf8989b3a95377f91176a7a36b27e3ff59e674b878
MD5 98fc66b178db41cf585e07ef9153fe03
BLAKE2b-256 d4117c6aad3c03b35254f991b78e1e8924a2c79ad642f593734b2658b1e1f252

See more details on using hashes here.

File details

Details for the file bp_tokenizer-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: bp_tokenizer-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 718.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.0

File hashes

Hashes for bp_tokenizer-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 9bc7fe1b2fe79363297e5b2b0ef21f963ca554ec5b1c7b42299f7fbb4163c3fe
MD5 f61a79442bdb0ef9b5b675b2ab560c73
BLAKE2b-256 d061cb4ab739de65e0e780fb68063239668902111a6a1e7666451d758f9fe0de

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page