项目介绍 —— Zshot
简介
Zshot 是一个高度可定制的框架,专注于实现零样本和少样本命名实体和关系识别。其核心目标是在没有大量标记数据的情况下,对新领域的文本进行有效的信息抽取。
主要功能
Zshot 提供了以下几个主要功能:
- 提及抽取:识别全球相关的提及或特定领域相关的提及。
- 维基化:将文本提及链接到维基百科中的实体。
- 零样本和少样本命名实体识别:使用语言描述来对未见领域进行泛化。
- 零样本和少样本命名关系识别。
- 可视化:实现零样本的命名实体和关系提取的可视化。
系统要求
Zshot 需要运行在 Python 3.6 以上版本的环境中。此外,以下依赖项是必要的:
- Spacy:用于管道处理和可视化。
- PyTorch:用于运行 Pytorch 模型。
- Transformers:用于预训练语言模型。
- Evaluate 和 Datasets:用于评估模型及其数据集。
安装
Zshot 可以通过以下命令方便地进行安装:
pip install zshot
使用指南
-
安装依赖项:
pip install -r requirements.txt
-
下载并安装 Spacy 管道以用于提及提取:
python -m spacy download en_core_web_sm
-
配置并运行 Zshot:
创建一个
main.py
文件,用于配置管道并定义实体,例如:import spacy from zshot import PipelineConfig, displacy from zshot.linker import LinkerRegen from zshot.mentions_extractor import MentionsExtractorSpacy from zshot.utils.data_models import Entity nlp = spacy.load("en_core_web_sm") nlp_config = PipelineConfig( mentions_extractor=MentionsExtractorSpacy(), linker=LinkerRegen(), entities=[ Entity(name="Paris", description="Paris is located in northern central France, in a north-bending arc of the river Seine"), # 更多实体配置... ] ) nlp.add_pipe("zshot", config=nlp_config, last=True) text = "International Business Machines Corporation (IBM) is an American multinational technology corporation headquartered in Armonk, New York." doc = nlp(text) displacy.serve(doc, style="ent")
工作原理
Zshot 由两个核心组件构成:提及提取器和链接器。
提及提取器
提及提取器用于检测可能的实体(即提及),随后通过链接器将这些提及链接到数据源(例如:Wikidata)。目前支持多种提及提取器,包括基于 Spacy 和 Flair 的版本。基于命名实体识别和分类(NERC)的方法和基于语法依赖分析的方法,各有优劣。
链接器
链接器将检测到的实体连接到现有标签,有些链接器是端到端的,不需要单独的提及提取器。
关系提取器
关系提取器用于从已提取的实体中抽取关系,目前仅有一种关系提取器:ZS-Bert。
知识提取器
知识提取器同时执行命名实体和关系的提取和分类。目前提供了一种实现:KnowGL。
示例与评估
- 提供的代码示例包括如何在 Google Colab 中运行 Zshot 进行安装、可视化、知识提取等。
- 提供了评估组件以便使用标准数据集进行系统验证。
Zshot 提供了丰富的功能和便捷的使用方式,非常适合研究者和开发者进行实体识别及关系抽取的探索。