科学/生物医学文档的完整Spacy管道和模型。
scispac的Python项目详细描述
此存储库包含与对科学文档使用Spacy相关的自定义管道和模型。
特别是,有一个自定义的标记化器,它在spacy的基础上添加标记化规则。 基于规则的标记器,一个pos标记器和语法分析器,用于生物医学数据和 实体跨度检测模型。另外,还有用于更具体任务的NER模型。
安装
安装scispacy需要两个步骤:安装库和安装模型。要安装库,请运行:
pip install scispacy
要安装一个模型(请参阅下面的所有可用模型选择),请运行如下命令:
pip install https://s3-us-west-2.amazonaws.com/ai2-s2-scispacy/releases/v0.2.0/en_core_sci_sm-0.2.0.tar.gz
注意:我们强烈建议您使用独立的python环境(如virtualenv或conda)来安装scispacy。 如果您需要帮助,请查看下面的"设置虚拟环境"部分。 此外,scispacy使用了python的现代特性,因此仅适用于python 3.6或更高版本
设置虚拟环境
conda可以使用 scispacy所需的python版本。如果您已经有了python 3.6或3.7 要使用的环境,可以跳到"通过PIP安装"部分。
使用python 3.6创建名为"scispacy"的conda环境:
conda create -n scispacy python=3.6
激活conda环境。您需要在要使用scispacy的每个终端中激活conda环境。
source activate scispacy
< > >解析缩写:bool=true,可选(默认为false)
在执行链接之前,是否解析文档中标识的缩写。 如果空间中没有abbreviationdetector
,则此参数无效 管道。k:int,可选,(默认值=30)
每次提及要从候选生成器查找的最近邻居的数目。阈值:浮动,可选,(默认值=0.7)
候选人必须达到的门槛才能添加到文档中 作为推荐候选人。无定义阈值:浮动,可选,(默认值=0.95)
实体候选必须达到的阈值才能添加到文档中 如果实体候选者没有定义,则作为提及候选者。过滤器定义:bool,默认值=true 是否筛选可返回的实体以仅包含具有定义的实体 在知识库中。
每个提到的最大实体数:int,可选,默认值=5 对于给定的提及将返回的实体的最大数目,不管 找到了多少个最近的邻居。
现在您可以使用上述步骤安装scispacy
和其中一个型号。
完成上述步骤并下载了下面的一个模型之后,就可以像加载任何其他spacy模型一样加载scispacy模型。例如:
importspacynlp=spacy.load("en_core_sci_sm")doc=nlp("Alterations in the hypocretin receptor 2 and preprohypocretin genes produce narcolepsy in some animals.")
有关升级的说明
如果要升级scispacy
,则需要再次下载模型,以获得与您拥有的scispacy
版本兼容的模型版本。下载的模型链接应包含您所拥有的scispacy
的版本号。
可用型号
要安装模型,请单击下面的链接下载模型,然后运行
pipinstall</path/to/download>
或者,您可以通过右键单击链接,选择"复制链接地址"并运行来直接从url安装
pipinstallCMD-V(topastethecopiedURL)<表><广告>
其他管道组件
缩写检测器
abbreviationdetector是一个spacy组件,它实现了"一个简单算法"中的缩写检测算法。 用于识别生物医学文本中的缩写定义。",(Schwartz&Hearst,2003)。
您可以通过doc.\缩写
属性访问缩写列表,对于给定的缩写,
您可以使用span.\long嫒form
访问它的long form(这是一个spacy.tokens.span
),它将指向
文档中的另一个跨度。
示例用法
importspacyfromscispacy.abbreviationimportAbbreviationDetectornlp=spacy.load("en_core_sci_sm")# Add the abbreviation pipe to the spacy pipeline.abbreviation_pipe=AbbreviationDetector(nlp)nlp.add_pipe(abbreviation_pipe)doc=nlp("Spinal and bulbar muscular atrophy (SBMA) is an \ inherited motor neuron disease caused by the expansion \ of a polyglutamine tract within the androgen receptor (AR). \ SBMA can be caused by this easily.")print("Abbreviation","\t","Definition")forabrvindoc._.abbreviations:print(f"{abrv}\t ({abrv.start}, {abrv.end}) {abrv._.long_form}")>>>AbbreviationSpanDefinition>>>SBMA(33,34)Spinalandbulbarmuscularatrophy>>>SBMA(6,7)Spinalandbulbarmuscularatrophy>>>AR(29,30)androgenreceptor
umlsentitylinker(alpha功能)
umlsentitylinker是一个spacy组件,它执行到统一医疗语言系统的链接。 请注意,这是当前的alpha特性。链接器只是在命名实体上执行字符串重叠搜索, 使用近似近邻搜索将它们与包含270万个概念的知识库进行比较。
因为这个组件的边缘有点粗糙,所以您可能需要使用一些参数 下面是为了适应您的用例(更高的精度、更高的召回率等)。
此类设置Spacy跨度上的.umls元素
属性,该属性由
列出对应于umls概念id的元组[str,float]]和相关的分数
对于每个提到的最大实体数的列表
实体数。
您可以使用此类的umls属性查找给定id的更多信息:
print(linker.umls.cui_to_entity[concept_id])
示例用法
pip install scispacy0
引用
如果您在研究中使用scispacy,请引用生物医学neumann king/de28ec1d7bd38c8fc4e8ac59b6133800818b4e29" rel="nofollow">scispacy:生物医学自然语言处理的快速和健壮模型。此外,请说明您使用的科学的版本和模型,以便您的研究能够被复制。
pip install scispacy1
scispacy是一个开源项目,由艾伦人工学院(allen institute for artificial)开发。智能(AI2)。 AI2是一个非营利性机构,其使命是通过高影响力的人工智能研究和工程为人类做出贡献。