模型:
allenai/specter2_classification
这是一个针对 allenai/specter2 模型在 allenai/scirepeval 数据集上进行训练的适配器。
该适配器适用于 adapter-transformers 库。
首先,安装 adapter-transformers:
pip install -U adapter-transformers
注意:adapter-transformers 是 transformers 的一个分支,可作为支持适配器的直接替代品。
现在,可以像这样加载和激活适配器:
from transformers import AutoAdapterModel model = AutoAdapterModel.from_pretrained("allenai/specter2") adapter_name = model.load_adapter("allenai/specter2_classification", source="hf", set_active=True)
许可证:Apache-2.0 数据集:
SPECTER 2.0 是 SPECTER 的后继版本,与 adapters 结合使用时,能够为科学任务生成特定任务的嵌入向量。通过标题和摘要组合的科学论文或短文本查询,该模型可以生成有效的嵌入向量,用于下游应用。
SPECTER 2.0 在超过 600 万个科学论文引用的三元组数据上进行了训练,这些数据可以通过 here 获得。之后,该模型使用任务格式特定的适配器在所有 SciRepEval 训练任务上进行了训练。
训练过的任务格式有:
这是一个特定于分类的适配器,可生成可用作下游分类器(如 SVM)输入的嵌入向量。请注意,嵌入向量已经经过线性分类器的评估,与非线性分类器的性能可能不一致。
它基于 SciRepEval: A Multi-Format Benchmark for Scientific Document Representations 中的工作,并且我们也在该基准测试中评估了训练的模型。
Model | Name and HF link | Description |
---|---|---|
Retrieval* | 12318321 | Encode papers as queries and candidates eg. Link Prediction, Nearest Neighbor Search |
Adhoc Query | 12319321 | Encode short raw text queries for search tasks. (Candidate papers can be encoded with proximity) |
Classification | 12320321 | Encode papers to feed into linear classifiers as features |
Regression | 12321321 | Encode papers to feed into linear regressors as features |
*检索模型对于上述未提及的下游任务类型应该足够。
from transformers import AutoTokenizer, AutoModel # load model and tokenizer tokenizer = AutoTokenizer.from_pretrained('allenai/specter2') #load base model model = AutoModel.from_pretrained('allenai/specter2') #load the adapter(s) as per the required task, provide an identifier for the adapter in load_as argument and activate it model.load_adapter("allenai/specter2_classification", source="hf", load_as="classification", set_active=True) papers = [{'title': 'BERT', 'abstract': 'We introduce a new language representation model called BERT'}, {'title': 'Attention is all you need', 'abstract': ' The dominant sequence transduction models are based on complex recurrent or convolutional neural networks'}] # concatenate title and abstract text_batch = [d['title'] + tokenizer.sep_token + (d.get('abstract') or '') for d in papers] # preprocess the input inputs = self.tokenizer(text_batch, padding=True, truncation=True, return_tensors="pt", return_token_type_ids=False, max_length=512) output = model(**inputs) # take the first token in the batch as the embedding embeddings = output.last_hidden_state[:, 0, :]
有关评估和下游使用,请参考 https://github.com/allenai/scirepeval/blob/main/evaluation/INFERENCE.md 。
基础模型的训练数据是论文之间的引用链接,适配器在四个格式的 8 个大规模任务上进行了训练。所有数据都是 SciRepEval 基准测试的一部分,可以通过 here 获得。
引用链接是这样的三元组:
{"query": {"title": ..., "abstract": ...}, "pos": {"title": ..., "abstract": ...}, "neg": {"title": ..., "abstract": ...}}
由查询论文、正向引用和负向引用组成,这些引用可以来自查询的同一/不同研究领域或引用的引用。
请参考 SPECTER paper 。
模型使用 SciRepEval 进行两个阶段的训练:
批量大小=1024,最大输入长度=512,学习率=2e-5,epochs=2,热身阶段=10% fp16
批量大小=256,最大输入长度=512,学习率=1e-4,epochs=6,热身阶段=1000步 fp16
我们在 SciRepEval 上评估模型,这是一个针对科学嵌入任务的大规模评估基准测试,其中包含 [SciDocs] 作为子集。我们还在 MDCR 上评估并建立了新的 SoTA,这是一个大规模引文推荐基准测试。
Model | SciRepEval In-Train | SciRepEval Out-of-Train | SciRepEval Avg | MDCR(MAP, Recall@5) |
---|---|---|---|---|
12328321 | n/a | n/a | n/a | (33.7, 28.5) |
12329321 | 54.7 | 57.4 | 68.0 | (30.6, 25.5) |
12330321 | 55.6 | 57.8 | 69.0 | (32.6, 27.3) |
12331321 | 61.9 | 59.0 | 70.9 | (35.3, 29.6) |
12332321 | 62.3 | 59.2 | 71.2 | (38.4, 33.0) |
如果您使用 SPECTER 2.0,请引用以下作品:
@inproceedings{specter2020cohan, title={{SPECTER: Document-level Representation Learning using Citation-informed Transformers}}, author={Arman Cohan and Sergey Feldman and Iz Beltagy and Doug Downey and Daniel S. Weld}, booktitle={ACL}, year={2020} }
@article{Singh2022SciRepEvalAM, title={SciRepEval: A Multi-Format Benchmark for Scientific Document Representations}, author={Amanpreet Singh and Mike D'Arcy and Arman Cohan and Doug Downey and Sergey Feldman}, journal={ArXiv}, year={2022}, volume={abs/2211.13308} }