/ Модель

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

Контекст
128 000 токенов
Параметры
445 млн
Архитектура
lfm2 · dense
Базовая модель
LFM2.5-Encoder-350M
Библиотека
transformers
Опубликована
12 авг 2026

LFM2.5-Encoder-350M-corpus-cleaner

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

Модель токеновой классификации на базе LFM2.5-Encoder, которая удаляет шумные фрагменты из текстовых корпусов, сохраняя полезный текст.

41скачиваний за 30 дней5лайковвеса обновлены18 авг 2026

Бенчмарки

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

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

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

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

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

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

LFM2.5-Encoder-350M Corpus Cleaner — модель токеновой классификации, опубликованная Yijiong Yu и дообученная на двунаправленном энкодере LiquidAI/LFM2.5-Encoder-350M. Она помечает токены в шумных текстах как KEEP или DELETE, чтобы удалять рекламные вставки, навигацию, шаблонные блоки, искажённый текст и другой низкокачественный материал, сохраняя полезные фрагменты без переписывания документа. Модель рассчитана на очистку и фильтрацию больших текстовых корпусов, в том числе данных для предобучения; автор сообщает о скорости около 3 тыс. токенов в секунду на CPU и около 160 тыс. на одном GPU H20.

В README заявлен контекст 8 тыс. токенов, тогда как метаданные указывают нативный контекст энкодера 128 тыс. токенов; фактический рабочий предел может зависеть от используемой конфигурации. Модель версии 0.0.2 обучена примерно на 3 млн пар сырых и очищенных примеров; очистку целевых текстов выполняли с помощью Qwen3.5-9B. Архитектура — плотный LFM2, около 444,6 млн параметров по метаданным. Указана поддержка английского и китайского языков. Для работы требуются Transformers с поддержкой LFM2 и trust_remote_code=True. Лицензия в предоставленных данных не указана.

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

  • удаление рекламы и навигационных блоков из веб-текстов
  • очистка корпусов перед предобучением языковой модели
  • удаление искажённых и нечитаемых фрагментов
  • фильтрация библиографий и шаблонной разметки
  • оценка качества текстовых примеров по длине после очистки

Ограничения

Версия 0.0.2 может не обрабатывать все крайние случаи. README заявляет контекст 8 тыс. токенов, а метаданные — 128 тыс.; рабочий предел следует сверять с конфигурацией. Для использования требуется Transformers с поддержкой LFM2 и trust_remote_code=True.

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

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

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

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

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

Открыть на Hugging Face

LFM2.5-Encoder-350M Corpus Cleaner

English | 中文


Try this model in HF space

English

Overview

LFM2.5-Encoder-350M Corpus Cleaner is a token-classification model built on LFM2.5-Encoder. Given noisy pretraining text, it labels each token as KEEP or DELETE, so you can strip noise in one pass and recover clean, usable text—without rewriting the document.

LabelIDMeaning
KEEP0Content worth keeping for pretraining
DELETE1Noise to remove (ads, boilerplate, garbled text, etc.)

Note: This is v0.0.2 now. It may not cover every edge case. If you hit issues, please leave a comment or open an issue.

Why this model?

Raw pretraining corpora are often full of noise: garbled bytes, site chrome, ads, navigation, references, and other low-value spans. Common approaches fall short:

  1. Hand-written rules — brittle and hard to maintain; they miss the long tail of ad and boilerplate patterns.
  2. FastText / BERT quality scorers — can only drop low-scoring documents, not clean them into usable text.
  3. LLM rewrite / cleaning — highest quality, but slow. At 200 tokens/s with 500 concurrent workers, cleaning 1 TB of text can take on the order of ~120 days.

Our approach

We train a token-classification model on LFM2.5-Encoder to mark noisy spans directly, then reconstruct clean text by keeping only KEEP tokens.

Training data: ~3M aligned (raw → cleaned) examples. Clean targets were produced with Qwen3.5-9B + a cleaning prompt on noisy web-scale source text.

Advantages

  1. Orders of magnitude faster than generative LLMs — no GPU required for practical use. Measured throughput (this model, token classification):

    • CPU: ~3k tokens/s
    • GPU (single H20, PyTorch): ~160k tokens/s
    • vLLM can push throughput even higher — cleaning terabyte-scale corpora in days is realistic.
  2. All-in-one, out of the box — no rule stack to tune. Works as both cleaning and filtering: removes ads, page shells, bibliographies, formatting junk, and other training-irrelevant content while preserving useful prose. Low-quality samples (e.g. pure ads) may be deleted entirely; post-clean length is a useful quality signal.

  3. 8k context — reduces painful document chunking during preprocessing and inference.

Quick start

from transformers import AutoModelForTokenClassification, AutoTokenizer
import torch

device = torch.device("cpu")
model_id = "yuyijiong/LFM2.5-Encoder-350M-corpus-cleaner"
tokenizer = AutoTokenizer.from_pretrained(model_id, trust_remote_code=True)
model = AutoModelForTokenClassification.from_pretrained(
    model_id, trust_remote_code=True, torch_dtype=torch.float32
)
model.to(device)
model.eval()

text = "Your noisy pretraining document here ..."
enc = tokenizer(
    text,
    return_offsets_mapping=True,
    truncation=True,
    max_length=8192,
    return_tensors="pt",
)
offsets = enc.pop("offset_mapping")[0].tolist()
inputs = {k: v.to(device) for k, v in enc.items()}

with torch.inference_mode():
    logits = model(**inputs).logits[0]
    labels = logits.argmax(dim=-1).tolist()

# Reconstruct: keep spans where label == 0 (KEEP); merge overlapping offsets
ranges = [(s, e) for (s, e), lab in zip(offsets, labels) if lab == 0 and e > s]
ranges.sort()
merged = []
for s, e in ranges:
    if merged and s <= merged[-1][1]:
        merged[-1] = (merged[-1][0], max(merged[-1][1], e))
    else:
        merged.append((s, e))
cleaned = "".join(text[s:e] for s, e in merged)
print(cleaned)

Requires transformers with LFM2 support and trust_remote_code=True (custom modeling code is bundled).

Model details

Base encoderLFM2.5-Encoder-350M (bidirectional)
TaskToken classification (KEEP / DELETE)
Parameters~350M
Recommended max_length8192
Versionv0.0.2

Citation

@misc{LFM2.5-Encoder-350M-corpus-cleaner,
  author       = {Yijiong Yu},
  title        = {LFM2.5-Encoder-350M-corpus-cleaner},
  year         = {2026},
  publisher    = {Hugging Face},
  journal      = {Hugging Face Repository},
  howpublished = {\url{https://huggingface.co/yuyijiong/LFM2.5-Encoder-350M-corpus-cleane}},
}

中文

简介

LFM2.5-Encoder-350M Corpus Cleaner 是基于 LFM2.5-Encoder 的 Token 分类模型。对任意含噪声的预训练文本,模型逐 token 预测 保留(KEEP) 或 删除(DELETE),一键剔除噪声并还原可用正文,无需整段重写。

标签ID含义
KEEP0值得保留的训练内容
DELETE1应删除的噪声(广告、壳层、乱码等)

提示: 当前为 v0.0.2 版本,可能无法覆盖所有场景。使用中如有问题,欢迎评论或提 Issue。

动机

原始预训练数据往往包含大量噪声(乱码、网页目录、广告等)。常见清洗方式各有局限:

  1. 大量手工规则 — 不够灵活,难以覆盖千奇百怪的广告与版式噪声。
  2. FastText / BERT 质量打分 — 只能丢弃低分样本,无法把脏数据清洗成可用数据。
  3. LLM 清洗或重写 — 质量最好,但速度慢。按约 200 tokens/s、500 并发估算,清洗 1 TB 数据约需 120 天。

我们的方案

训练基于 LFM2.5-Encoder 的 Token 分类模型,直接标出原文中的噪声片段,再拼接保留内容得到干净文本。

训练数据: 使用 Qwen3.5-9B + 清洗 prompt,在互联网原始语料上生成约 300 万 条「原始文本 → 清洗后文本」对齐样本。

优势

  1. 速度远超生成式 LLM(可达数量级以上),无需 GPU 也可实用部署:

    • 纯 CPU: 约 3k tokens/s
    • 单卡 H20(纯 PyTorch): 约 160k tokens/s
    • 配合 vLLM 还可更快 — 几天内洗完 TB 级数据 具备可行性。
  2. All-in-one,开箱即用 — 无需维护规则库,同时承担清洗与筛选:可去除广告、网页壳、参考文献、格式性文本等对训练无用的内容,并保留正文;对极低质量样本(如纯广告)会整段删空,因此清洗后文本长度也可作为质量参考。

  3. 支持 8k 上下文 — 减轻长文档切分带来的工程负担。

快速上手

from transformers import AutoModelForTokenClassification, AutoTokenizer
import torch

device = torch.device("cpu")
model_id = "yuyijiong/LFM2.5-Encoder-350M-corpus-cleaner"
tokenizer = AutoTokenizer.from_pretrained(model_id, trust_remote_code=True)
model = AutoModelForTokenClassification.from_pretrained(
    model_id, trust_remote_code=True, torch_dtype=torch.float32
)
model.to(device)
model.eval()

text = "这里放待清洗的预训练文本 ..."
enc = tokenizer(
    text,
    return_offsets_mapping=True,
    truncation=True,
    max_length=8192,
    return_tensors="pt",
)
offsets = enc.pop("offset_mapping")[0].tolist()
inputs = {k: v.to(device) for k, v in enc.items()}

with torch.inference_mode():
    logits = model(**inputs).logits[0]
    labels = logits.argmax(dim=-1).tolist()

# 按 offset 拼接 label==0(KEEP)的片段;合并重叠 offset(LFM 对部分汉字会切出重叠碎片)
ranges = [(s, e) for (s, e), lab in zip(offsets, labels) if lab == 0 and e > s]
ranges.sort()
merged = []
for s, e in ranges:
    if merged and s <= merged[-1][1]:
        merged[-1] = (merged[-1][0], max(merged[-1][1], e))
    else:
        merged.append((s, e))
cleaned = "".join(text[s:e] for s, e in merged)
print(cleaned)

需安装支持 LFM2 的 transformers,并设置 trust_remote_code=True(仓库内已包含自定义建模代码)。

模型信息

基座LFM2.5-Encoder-350M(双向)
任务Token 分类(KEEP / DELETE)
参数量约 350M
推荐 max_length8192
版本v0.0.2

引用

@misc{LFM2.5-Encoder-350M-corpus-cleaner,
  author       = {Yijiong Yu},
  title        = {LFM2.5-Encoder-350M-corpus-cleaner},
  year         = {2026},
  publisher    = {Hugging Face},
  journal      = {Hugging Face Repository},
  howpublished = {\url{https://huggingface.co/yuyijiong/LFM2.5-Encoder-350M-corpus-cleane}},
}

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

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

GPU в ailist

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

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

Для архитектуры lfm2 нет загрузчика под задачу token-classification.

Класс архитектуры
Lfm2BidirP2ForTokenClassification
Ревизия весов
4ca6cbe

0 моделей