首页 > 其他分享 >【环境部署】SPECTER模型-基于transformer的科学出版物

【环境部署】SPECTER模型-基于transformer的科学出版物

时间:2023-06-22 20:25:39浏览次数:44  
标签:transformer py specter user File 出版物 data SPECTER allennlp

论文背景

标题:SPECTER: Document-level Representation Learning using Citation-informed Transformers
摘要:表示学习是自然语言处理系统的关键组成部分。像BERT这样的最新Transformer语言模型学习了强大的文本表示,但这些模型针对标记和句子级别的训练目标,并不利用相关性信息,这限制了它们在文档级表示方面的能力。对于科学文献的应用,如分类和推荐,嵌入提供了强大的终端任务性能。我们提出了SPECTER,一种基于预训练Transformer语言模型的科学文档的文档级嵌入生成方法,其依据一个强大的文档级相关性信号:引用图。与现有的预训练语言模型不同,SPECTER可以轻松地应用于下游应用,而无需特定任务的微调。此外,为了鼓励进一步的文档级模型研究,我们引入了SciDocs,一个新的评估基准,包括七个文档级任务,从引文预测到文档分类和推荐。我们展示了SPECTER在基准测试上优于各种竞争基线。
作者:【ArmanAI】Arman Cohan, Sergey Feldman, Iz Beltagy, Doug Downey, Daniel S. Weld
CCF:B
会议:Proceedings of the 58th Annual Meeting of the Association for Computational Linguistics 2020

模型细节

文档:https://github.com/allenai/specter#specter-document-level-representation-learning-using-citation-informed-transformers

安装Transformers

Python 3.6+, PyTorch 1.1.0+, TensorFlow 2.0+, and Flax.

通过Github仓库安装

1. 下载

## git clone [email protected]:allenai/specter.git
git clone https://github.com/allenai/specter.git
cd specter
## 通过浏览器下载archive.tar.gz更快
wget https://ai2-s2-research-public.s3-us-west-2.amazonaws.com/specter/archive.tar.gz
tar -xzvf archive.tar.gz

2. 安装环境

## 先安装conda,记住运行Anaconda.sh安装脚本时不要在root下运行,不然默认装到/root下,虽然在安装时选择其他路径可以让user使用,但是运行代码还是有可能出错,保险起见,就user下安装即可。
conda create --name specter python=3.7 setuptools  
conda activate specter  
# if you don't have gpus, remove cudatoolkit argument
#conda install pytorch cudatoolkit=10.1 -c pytorch   
conda install pytorch cpuonly -c pytorch
## pip requirements.txt的命令最好转化成以下两条,用以在网络不好的环境下分别执行,防止一个执行了重复执行
## pip install dill jsonlines pandas scikit-learn
##https可以换成git试试
pip install -r requirements.txt  
python setup.py install

3. 修改环境包依赖bug

运行代码报错,这是因为包的版本不对。
allennlp 0.9.0
overrides 7.3.1
其中overrides版本高了,应该将其改为低版本3.1.0

报错信息
(specter) user@ubuntu:~/model/model2/specter$ python scripts/embed.py \
> --ids data/sample.ids --metadata data/sample-metadata.json \
> --model ./model.tar.gz \
> --output-file output.jsonl \
> --vocab-dir data/vocab/ \
> --batch-size 16 \
> --cuda-device -1
Traceback (most recent call last):
  File "specter/predict_command.py", line 14, in <module>
    from allennlp.commands import ArgumentParserWithDefaults
  File "/home/user/anaconda3/envs/specter/lib/python3.7/site-packages/allennlp/commands/__init__.py", line 8, in <module>
    from allennlp.commands.configure import Configure
  File "/home/user/anaconda3/envs/specter/lib/python3.7/site-packages/allennlp/commands/configure.py", line 26, in <module>
    from allennlp.service.config_explorer import make_app
  File "/home/user/anaconda3/envs/specter/lib/python3.7/site-packages/allennlp/service/config_explorer.py", line 24, in <module>
    from allennlp.common.configuration import configure, choices
  File "/home/user/anaconda3/envs/specter/lib/python3.7/site-packages/allennlp/common/configuration.py", line 17, in <module>
    from allennlp.data.dataset_readers import DatasetReader
  File "/home/user/anaconda3/envs/specter/lib/python3.7/site-packages/allennlp/data/__init__.py", line 1, in <module>
    from allennlp.data.dataset_readers.dataset_reader import DatasetReader
  File "/home/user/anaconda3/envs/specter/lib/python3.7/site-packages/allennlp/data/dataset_readers/__init__.py", line 10, in <module>
    from allennlp.data.dataset_readers.ccgbank import CcgBankDatasetReader
  File "/home/user/anaconda3/envs/specter/lib/python3.7/site-packages/allennlp/data/dataset_readers/ccgbank.py", line 9, in <module>
    from allennlp.data.dataset_readers.dataset_reader import DatasetReader
  File "/home/user/anaconda3/envs/specter/lib/python3.7/site-packages/allennlp/data/dataset_readers/dataset_reader.py", line 8, in <module>
    from allennlp.data.instance import Instance
  File "/home/user/anaconda3/envs/specter/lib/python3.7/site-packages/allennlp/data/instance.py", line 3, in <module>
    from allennlp.data.fields.field import DataArray, Field
  File "/home/user/anaconda3/envs/specter/lib/python3.7/site-packages/allennlp/data/fields/__init__.py", line 7, in <module>
    from allennlp.data.fields.array_field import ArrayField
  File "/home/user/anaconda3/envs/specter/lib/python3.7/site-packages/allennlp/data/fields/array_field.py", line 10, in <module>
    class ArrayField(Field[numpy.ndarray]):
  File "/home/user/anaconda3/envs/specter/lib/python3.7/site-packages/allennlp/data/fields/array_field.py", line 49, in ArrayField
    @overrides
  File "/home/user/anaconda3/envs/specter/lib/python3.7/site-packages/overrides/overrides.py", line 83, in overrides
    return _overrides(method, check_signature, check_at_runtime)
  File "/home/user/anaconda3/envs/specter/lib/python3.7/site-packages/overrides/overrides.py", line 170, in _overrides
    _validate_method(method, super_class, check_signature)
  File "/home/user/anaconda3/envs/specter/lib/python3.7/site-packages/overrides/overrides.py", line 189, in _validate_method
    ensure_signature_is_compatible(super_method, method, is_static)
  File "/home/user/anaconda3/envs/specter/lib/python3.7/site-packages/overrides/signature.py", line 102, in ensure_signature_is_compatible
    ensure_return_type_compatibility(super_type_hints, sub_type_hints, method_name)
  File "/home/user/anaconda3/envs/specter/lib/python3.7/site-packages/overrides/signature.py", line 303, in ensure_return_type_compatibility
    f"{method_name}: return type `{sub_return}` is not a `{super_return}`."
TypeError: ArrayField.empty_field: return type `None` is not a `<class 'allennlp.data.fields.field.Field'>`.
修改代码
pip install allennlp==3.1.0

4. 运行代码

此时再次运行以上代码,模型正常工作
脚本的输出大概是如下格式:
image

标签:transformer,py,specter,user,File,出版物,data,SPECTER,allennlp
From: https://www.cnblogs.com/WordDealer/p/17497402.html

相关文章

  • transformers库的使用【一】——pipeline的简单使用
    transformers库的使用使用pipelineAPI来快速使用一些预训练模型使用预训练模型最简单的方法就是使用pipeline(),transformers提供了一些任务:1、情感分析(Sentmentanalysis):分析文本是正面的还是负面的2、文本生成(inEnglish):提供一个语句,模型将生成这条语句的下一句3、命名实体识......
  • Huggingface Transformers库学习笔记(一):入门(Get started)
    前言Huggingface的Transformers库是一个很棒的项目,该库提供了用于自然语言理解(NLU)任务(如分析文本的情感)和自然语言生成(NLG)任务(如用新文本完成提示或用另一种语言翻译)的预先训练的模型。其收录了在100多种语言上超过32种预训练模型。这些先进的模型通过这个库可以非常轻松......
  • sentence-transformers(SBert)中文文本相似度预测(附代码)
    sentence-transformers(SBert)中文文本相似度预测(附代码)https://blog.csdn.net/weixin_54218079/article/details/128687878https://gitee.com/liheng103/sbert-evaluatehttps://www.sbert.net/ 训练模型创建网络:使用Sbert官方给出的预训练模型sentence_hfl_chinese-rober......
  • SentenceTransformers库介绍
     https://blog.csdn.net/m0_47256162/article/details/129380499SentenceTransformer是一个Python框架,用于句子、文本和图像嵌入Embedding。这个框架计算超过100种语言的句子或文本嵌入。然后,这些嵌入可以进行比较,例如与余弦相似度进行比较,以找到具有相似含义的句子,这对于语......
  • 图解transformer中的自注意力机制
    本文将将介绍注意力的概念从何而来,它是如何工作的以及它的简单的实现。注意力机制在整个注意力过程中,模型会学习了三个权重:查询、键和值。查询、键和值的思想来源于信息检索系统。所以我们先理解数据库查询的思想。假设有一个数据库,里面有所有一些作家和他们的书籍信息。现在......
  • 三大特征提取器(RNN/CNN/Transformer)
    三大特征提取器-RNN、CNN和Transformer#简介#近年来,深度学习在各个NLP任务中都取得了SOTA结果。这一节,我们先了解一下现阶段在自然语言处理领域最常用的特征抽取结构。本文部分参考张俊林老师的文章《放弃幻想,全面拥抱Transformer:自然语言处理三大特征抽取器(CNN/RNN/TF)比较......
  • 3.3 Spatial Transformer
    1.SpatialTransformerLayer1.1CNNisnotinvarianttoscalingandrotation(1)CNN并不能真正做到scaling和rotation.(2)如下图所示,在通常情况下,左右两边的图片对于CNN来说是不一样的.  所以,我们考虑一层layer,这层layer能够对inputimage进行旋转缩放,以便更好......
  • transformers
    sentence="Hello,mysoniscuting."input_ids_method1=torch.tensor(tokenizer.encode(sentence,add_special_tokens=True))#Batchsize1  //一次性进行分词和id映射#tensor([101,7592,1010,2026,2365,2003,3013,2075,1012,102])input_token2=......
  • 田渊栋新作:打开1层Transformer黑盒,注意力机制没那么神秘
    前言 从四篇论文入手,Sebastian再谈Transformer架构图。本文转载自机器之心仅用于学术分享,若侵权请联系删除欢迎关注公众号CV技术指南,专注于计算机视觉的技术总结、最新技术跟踪、经典论文解读、CV招聘信息。CV各大方向专栏与各个部署框架最全教程整理【CV技术指南】CV全......
  • 【实战】霸榜各大医学分割挑战赛的Transformer架构--nnFormer
    文章目录安装下载以及预处理实验数据预处理数据修改源代码错误traintest简介:我们介绍了nnFormer(not-anothertransFormer),一种用于3D医学图像分割的transformer。nnFormer不仅使用了卷积和自注意力的结合,还引入了基于局部和全局体积的自注意机制来学习体积表示。此外,nnFormer......