any2human / app /pipeline /normalize.py
idnameraj's picture
Upload 31 files
155974e verified
Raw
History Blame Contribute Delete
890 Bytes
"""Normalize and segment text without neural generation."""
from __future__ import annotations
import re
def normalize_whitespace(text: str) -> str:
text = text.replace("\r\n", "\n").replace("\r", "\n")
text = re.sub(r"[ \t]+", " ", text)
text = re.sub(r"\n{3,}", "\n\n", text)
return text.strip()
def split_paragraphs(text: str) -> list[str]:
parts = [p.strip() for p in re.split(r"\n\s*\n", text) if p.strip()]
return parts or ([text.strip()] if text.strip() else [])
def split_sentences_regex(text: str) -> list[str]:
"""Fallback sentence splitter when spaCy is unavailable."""
text = text.strip()
if not text:
return []
parts = re.split(r"(?<=[.!?])\s+", text)
return [p.strip() for p in parts if p.strip()]
def word_count(text: str) -> int:
return len(text.split()) if text.strip() else 0