模型:
allenai/specter2_adhoc_query
这是一个针对 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_adhoc_query", source="hf", set_active=True)
SPECTER 2.0 是 SPECTER 的后续版本,并且可以与 adapters 配对生成科学任务的特定嵌入。通过给出科学论文的标题和摘要或者一个短文本查询,该模型可以生成有效的嵌入以供后续应用使用。
SPECTER 2.0 在超过600万个科学论文引用的三元组上进行了训练,这些三元组可在 here 上获得。然后,它通过使用特定于任务格式的适配器在所有 SciRepEval 训练任务上进行训练。
已训练任务格式:
这是用于通用搜索查询的适配器。对于需要针对短文本查询检索论文的任务,请使用该适配器对查询进行编码,然后使用 allenai/specter2_proximity 对候选论文进行编码。
它在 SciRepEval: A Multi-Format Benchmark for Scientific Document Representations 的基础上进行了改进,并且我们也在该基准测试中评估了训练模型。
Model | Name and HF link | Description |
---|---|---|
Retrieval* | 12319321 | Encode papers as queries and candidates eg. Link Prediction, Nearest Neighbor Search |
Adhoc Query | 12320321 | Encode short raw text queries for search tasks. (Candidate papers can be encoded with proximity) |
Classification | 12321321 | Encode papers to feed into linear classifiers as features |
Regression | 12322321 | 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_adhoc_query", source="hf", load_as="specter2_adhoc_query", 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,轮数=2,预热步骤=10% fp16
批次大小=256,最大输入长度=512,学习率=1e-4,轮数=6,预热=1000步 fp16
我们在 SciRepEval 上对模型进行评估,该基准测试是一个用于科学嵌入任务的大规模评估基准测试,其中包含[SciDocs]作为一个子集。我们还在 MDCR 上评估和建立了一个新的SoTA,该基准测试是一个用于引文推荐的大规模基准测试。
Model | SciRepEval In-Train | SciRepEval Out-of-Train | SciRepEval Avg | MDCR(MAP, Recall@5) |
---|---|---|---|---|
12329321 | n/a | n/a | n/a | (33.7, 28.5) |
12330321 | 54.7 | 57.4 | 68.0 | (30.6, 25.5) |
12331321 | 55.6 | 57.8 | 69.0 | (32.6, 27.3) |
12332321 | 61.9 | 59.0 | 70.9 | (35.3, 29.6) |
12333321 | 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} }