/ Модель

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

Лицензия
MIT
Базовая модель
punctuate-all
Библиотека
loom-py-rt
Опубликована
11 сен 2026

punctuate-all-loom

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

Экспорт XLM-RoBERTa-base в GGUF для восстановления базовой пунктуации в текстах на 12 европейских языках.

46скачиваний за 30 дней0лайковвеса обновлены11 сен 2026

Бенчмарки

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

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

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

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

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

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

loom-ai-org выпустила экспорт модели kredor/punctuate-all в формате GGUF для запуска через loom.cpp и библиотеку loom-py-rt. Это XLM-RoBERTa-base, дообученная на Europarl для восстановления знаков препинания: модель присваивает класс каждому токену, указывая знак после него. Поддерживаются английский, немецкий, французский, испанский, болгарский, итальянский, польский, нидерландский, чешский, португальский, словацкий и словенский языки.

Модель рассчитана на восстановление точки, запятой, вопросительного знака, дефиса, двоеточия или отсутствия знака в тексте с заранее удалённой пунктуацией. Она принимает последовательности по одной, без пакетирования; длина ограничена 512 токенами. Метрики исходной карточки указывают на слабое качество для дефиса и двоеточия, а обучение на формальных парламентских текстах ограничивает перенос на чат, код и разговорную речь. Выходные метки относятся к частям токенизатора, поэтому знак следует брать с последней части слова. Лицензия — MIT.

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

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

Ограничения

Модель обучена на формальной парламентской речи и хуже подходит для чатов, кода и разговорных текстов; качество классов дефиса и двоеточия заметно ниже. На вход следует подавать текст с удалённой пунктуацией; последовательности ограничены 512 токенами, а метки соответствуют частям токенизатора, а не словам.

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

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

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

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

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

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

Открыть на Hugging Face

Punctuate-All (12 languages)

kredor's XLM-RoBERTa-base fine-tuned on Europarl for punctuation restoration, exported for loom.cpp. Family 12: text in, one class per token out -- here the class is the mark that follows the token. Twelve languages against FullStop's four, and half the size, because the encoder is XLM-R base rather than large.

This is a loom.cpp export: a single self-describing GGUF that carries its own graph topologies, tokenizer (if any) and driver script, produced by loom-exporter.

Original model

Exported from kredor/punctuate-all. Weights are unmodified; this repo packages the same parameters into loom.cpp's GGUF format.

License

mit, inherited from the base model above.

Language(s)

en, de, fr, es, bg, it, pl, nl, cs, pt, sk, sl

Usage

Run it with loom-py -- loom-py-rt on PyPI:

pip install -U "loom-py-rt[hub]"
import loom

model = loom.Model.from_pretrained("loom-ai-org/punctuate-all-loom")

result = model.text2class.infer("hello my name is wolfgang and i live in berlin do you know it")
print(result.text)
# hell/, o/, my/0 name/0 is/0 ... berlin/. do/0 you/0 know/0 it/?

# Every class this checkpoint can choose between, in the order its ids run. "0" is "no mark here",
# which is most tokens in most sentences:
print(result.labels)
# ['0', '.', ',', '?', '-', ':']

# Restoring the text is the point of this model, and the rule is one line long: a mark belongs to the
# WORD, so it is the label on the word's LAST piece. A piece starts a new word when decoding it
# together with the piece before puts a space between them -- which is what the vocabulary knows and
# the piece text alone does not.
restored = ""
for i, token in enumerate(result):
    following = result[i + 1] if i + 1 < len(result) else None
    restored += token.piece
    if following is None or " " in model.detokenize([token.token, following.token]):
        if token.label != "0":
            restored += token.label
        restored += " "
print(restored.strip())
# hello, my name is wolfgang and i live in berlin. do you know it?

# The framing tokens the encode adds (<s> and </s>) are dropped for you, on the ids the file declares
# rather than on their spelling. Ask for the raw alignment if you want them:
raw = model.text2class.infer("hello my name is wolfgang and i live in berlin do you know it",
                             strip_special=False)
print(len(raw), "rows including <s> and </s>, against", len(result), "without")

The layer underneath

The call above is the high-level door: one per task, named for the modality pair it maps between, with the windowing, sampling and assembly this model needs already applied. Under it, model.infer(...) passes your arguments straight to the driver this GGUF embeds -- which is where you go for a knob the door does not name.

model.driver_source prints that driver, including a header comment documenting every argument it accepts for this model, and is the authority on it. See loom-py for the API and loom.cpp for what the engine does between the two.

Known limitations

Trained on Europarl, which is parliamentary proceedings: formal, complete sentences in a register that is not chat, not code and not casual speech. It restores six classes and nothing else (., ,, ?, -, :, and 0 for no mark), so it will not give you semicolons, quotation marks or apostrophes, and it does not capitalise -- truecasing is a different head.

Two of the six classes are weak and the upstream card says so. Its own report gives F1 0.99 for no-mark, 0.95 for . and 0.86 for ,, but 0.39 for - and 0.58 for : -- the confusion matrix has half of all true - predicted as ,. Treat the hyphen and colon classes as advisory.

Feed it text with the punctuation already removed. Given punctuated input it still labels every token and you get marks on top of marks.

The labels line up with the tokenizer's PIECES, not with your words -- a SentencePiece vocabulary splits wolfgang into three -- and the mark you want is the one on a word's LAST piece. The usage snippet above does that walk; the export hands back the pieces alongside the labels rather than guessing at the rule for you.

The export takes one sequence at a time and no padding, so there is no batch dimension to fill and no attention mask to pass. Sequences are capped at 512 tokens by the checkpoint's own learned position table.

Files

  • punctuate-all.gguf -- the model, exported with loom-exporter.

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

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

GPU в ailist

Универсальный рантайм · loom-py-rt

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

GGUF-веса поддерживаются только для текстовых LLM (llama.cpp).

Ревизия весов
2185746

0 моделей