AI and models · Edition No. 15 · 9 Sep 2026

segment-any-text/wtpsplit

Splits text into real sentences in 85 languages using small CPU models, including text with no punctuation.

← AI and modelsRead the whole edition →
09

segment-any-text/wtpsplit

💎 hidden gem

1.3k stars · MIT · 2.2.1 on PyPI (2026-04-11) — dated from PyPI per the 'for a Python tool, believe PyPI' rule

Splits text into real sentences in 85 languages using small CPU models, including text with no punctuation.

Repo detailsthe review · specs · pros & cons · install

What it is

wtpsplit is a Python library with small trained models that find sentence boundaries. The current model family is called SaT.

Why it matters

Everything Grasppy does afterwards depends on this first cut. Chonkie (Edition 2 #10) makes chunks from it. BERTopic and turftopic group those chunks. model2vec and vicinity search them. All of them work with whatever the splitter hands over. Real chat is lowercase, runs on, and often has no full stops. A rule-based splitter turns a whole message into one enormous sentence, and the topic map comes out vague for reasons nobody can see. Russian makes it worse, because the simple splitters were tuned on English.

Stars1.3k
LicenceMIT
Latest2.2.1 on PyPI (2026-04-11) — dated from PyPI per the 'for a Python tool, believe PyPI' rule
Good
  • MIT, and the small models run on an ordinary processor. No graphics card needed.
  • It handles text with no punctuation, which is exactly the case that breaks the simple approach.
  • One language-agnostic model covers both your English and your Russian data, so you do not maintain two paths.
Watch for
  • It is a model, so the first run downloads weights and it wants a few hundred MB of memory. Load it once when your service starts, not on every request.
  • It is slower than splitting on full stops. Do it in a background job rather than while a person is waiting. Procrastinate (Edition 5 #10) is the queue for that.
  • The last release on PyPI is 2.2.1, from 11 April 2026. Five months. Fine, but not fast-moving.
Install
source venv/bin/activate
pip install wtpsplit
python -c "from wtpsplit import SaT; s = SaT('sat-3l-sm'); print(s.split('привет как дела все нормально спасибо'))"
Screenshots
segment-any-text/wtpsplit: GitHub preview cardsegment-any-text/wtpsplit: Screenshot 1

Get the next edition in your inbox

A dozen repositories, opened and checked. The licence read, the last release dated, and the ones that did not make it named with the reason. It is the half most lists leave out.

No tracking pixels. One click to leave. The archive stays free either way.

We use your address to send the edition and nothing else. Confirm by email, leave in one click. How we handle it.