dataknobs-xization
Text normalization and tokenization tools.
Installation
pip install dataknobs-xization
Features
- Markdown Chunking: Parse and chunk markdown documents for RAG applications
- Preserves heading hierarchy and semantic structure
- Supports code blocks, tables, lists, and other markdown constructs
- Streaming support for large documents
- Flexible configuration for chunk size, overlap, and heading inclusion
- Content Transformation: Convert JSON, YAML, and CSV to markdown for RAG ingestion
- Generic conversion that preserves structure through headings
- Custom schemas for specialized formatting
- Configurable formatting options
- Text Normalization: Standardize text for consistent processing
- Masking Tokenizer: Advanced tokenization with masking capabilities
- Annotations: Text annotation system
- Authorities: Authority management for text processing
- Lexicon: Lexicon-based text analysis
Usage
Markdown Chunking
from dataknobs_xization import parse_markdown, chunk_markdown_tree
# Parse markdown into tree structure
markdown_text = """
# User Guide
## Installation
Install the package using pip.
"""
tree = parse_markdown(markdown_text)
# Generate chunks for RAG
chunks = chunk_markdown_tree(tree, max_chunk_size=500)
for chunk in chunks:
print(f"Headings: {chunk.metadata.get_heading_path()}")
print(f"Text: {chunk.text}\n")
For more details, see the Markdown Chunking documentation.
Content Transformation
Convert structured data (JSON, YAML, CSV) to well-formatted markdown for RAG ingestion:
from dataknobs_xization import ContentTransformer, json_to_markdown
# Quick conversion
data = [
{"name": "Chain of Thought", "description": "Step by step reasoning"},
{"name": "Few-Shot", "description": "Learning from examples"}
]
markdown = json_to_markdown(data, title="Prompt Patterns")
# Or use the transformer class for more control
transformer = ContentTransformer(
base_heading_level=2,
include_field_labels=True,
code_block_fields=["example", "code"],
list_fields=["steps", "items"]
)
# Transform JSON
result = transformer.transform_json(data)
# Transform YAML
result = transformer.transform_yaml("config.yaml")
# Transform CSV
result = transformer.transform_csv("data.csv", title_field="name")
Custom Schemas
Register schemas for specialized formatting of known data structures:
transformer = ContentTransformer()
# Register a schema for prompt patterns
transformer.register_schema("pattern", {
"title_field": "name",
"description_field": "description",
"sections": [
{"field": "use_case", "heading": "When to Use"},
{"field": "example", "heading": "Example", "format": "code", "language": "python"},
{"field": "variations", "heading": "Variations", "format": "list"}
],
"metadata_fields": ["category", "difficulty"]
})
# Use the schema
patterns = [
{
"name": "Chain of Thought",
"description": "Prompting technique for complex reasoning",
"use_case": "Multi-step problems requiring logical reasoning",
"example": "Let's think step by step...",
"category": "reasoning",
"difficulty": "intermediate"
}
]
markdown = transformer.transform_json(patterns, schema="pattern")
Convenience Functions
from dataknobs_xization import json_to_markdown, yaml_to_markdown, csv_to_markdown
# Quick conversions
md = json_to_markdown(data, title="My Data")
md = yaml_to_markdown("config.yaml", title="Config")
md = csv_to_markdown("data.csv", title_field="name")
Text Normalization and Tokenization
from dataknobs_xization import normalize
from dataknobs_xization.masking_tokenizer import TextFeatures
# Text normalization
normalized = normalize.basic_normalization_fn("Hello, World!")
# Character/token features, with camel-case splitting
features = TextFeatures("getUserName")
tokens = tokenizer.tokenize("This is a sample text.")
# Working with annotations
from dataknobs_xization import annotations
doc = annotations.create_document("Sample text", {"metadata": "value"})
Dependencies
This package depends on:
dataknobs-commondataknobs-structuresdataknobs-utils- nltk
License
See LICENSE file in the root repository.
Metadata
Release files for dataknobs-xization 2.2.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| dataknobs_xization-2.2.1.tar.gz | 398.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| dataknobs_xization-2.2.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 505.0 kB
Release files / dataknobs_xization-2.2.1.tar.gz
| Download URL | dataknobs_xization-2.2.1.tar.gz |
|---|---|
| Size | 398.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
59353a758f43e242eef8117d81b542bcad8073d68f6058246f3ff1ee7e5231c5
|
|
BLAKE2b-256 checksum How to use checksums |
f7335d1076486473eb25487640ce773a72dec6056d4ef4ccb3549d5e5466d754
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / dataknobs_xization-2.2.1-py3-none-any.whl
| Download URL | dataknobs_xization-2.2.1-py3-none-any.whl |
|---|---|
| Size | 106.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
07ca36a8e6542a3be18d9c75efc425496510370c5580c0d45451b4fca3d935af
|
|
BLAKE2b-256 checksum How to use checksums |
513ca954a87ce44ba6fc164a46223ee3e57ca93de33a21306fe1bd7f0e8a2d64
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|