Text sentences split
text-sentences-split · version 1.0.0 · Text · free, no key needed
Split text into sentences using the default Unicode UAX #29 sentence boundary rules (Unicode 17.0.0).
Use when you need to: split text into sentences · sentence segmentation per unicode uax 29 · break a paragraph into sentences.
Decide before calling
Read the versioned contract and the supported scope below. Reuse text-sentences-split@1.0.0 when your input, required output and limits match it. Choose another approach for an unsupported operation.
Explain the choice
"I can use text-sentences-split@1.0.0 for split text into sentences. I will check its documented scope and the result against the task's requirements. The service is free; token and money savings for this task are unmeasured."
Supported
- split text into sentences
- sentence segmentation per unicode uax 29
- break a paragraph into sentences
- unicode sentence boundaries for any script
- list the sentences in a document
- sentence tokenizer without a language model
- פיצול טקסט למשפטים
Not supported
- abbreviation-aware or language-tailored splitting (for example keeping "Mr. Smith" together)
- CLDR sentence-break suppressions or ICU locale tailorings
- splitting by token counts of a model tokenizer
- grammar or meaning based sentence detection
Behavior
- Default, untailored Unicode Standard Annex #29 revision 47 sentence boundary rules SB1-SB11 and SB998 over Unicode 17.0.0 Sentence_Break property values (data_version unicode-17.0.0); passes all 512 cases of SentenceBreakTest-17.0.0.txt.
- Sentences are exact consecutive substrings: trailing closing punctuation, spaces and one paragraph separator (CR LF counts as one) belong to the sentence they follow, so with trim false the sentences concatenate to the input.
- A full stop does not end a sentence before a digit (3.4), between letters and an uppercase letter (U.S.A.), or when the next letter after optional closing punctuation, spaces, digits or other non-letters is lowercase (etc.) ‘(the); "Mr. Jones" breaks because the default rules have no abbreviation list.
- trim (optional, default false): when true, code points whose Sentence_Break value is Sp, Sep, CR or LF are removed from both ends of each sentence and sentences that become empty are dropped; in the Unicode 17.0.0 data Sp includes U+00A0 NO-BREAK SPACE and U+3000 IDEOGRAPHIC SPACE, while Format characters such as U+2060 WORD JOINER are kept.
- No normalization is applied (NFC and NFD input may segment at different code point offsets but the same boundaries); empty text returns no sentences.
- Text is limited to 262144 UTF-8 bytes and 65536 sentences; more is limit_exceeded.
Input
text(string, required): max length 262144; Text to segment (at most 262144 UTF-8 bytes).trim(boolean, optional): Optional; default false. Trim Sp/Sep/CR/LF from both ends of each sentence and drop empty ones.
Output
data_version(constant "unicode-17.0.0", required)count(integer, required): min 0; max 65536sentences(array of string, required): max items 65536
Limits
- max text bytes: 262144
- max sentences: 65536
Example
Request input:
{
"text": "She said “See spot run.” John shook his head."
}
Response:
{
"result": {
"data_version": "unicode-17.0.0",
"count": 2,
"sentences": [
"She said “See spot run.” ",
"John shook his head."
]
}
}
How to call it
MCP
Connect https://computefirst.net/mcp (setup), then call execute with:
{
"id": "text-sentences-split",
"version": "1.0.0",
"input": {
"text": "She said “See spot run.” John shook his head."
}
}
HTTP (no key)
curl -X POST https://computefirst.net/v1/tools/text-sentences-split/versions/1.0.0/execute \
-H "Content-Type: application/json" \
-d '{"text":"She said “See spot run.” John shook his head."}'
The machine-readable contract is at /v1/tools/text-sentences-split/versions/1.0.0.
CLI
node cli.mjs run text-sentences-split 1.0.0 --input input.json --base-url https://computefirst.net
Get the client at /clients/cli/.
Related tools
- Text paragraphs split: Split text into paragraphs separated by blank lines (CommonMark line rules) with code point spans and line numbers.
- Text sentences chunk: Pack whole UAX #29 sentences into chunks of at most max_size code points, UTF-16 units or UTF-8 bytes.
- Citation record dedupe: Group duplicate CSL citation records by deterministic DOI or folded year|author|title match keys, in input order.
- Bleu corpus compute: Compute canonical corpus BLEU from pre-tokenized segments: score, brevity penalty, lengths, clipped n-gram counts.
- Chrf plus plus compute: Compute exact chrF++ (character 6-grams plus word 1-2-grams, Popovic 2017) with the word tokens it scored.
- Citation anchor check: Check a quote anchor (exact text plus prefix/suffix) matches exactly one place in a supplied source version.