license: mit
library_name: transformers
pipeline_tag: question-answering
本仓库包含论文《布谷鸟:孵化于大语言模型巢穴中的信息抽取免费乘客》的模型实现。
布谷鸟是一个小型(3亿参数)信息抽取模型,其模仿了大语言模型的下一词预测范式。不同于传统词汇检索方式,布谷鸟通过标记输入上下文中的目标词元进行预测,如下图所示:

该模型与以往信息抽取预训练方法存在本质差异——它能利用任何文本资源进行自我增强,尤其擅长"搭便车"式吸收为大语言模型优化的数据!

当前我们开源了以下预训练版本的布谷鸟模型:
-
基于C4数据集转换的1亿条下一词抽取实例 (基础版布谷鸟 🐦)
-
基础版 + 来自TuluV3指令微调数据集的260万条下一词抽取实例 (指令增强版 🐦🛠️)
-
指令增强版 + MultiNERD/MetaIE/NuNER/MRQA(不含SQuAD和DROP)(彩虹版 🌈🐦🛠️)
-
彩虹版 + 多NER数据集/WizardLM数据集/多选题数据集/MMLU/SQuAD/DROP/MNLI/SNLI (超级彩虹版 🦸🌈🐦🛠️)
性能展示 🚀
体验布谷鸟模型在各类信息抽取任务中惊人的适应效率!
|
CoNLL2003 |
BioNLP2004 |
MIT餐厅 |
MIT电影 |
平均 |
CoNLL2004 |
ADE |
平均 |
SQuAD |
SQuAD-V2 |
DROP |
平均 |
OPT-C4-TuluV3 |
50.24 |
39.76 |
58.91 |
56.33 |
50.56 |
47.14 |
45.66 |
46.40 |
39.80 |
53.81 |
31.00 |
41.54 |
RoBERTa |
33.75 |
32.91 |
62.15 |
58.32 |
46.80 |
34.16 |
2.15 |
18.15 |
31.86 |
48.55 |
9.16 |
29.86 |
MRQA |
72.45 |
55.93 |
68.68 |
66.26 |
65.83 |
66.23 |
67.44 |
66.84 |
80.07 |
66.22 |
54.46 |
66.92 |
多任务NERD |
66.78 |
54.62 |
64.16 |
66.30 |
60.59 |
57.52 |
45.10 |
51.31 |
42.85 |
50.99 |
30.12 |
41.32 |
NuNER |
74.15 |
56.36 |
68.57 |
64.88 |
65.99 |
65.12 |
63.71 |
64.42 |
61.60 |
52.67 |
37.37 |
50.55 |
元信息抽取 |
71.33 |
55.63 |
70.08 |
65.23 |
65.57 |
64.81 |
64.40 |
64.61 |
74.59 |
62.54 |
30.73 |
55.95 |
布谷鸟指令版 🐦🛠️ |
73.60 |
57.00 |
67.63 |
67.12 |
66.34 |
69.57 |
71.70 |
70.63 |
77.47 |
64.06 |
54.25 |
65.26 |
└─ 仅预训练 🐦 |
72.46 |
55.87 |
66.87 |
67.23 |
65.61 |
68.14 |
69.39 |
68.77 |
75.64 |
63.36 |
52.81 |
63.94 |
└─ 仅后训练 |
72.80 |
56.10 |
66.02 |
67.10 |
65.51 |
68.66 |
69.75 |
69.21 |
77.05 |
62.39 |
54.80 |
64.75 |
彩虹布谷鸟 🌈🐦🛠️ |
79.94 |
58.39 |
70.30 |
67.00 |
68.91 |
70.47 |
76.05 |
73.26 |
86.57 |
69.41 |
64.64 |
73.54 |
快速体验下一词抽取功能 ⚡
推荐使用最强的超级彩虹布谷鸟 🦸🌈🐦🛠️ 进行零样本抽取
1️⃣ 首先加载模型和分词器
from transformers import AutoModelForTokenClassification, AutoTokenizer
import torch
import spacy
nlp = spacy.load("en_core_web_sm")
device = torch.device("cuda:0")
path = f"KomeijiForce/Cuckoo-C4-Super-Rainbow"
tokenizer = AutoTokenizer.from_pretrained(path)
tagger = AutoModelForTokenClassification.from_pretrained(path).to(device)
2️⃣ 定义下一词抽取函数
def next_tokens_extraction(text):
return predictions
3️⃣ 调用函数进行抽取!
案例1:基础实体与关系理解
text = "汤姆和杰克去巴黎旅行了"
案例2:长文本理解
案例3:知识问答
文件信息
仓库包含以下文件配置:
特殊词元映射表(special_tokens_map.json):
{
"起始符": {"内容": "<s>", "标准化": true},
"分类符": {"内容": "<s>", "标准化": true},
"终止符": {"内容": "</s>", "标准化": true},
"掩码符": {"内容": "<mask>", "左修剪": true},
"填充符": {"内容": "<pad>", "标准化": true},
"分隔符": {"内容": "</s>", "标准化": true},
"未知符": {"内容": "<unk>", "标准化": true}
}
分词器配置(tokenizer_config.json):
{
"模型类型": "RobertaTokenizer",
"最大长度": 512,
"截断策略": "longest_first",
"特殊词元配置": {...}
}
模型配置(config.json):
{
"架构": ["RobertaForTokenClassification"],
"隐藏层维度": 1024,
"注意力头数": 16,
"标签映射": {"B": 0, "I": 1, "O": 2},
"词汇量": 50265,
"torch数据类型": "float32"
}
注:由于文件体积限制,merges.txt(合并表)、vocab.json(词表)和tokenizer.json(分词器序列化文件)的具体内容未完整显示。