库名称:transformers
标签:
- 分块
- RAG
许可证:mit
数据集:
- bookcorpus/bookcorpus
语言:
- en
基础模型:
- answerdotai/ModernBERT-base
Chonky modernbert基础版v1
Chonky是一款能智能将文本分割成有意义语义块的Transformer模型。该模型可用于RAG系统。
模型描述
该模型处理文本并将其划分为语义连贯的片段。这些分块随后可作为RAG流程的一部分,输入到基于嵌入的检索系统或语言模型中。
⚠️此模型默认在1024长度序列上微调(ModernBERT原生支持最长8192的序列长度)。
使用方法
我为该模型开发了轻量级Python库:chonky
使用示例:
from chonky import ParagraphSplitter
splitter = ParagraphSplitter(
model_id="mirth/chonky_modernbert_base_1",
device="cpu"
)
text = """大学前我在校外主要专注写作和编程。我不写议论文,当时初学者该写(现在可能仍是)短篇小说。我的故事很糟糕,几乎没有情节,只有情感强烈的角色——我以为这样就有深度。九年级时(13-14岁),我和朋友Rich Draves获准使用学区那台IBM 1401计算机(当时叫"数据处理")。机器就在初中地下室,像迷你反派巢穴:亮白荧光灯下,各种异形设备——CPU、磁盘驱动器、打印机、读卡器——架在高架地板上。"""
for chunk in splitter(text):
print(chunk)
print("--")
大学前我在校外主要专注写作和编程。我不写议论文,当时初学者该写(现在可能仍是)短篇小说。
--
我的故事很糟糕,几乎没有情节,只有情感强烈的角色——我以为这样就有深度。九年级时(13-14岁),我和朋友Rich Draves获准使用学区那台IBM 1401计算机(当时叫"数据处理")。
--
机器就在初中地下室,像迷你反派巢穴:亮白荧光灯下,各种异形设备——CPU、磁盘驱动器、打印机、读卡器——架在高架地板上。
--
也可通过标准NER流程使用:
from transformers import AutoTokenizer, AutoModelForTokenClassification, pipeline
model_name = "mirth/chonky_modernbert_base_1"
tokenizer = AutoTokenizer.from_pretrained(model_name, model_max_length=1024)
id2label = {0: "O", 1: "分隔符"}
label2id = {"O": 0, "分隔符": 1}
model = AutoModelForTokenClassification.from_pretrained(
model_name,
num_labels=2,
id2label=id2label,
label2id=label2id,
)
pipe = pipeline("ner", model=model, tokenizer=tokenizer, aggregation_strategy="simple")
text = """同上文内容"""
pipe(text)
[
{'entity_group': '分隔符', 'score': 0.91590524, 'word': '。', 'start': 209, 'end': 218},
{'entity_group': '分隔符', 'score': 0.6210419, 'word': '处理")。', 'start': 455, 'end': 468},
{'entity_group': '分隔符', 'score': 0.7071036, 'word': '。', 'start': 652, 'end': 653}
]
训练数据
模型基于bookcorpus数据集中的段落分割任务训练。
评估指标
基于token的指标:
指标 |
值 |
F1分数 |
0.79 |
精确率 |
0.83 |
召回率 |
0.75 |
准确率 |
0.99 |
硬件配置
模型在单张H100显卡上微调数小时完成。