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

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:

  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.2.tar.gz (716.5 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.2-py3-none-any.whl (718.4 kB view details)

Uploaded Python 3

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

Hashes for bp_tokenizer-1.0.2.tar.gz
Algorithm Hash digest
SHA256 ba887fd294e27191fb32222ccbd023bae45738921bfba0e8bd9f11ee9cb49f46
MD5 99eb12c801518d2fa3976db98d5f64fa
BLAKE2b-256 c6f78c2dc7ad50d9431d8dedd220ced8de03db6d0639c37c5477f3151d212b15

See more details on using hashes here.

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

Hashes for bp_tokenizer-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 2adcae309ba1d3fc9cd29d872bd2c72f436e64145ca188f2c16acbeaf389f37e
MD5 89d31d6fd6cf0d39a14cd5d802696611
BLAKE2b-256 a23d2c39fce05c6eedb8c28c9ddd8524f06c8909e668940338dccd4c1eff1ebf

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