Token Classification
Transformers
ONNX
Safetensors
Transformers.js
modernbert
punctuation
punctuation-restoration
truecasing
capitalization
asr
speech-recognition
transcription
mmbert
Instructions to use Horizon-Labs/multilingual-punctuation-truecase-base with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use Horizon-Labs/multilingual-punctuation-truecase-base with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("token-classification", model="Horizon-Labs/multilingual-punctuation-truecase-base")# pip install -U transformers accelerate # Load model directly from transformers import AutoTokenizer, AutoModelForTokenClassification tokenizer = AutoTokenizer.from_pretrained("Horizon-Labs/multilingual-punctuation-truecase-base") model = AutoModelForTokenClassification.from_pretrained("Horizon-Labs/multilingual-punctuation-truecase-base", device_map="auto") - Transformers.js
How to use Horizon-Labs/multilingual-punctuation-truecase-base with Transformers.js:
// npm i @huggingface/transformers import { pipeline } from '@huggingface/transformers'; // Allocate pipeline const pipe = await pipeline('token-classification', 'Horizon-Labs/multilingual-punctuation-truecase-base'); - Notebooks
- Google Colab
- Kaggle
File size: 1,602 Bytes
b11a6e7 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | """Punctuation + truecasing: joint per-word labels = the punctuation mark that follows the word (punct/common.py: 0 . , ? - :) x the
word's casing. Casing classes from the original text: 'lower' (no upper-case first letter), 'Cap' (first cased letter upper, not all
upper), 'UPPER' (all cased letters upper, >= 2 of them). Words without cased letters (CJK, Arabic, ...) are 'lower'.
Inputs are always lowercased (ASR-style); the model restores marks and casing together."""
import os, sys
sys.path.insert(0, os.path.join(os.path.dirname(os.path.abspath(__file__)), "..", "punct"))
from common import LABELS as PUNCT, NOSPACE, lower_keep_len # noqa: F401
CASES = ["lower", "Cap", "UPPER"]
LABELS = [f"{p}|{c}" for p in PUNCT for c in CASES]
L2I = {l: i for i, l in enumerate(LABELS)}
def case_of(word):
cased = [ch for ch in word if ch.lower() != ch.upper()]
if not cased:
return 0
if len(cased) >= 2 and all(ch.isupper() for ch in cased):
return 2
return 1 if cased[0].isupper() else 0
def unit_cases(text, ends, nospace):
"""case class per unit of a cased text; units end at `ends` (exclusive offsets)."""
out, prev = [], 0
for e in ends:
if nospace:
s = e - 1
else:
s = text.rfind(" ", 0, e) + 1
out.append(case_of(text[max(s, prev):e])); prev = e
return out
def apply_case(word, c):
if c == 2:
return word.upper()
if c == 1:
for i, ch in enumerate(word):
if ch.lower() != ch.upper():
return word[:i] + ch.upper() + word[i + 1:]
return word
|