/ Модель

Характеристики

Контекст
32 768 токенов
Параметры
257 млн
Лицензия
MIT
Архитектура
cadence_punctuation · dense
Базовая модель
gemma-3-270m
Библиотека
cadence-punctuation
Опубликована
11 ноя 2025

Cadence-Fast

Разметка токеновТекст → label10 профессий

Компактная мультиязычная модель AI4Bharat восстанавливает пунктуацию в английском и индийских языках.

5 559скачиваний за 30 дней6лайковвеса обновлены20 ноя 2025

Бенчмарки

Как модель справилась с задачами пользователей ailist и что о ней публикуют открытые лидерборды

Публичные оценки

Из открытых лидербордов. Сравнивайте результаты одного теста при одинаковых условиях — отсутствие оценки не значит, что модель хуже.

В подключённых источниках результатов для этой модели пока нет.

Что умеет модель

Описание составлено по карточке модели и метаданным Hugging Face

Cadence-Fast — компактная модель AI4Bharat для восстановления пунктуации в тексте на английском и 22 индийских языках. Это дообученная на базе google/gemma-3-270m модель с плотной архитектурой Gemma3ForTokenClassification, предназначенная для токенной классификации и предсказания знаков препинания.

Модель подходит для расстановки пунктуации в неразмеченном тексте и транскриптах речи. Она предсказывает точки, запятые, вопросительные и восклицательные знаки, кавычки, скобки и другие знаки; для длинных текстов пакет cadence-punctuation поддерживает обработку скользящими окнами. По данным карточки, Cadence-Fast достигает более 93,8% качества Cadence при значительно большей скорости. Контекст модели — до 32 768 токенов.

Поддерживаются английский, ассамский, бенгальский, бодо, догри, гуджарати, хинди, каннада, кашмири, конкани, майтхили, малаялам, манипури, маратхи, непали, одиа, пенджаби, санскрит, сантали, синдхи, тамильский, телугу и урду. Для письма мейтей токенизатор работает недостаточно хорошо; карточка предлагает транслитерацию в бенгальское письмо. Для других языков качество не гарантируется. Модель распространяется по лицензии MIT.

Сценарии применения

  • расстановка знаков препинания в транскриптах речи
  • восстановление пунктуации в тексте без разметки
  • пунктуация английских текстов после распознавания речи
  • пунктуация текстов на индийских языках
  • обработка длинных текстов с разбиением на перекрывающиеся окна

Ограничения

Токенизатор недостаточно хорошо поддерживает письмо мейтей; для него рекомендуется транслитерация в бенгальское письмо. Для языков, не перечисленных как официально поддерживаемые, качество может быть ниже.

Для каких профессий подходит10

Разделы каталога профессий, в задачах которых используется эта модель

Все профессии

Также подходит для

Карточка модели

README от автора на Hugging Face, как он его опубликовал

Открыть на Hugging Face

Cadence-Fast

A multilingual punctuation restoration model based on Gemma-3-270M. Cadence-Fast supports English and 22 other Indian langauges.

Cadence-Fast is distilled from ai4bharat/Cadence for punctuation prediction on English and Indic languages text. Cadence-Fast achieves over 93.8% performance of Cadence at a much faster speed.

Model Description

  • Model Type: Token Classification (Punctuation Prediction)
  • Base Model: Gemma-3-270M
  • Languages: English + 22 Indic Languages
  • Task: Automatic punctuation restoration

Installation (Optional)

Python package has features such as sliding-window decoding, (rule-based) capitalisation of English text and some (rule-based) corrections for the errors made by the model.

pip install cadence-punctuation

Quick Start

Using the python package (Recommended)

from Cadence import PunctuationModel

# Load model from local path or downloads at the specified directory
model = PunctuationModel(model="Cadence-Fast","path/to/model")

# Punctuate single text
text = "hello world how are you today"
result = model.punctuate([text])
print(result[0])  # "Hello world, how are you today?"

# Punctuate multiple texts
texts = [
    "hello world how are you",
    "this is another test sentence",
    "यह एक हिंदी वाक्य है"  # Hindi example
]
results = model.punctuate(texts, batch_size=8)
for original, punctuated in zip(texts, results):
    print(f"Original: {original}")
    print(f"Punctuated: {punctuated}")
    print()

Using AutoModel

from transformers import AutoTokenizer, AutoModel
import torch
# Load model and tokenizer
model_name = "ai4bharat/Cadence-Fast"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModel.from_pretrained(model_name, trust_remote_code=True)
id2label = model.config.id2label
text = "यह एक वाक्य है इसका क्या मतलब है"
# text = "this is a test sentence what do you think"
# Tokenize input and prepare for model
inputs = tokenizer(text, return_tensors="pt", padding=True, truncation=True)
input_ids = inputs['input_ids'][0] # Get input_ids for the first (and only) sentence
with torch.no_grad():
    outputs = model(**inputs)
    predictions_for_sentence = torch.argmax(outputs.logits, dim=-1)[0]
result_tokens_and_punctuation = []
all_token_strings = tokenizer.convert_ids_to_tokens(input_ids.tolist()) # Get all token strings
for i, token_id_value in enumerate(input_ids.tolist()):
    # Process only non-padding tokens based on the attention mask
    if inputs['attention_mask'][0][i] == 0:
        continue
    current_token_string = all_token_strings[i]
    is_special_token = token_id_value in tokenizer.all_special_ids
    
    if not is_special_token:
        result_tokens_and_punctuation.append(current_token_string)
    
    predicted_punctuation_id = predictions_for_sentence[i].item()
    punctuation_character = id2label[predicted_punctuation_id]
    if punctuation_character != "O" and not is_special_token:
        result_tokens_and_punctuation.append(punctuation_character)
punctuated_text = tokenizer.convert_tokens_to_string(result_tokens_and_punctuation)
print(f"Original Text: {text}")
print(f"Punctuated Text: {punctuated_text}")

Officially Supported Languages

  • English, Assamese, Bengali, Bodo, Dogri, Gujarati, Hindi, Kannada, Kashmiri, Konkani, Maithili, Malayalam, Manipuri, Marathi, Nepali, Odia, Punjabi, Sanskrit, Santali, Sindhi, Tamil, Telugu, Urdu

Tokenizer doesn't support Manipuri's Meitei script well. The model can punctuate if the text is transliterated to Bengali's script.

One can try using this model for languages not listed above. Performance may vary.

Supported Punctuation

The model can predict the following punctuation marks:

  • Period (.)
  • Comma (,)
  • Question mark (?)
  • Exclamation mark (!)
  • Semicolon (;)
  • Colon (:)
  • Hyphen (-)
  • Quotes (" and ')
  • Ellipse (...)
  • Parentheses ()
  • Hindi Danda (।)
  • Urdu punctuation (۔، ؟)
  • Arabic punctuation (٬ ،)
  • Santali punctuation (᱾ ᱾।)
  • Sanskrit punctuation (॥)
  • And various combinations

Configuration Options for cadence-puncuation

PunctuationModel Parameters

All the parameters are optional to pass.

  • model: Can be choosen between "Cadence" (based on Gemma-3-1B) and "Cadence-Fast" (based on Gemma-3-270M). (default: "Cadence")
  • model_path: Path to a local directory where model weights will be downloaded to and cached, or from which pre-downloaded weights will be loaded. If None, weights downloaded to default HuggingFace cache location.
  • gpu_id: Specific GPU device ID to use (e.g., 0, 1). If None, the model will attempt to auto-detect and use an available GPU. This parameter is ignored if cpu is True. (default: None)
  • cpu: If True, forces the model to run on the CPU, even if a GPU is available. (default: False)
  • max_length: Maximum sequence length the model can process at once. If sliding_window is True, this value is used as the width of each sliding window. If sliding_window is False, texts longer than max_length will be truncated. (default: 300)
  • attn_implementation: The attention implementation to use. (default: "eager")
  • sliding_window: If True, enables sliding window mechanism to process texts longer than max_length. The text is split into overlapping chunks of max_length. If False, texts longer than max_length are truncated. (default: True)
  • verbose: Enable verbose logging. (default: False)
  • d_type: Precision with which weights are loaded. (default: bfloat16)
  • batch_size ((for punctuate() method)): Batch size to use. (default: 8)
# Custom configuration
model = PunctuationModel(
    model="Cadence-Fast"
    model_path="path/to/download/weights",
    gpu_id=0,  # Use specific GPU
    max_length=512,  # length for trunation; also used as window size when sliding_window=True
    attn_implementation="flash_attention_2",
    sliding_window=True,  # Handle long texts
    verbose=False,  # Quiet mode
    d_type="bfloat16"
)
batch_size=32 
# Process long texts with sliding window
long_text = "Your very long text here..." * 100
short_text = "a short text"
result = model.punctuate([long_text, short_text],batch_size=batch_size)

License

MIT License

Как запустить

На своей GPU в ailist. Цена — по текущим предложениям провайдеров

GPU в ailist

Универсальный рантайм · cadence-punctuation · token-classification

Нельзя запустить

Модели нужен код из репозитория; автор пока не в списке доверенных организаций.

Класс архитектуры
Gemma3ForTokenClassification
Ревизия весов
8971c50

0 моделей