模型:
allenai/specter2_proximity
该适配器针对allennai/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_proximity", source="hf", set_active=True)
SPECTER 2.0是SPECTER的后续版本,配合 adapters 可以为科学任务生成任务特定的嵌入。给定科学论文的标题和摘要或短文本查询,该模型可以生成用于下游应用的有效嵌入。
SPECTER 2.0已使用600万个科学论文引用三元组进行训练,这些三元组可在 here 中获得。此后,它在所有 SciRepEval 的训练任务上进行训练,使用特定于任务格式的适配器。
训练的任务格式:
这是一个特定于检索的适配器。对于需要从语料库中检索给定论文查询的其他相关论文的任务,请使用此适配器生成嵌入。
它建立在 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_proximity", source="hf", load_as="specter2_proximity", 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} }