#algorithm #text

tokenizations

Tokenizations alignments library

11 releases

0.4.2 Apr 1, 2021
0.4.1 Apr 1, 2021
0.4.0 Aug 4, 2020
0.3.0 May 28, 2020
0.1.4 Jan 8, 2020

#165 in Biology

Download history 263/week @ 2025-06-07 335/week @ 2025-06-14 405/week @ 2025-06-21 299/week @ 2025-06-28 491/week @ 2025-07-05 622/week @ 2025-07-12 435/week @ 2025-07-19 383/week @ 2025-07-26 404/week @ 2025-08-02 254/week @ 2025-08-09 346/week @ 2025-08-16 268/week @ 2025-08-23 272/week @ 2025-08-30 319/week @ 2025-09-06 355/week @ 2025-09-13 349/week @ 2025-09-20

1,317 downloads per month
Used in 3 crates (2 directly)

MIT license

27KB
270 lines

Robust and Fast tokenizations alignment library for Rust and Python

creates.io pypi Actions Status

sample

Demo: demo
Rust document: docs.rs
Blog post: How to calculate the alignment between BERT and spaCy tokens effectively and robustly

Usage (Python)

  • Installation
$ pip install -U pip # update pip
$ pip install pytokenizations
  • Install from source

This library uses maturin to build the wheel.

$ git clone https://github.com/tamuhey/tokenizations
$ cd tokenizations/python
$ pip install maturin
$ maturin build

Now the wheel is created in python/target/wheels directory, and you can install it with pip install *whl.

get_alignments

def get_alignments(a: Sequence[str], b: Sequence[str]) -> Tuple[List[List[int]], List[List[int]]]: ...

Returns alignment mappings for two different tokenizations:

>>> tokens_a = ["å", "BC"]
>>> tokens_b = ["abc"] # the accent is dropped (å -> a) and the letters are lowercased(BC -> bc)
>>> a2b, b2a = tokenizations.get_alignments(tokens_a, tokens_b)
>>> print(a2b)
[[0], [0]]
>>> print(b2a)
[[0, 1]]

a2b[i] is a list representing the alignment from tokens_a to tokens_b.

Usage (Rust)

See here: docs.rs

Dependencies

~1MB
~26K SLoC