This release is a pre-release and may not be stable for production use.
Document Chunkers
Document Chunkers is a Python library that splits raw documents into sentences or paragraphs. Use it to prepare text for natural language processing (NLP) tasks. The library reads plain text, Markdown, HTML, PDF, DOC, and DOCX input.
Install
pip install ovos-document-chunkers
Text Segmenters
A text segmenter splits plain text into sentences or paragraphs. This library wraps three segmentation models.
- SaT — Segment Any Text by Markus Frohmann, Igor Sterner, Benjamin Minixhofer, Ivan Vulić, and Markus Schedl. Covers 85 languages.
- WtP — Where's the Point? Self-Supervised Multilingual Punctuation-Agnostic Sentence Segmentation by Benjamin Minixhofer, Jonas Pfeiffer, and Ivan Vulić. Covers 85 languages.
- PySBD — {P}y{SBD}: Pragmatic Sentence Boundary Disambiguation by Nipun Sadvilkar and Mark Neumann. A rule-based, lightweight model that covers 22 languages.
Usage
Example: Using SaT for Sentence Segmentation
from ovos_document_chunkers import SaTSentenceSplitter
config = {"model": "sat-3l-sm", "use_cuda": False}
splitter = SaTSentenceSplitter(config)
text = "This is a sentence. And this is another one."
sentences = splitter.chunk(text)
for sentence in sentences:
print(sentence)
Example: Using WtP for Paragraph Segmentation
from ovos_document_chunkers import WtPParagraphSplitter
config = {"model": "wtp-bert-mini", "use_cuda": False}
splitter = WtPParagraphSplitter(config)
text = "This is a paragraph. It contains multiple sentences.\n\nThis is another paragraph."
paragraphs = splitter.chunk(text)
for paragraph in paragraphs:
print(paragraph)
Example: Using PySBD for Sentence Segmentation
from ovos_document_chunkers import PySBDSentenceSplitter
config = {"lang": "en"}
splitter = PySBDSentenceSplitter(config)
text = "This is a sentence. This is another one!"
sentences = splitter.chunk(text)
for sentence in sentences:
print(sentence)
File Formats
A file splitter reads a document in a given file format, then splits its text into sentences or paragraphs. Each splitter accepts a URL, a local path, or the raw file text.
Supported File Formats
| Type | Description | Class Name | Expected Input | File Extension |
|---|---|---|---|---|
| Markdown | Splits Markdown text into sentences or paragraphs | MarkdownSentenceSplitter | String (url, path or Markdown text) | .md |
| MarkdownParagraphSplitter | String (url, path or Markdown text) | .md | ||
| HTML | Splits HTML text into sentences or paragraphs | HTMLSentenceSplitter | String (url, path or HTML text) | .html |
| HTMLParagraphSplitter | String (url, path or HTML text) | .html | ||
| Splits PDF documents into sentences or paragraphs | PDFSentenceSplitter | String (url or path to PDF file) | ||
| PDFParagraphSplitter | String (url or path to PDF file) | |||
| doc | Splits Microsoft doc documents into sentences or paragraphs | DOCSentenceSplitter | String (url or path to doc file) | .doc |
| DOCParagraphSplitter | String (url or path to doc file) | .doc | ||
| docx | Splits Microsoft docx documents into sentences or paragraphs | DOCxSentenceSplitter | String (url or path to docx file) | .docx |
| DOCxParagraphSplitter | String (url or path to docx file) | .docx |
Usage
Example using MarkdownSentenceSplitter
from ovos_document_chunkers.text.markdown import MarkdownSentenceSplitter
import requests
markdown_text = requests.get("https://github.com/OpenVoiceOS/ovos-core/raw/dev/README.md").text
sentence_splitter = MarkdownSentenceSplitter()
sentences = sentence_splitter.chunk(markdown_text)
print("Sentences:")
for sentence in sentences:
print(sentence)
Example using MarkdownParagraphSplitter
from ovos_document_chunkers.text.markdown import MarkdownParagraphSplitter
import requests
markdown_text = requests.get("https://github.com/OpenVoiceOS/ovos-core/raw/dev/README.md").text
paragraph_splitter = MarkdownParagraphSplitter()
paragraphs = paragraph_splitter.chunk(markdown_text)
print("\nParagraphs:")
for paragraph in paragraphs:
print(paragraph)
Example using HTMLSentenceSplitter
from ovos_document_chunkers import HTMLSentenceSplitter
import requests
html_text = requests.get("https://www.gofundme.com/f/openvoiceos").text
sentence_splitter = HTMLSentenceSplitter()
sentences = sentence_splitter.chunk(html_text)
print("Sentences:")
for sentence in sentences:
print(sentence)
Example using HTMLParagraphSplitter
from ovos_document_chunkers import HTMLParagraphSplitter
import requests
html_text = requests.get("https://www.gofundme.com/f/openvoiceos").text
paragraph_splitter = HTMLParagraphSplitter()
paragraphs = paragraph_splitter.chunk(html_text)
print("\nParagraphs:")
for paragraph in paragraphs:
print(paragraph)
Example using PDFParagraphSplitter
from ovos_document_chunkers import PDFParagraphSplitter
pdf_path = "/path/to/your/pdf/document.pdf"
paragraph_splitter = PDFParagraphSplitter()
paragraphs = paragraph_splitter.chunk(pdf_path)
print("\nParagraphs:")
for paragraph in paragraphs:
print(paragraph)
Related Projects
- OpenVoiceOS/ovos-rag-solver — a retrieval-augmented generation solver that consumes chunked documents.
Credits
This work was sponsored by VisioLab, part of Royal Dutch Visio, is the test, education, and research center in the field of (innovative) assistive technology for blind and visually impaired people and professionals. We explore (new) technological developments such as Voice, VR and AI and make the knowledge and expertise we gain available to everyone.
Release files for ovos-document-chunkers 0.1.2a6
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| ovos_document_chunkers-0.1.2a6.tar.gz | 15.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ovos_document_chunkers-0.1.2a6-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 35.2 kB
Release files / ovos_document_chunkers-0.1.2a6.tar.gz
| Download URL | ovos_document_chunkers-0.1.2a6.tar.gz |
|---|---|
| Size | 15.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4bea83a462c0e6e7d22f89c9fb0b50b8756af55a35635ab50673968c9a5fbc58
|
|
BLAKE2b-256 checksum How to use checksums |
52cb766820b51a61b075ef26b679e1d535c4bde6a4481ce6519b3f9a331bda7f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.25
|
Release files / ovos_document_chunkers-0.1.2a6-py3-none-any.whl
| Download URL | ovos_document_chunkers-0.1.2a6-py3-none-any.whl |
|---|---|
| Size | 19.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e8edc7b773cf4ccbf8155a35719bac45c0e0a90bdee70f7034b2945ca0e5aad0
|
|
BLAKE2b-256 checksum How to use checksums |
72ae24f9c90bd3e1d111d456d2fe0a5a47b93d2302b8f20a39bc52d8e93e2df1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.25
|