目前通用大模型取代为特定任务定制训练的专属模型的趋势逐渐显露,这种方式使AI模型应用的边际成本大幅下降。由此提出一个问题:不经过训练来实现零样本信息抽取是否可行?
信息抽取技术作为构建知识图谱的重要一环,如果完全不需要训练就可以实现,将使数据分析的门槛大幅降低,有利于实现自动化知识库构建。
我们通过对GPT-3.5用提示工程的方法建立一个通用的零样本IE系统——GPT4IE(GPT for Information Extraction),发现GPT3.5能够自动从原始句子中提取结构化信息。支持中英文,工具代码已开源。
工具网址:https://cocacola-lab.github.io/GPT4IE/
代码:https://github.com/cocacola-lab/GPT4IE
1
背景介绍
信息抽取(Information Extraction,IE)目标是从无结构文本中抽取结构化信息,包括实体-关系三元组抽取(Entity-relation Extract, RE)、命名实体识别(Named Entity Recognition, NER)和事件抽取(Event Extraction, EE)[1][2][3][4][5]。许多研究已经开始依赖IE技术来自动化进行零样本/少样本工作,例如clinical IE [6]。
近来大规模预训练语言模型(Large Pre-trained Language Model, LLMs)在许多下游任务上都表现极佳,甚至仅仅通过几个例子作为引导而不需要微调就能实现。由此我们提出一个问题:仅通过提示来实现零样本IE任务是否可行? 我们尝试对GPT-3.5用提示的方法建立一个通用的零样本IE系统——GPT4IE(GPT for Information Extraction)。在与GPT3.5和提示的结合下,它能够自动从原始句子中提取结构化信息。
2
技术框架
设计了特定任务的提示模板(task-specified prompt template), 然后将用户的输入填充模板中特定的槽值 (slot),形成提示(prompt),输入GPT-3.5中,进行IE。支持的任务有三种:RE、NER和EE,且这三种任务均支持中英文双语。用户需要输入句子和制定抽取类型列表(即关系列表、头实体列表、尾实体列表、实体类型列表或者事件列表)。具体如下:
RE任务的目标是从文本中抽取三元组,比如“(China, capital, Beijing)”, “(《如懿传》, 主演, 周迅)”。其要求的输入格式如下(带“*”的代表非必填项,我们为这些选项都设置了默认值,但是为了灵活性支持用户自定义指定列表,后同):
Input Sentence: 输入文本
Relation type list (rtl)* : ['关系类型1', '关系类型2', ...]
Subject type list (stl)* : ['头实体类型1', '头实体类型2', ...]
Object type list (otl)* : ['尾实体类型1', '尾实体类型2', ...]
OpenAI API key: OpenAI API 密钥(我们在Github中提供了部分可用key,以供示例使用。)
NER任务旨在从文本中抽取实体,例如“(LOC, Beijing)” , “(人物, 周恩来)”。在NER任务上,输入格式如下:
Input Sentence: 输入文本
Entity type list (etl)* : ['实体类型1', '实体类型2', ...]
OpenAI API key: OpenAI API 密钥
EE任务旨在从纯文本中提取事件,例如“{Life-Divorce: {Person: Bob, Time: today, Place: America}}“ , “{竞赛行为-晋级: {时间: 无, 晋级方: 西北狼, 晋级赛事: 中甲榜首之争}}”。输入格式如下:
Input Sentence: 输入文本
Event type list (etl)* : {'事件类型1': ['论元角色1', '论元角色2', ...], ...}
OpenAI API key: OpenAI API 密钥
3
工具使用示例
3.1 RE示例一
输入:
Input Sentence: Bob worked for Google in Beijing, the capital of China.
rtl: ['location-located_in', 'administrative_division-country', 'person-place_lived', 'person-company', 'person-nationality', 'company-founders', 'country-administrative_divisions', 'person-children', 'country-capital', 'deceased_person-place_of_death', 'neighborhood-neighborhood_of', 'person-place_of_birth']
stl: ['organization', 'person', 'location', 'country']
otl: ['person', 'location', 'country', 'organization', 'city']
输出:
3.2 RE示例二
输入:
Input Sentence: 《如懿传》是一部古装宫廷情感电视剧,由汪俊执导,周迅、霍建华、张钧甯、董洁、辛芷蕾、童瑶、李纯、邬君梅等主演。
rtl: ['所属专辑', '成立日期', '海拔', '官方语言', '占地面积', '父亲', '歌手', '制片人', '导演', '首都', '主演', '董事长', '祖籍', '妻子', '母亲', '气候', '面积', '主角', '邮政编码', '简称', '出品公司', '注册资本', '编剧', '创始人', '毕业院校', '国籍', '专业代码', '朝代', '作者', '作词', '所在城市', '嘉宾', '总部地点', '人口数量', '代言人', '改编自', '校长', '丈夫', '主持人', '主题曲', '修业年限', '作曲', '号', '上映时间', '票房', '饰演', '配音', '获奖']
stl: ['国家', '行政区', '文学作品', '人物', '影视作品', '学校', '图书作品', '地点', '历史人物', '景点', '歌曲', '学科专业', '企业', '电视综艺', '机构', '企业/品牌', '娱乐人物']
otl: ['国家', '人物', 'Text', 'Date', '地点', '气候', '城市', '歌曲', '企业', 'Number', '音乐专辑', '学校', '作品', '语言']
输出:
3.3 NER示例一
输入:
Input Sentence: Bob worked for Google in Beijing, the capital of China.
etl: ['LOC', 'MISC', 'ORG', 'PER']
输出:
3.4 NER示例二
输入:
Input Sentence: 在过去的五年中,致公党在邓小平理论指引下,遵循社会主义初级阶段的基本路线,努力实践致公党十大提出的发挥参政党职能、加强自身建设的基本任务。
etl: ['组织机构', '地点', '人物']
输出:
3.5 EE示例一
输入:
Input Sentence: Yesterday Bob and his wife got divorced in Guangzhou.
etl: {'Personnel:Elect': ['Person', 'Entity', 'Position', 'Time', 'Place'], 'Business:Declare-Bankruptcy': ['Org', 'Time', 'Place'], 'Justice:Arrest-Jail': ['Person', 'Agent', 'Crime', 'Time', 'Place'], 'Life:Divorce': ['Person', 'Time', 'Place'], 'Life:Injure': ['Agent', 'Victim', 'Instrument', 'Time', 'Place']}
输出:
3.6 EE示例二
输入:
Input Sentence:: 在2022年卡塔尔世界杯决赛中,阿根廷以点球大战险胜法国。
etl: {'组织行为-罢工': ['时间', '所属组织', '罢工人数', '罢工人员'], '竞赛行为-晋级': ['时间', '晋级方', '晋级赛事'], '财经/交易-涨停':['时间', '涨停股票'] , '组织关系-解雇': ['时间', '解雇方', '被解雇人员']}
输出:
3.7 EE示例三(一个有意思的错误示例)
输入:
Input Sentence:: 我今天和他离婚了
etl: {'组织行为-罢工': ['时间', '所属组织', '罢工人数', '罢工人员'], '竞赛行为-晋级': ['时间', '晋级方', '晋级赛事'], '财经/交易-涨停':['时间', '涨停股票'] , '组织关系-解雇': ['时间', '解雇方', '被解雇人员']}
输出:
明显上面的输出使错误的,自定义etl为: {'离婚': ['时间', '人物']},输出为:
参考文献
Erik F. Tjong Kim Sang. 2002. Introduction to the CoNLL-2002 shared task: Language-independent named entity recognition. In COLING-02: The 6th Conference on Natural Language Learning 2002 (CoNLL-2002).
Lev Ratinov and Dan Roth. 2009. Design challenges and misconceptions in named entity recognition. In Proceedings of the thirteenth conference on computational natural language learning (CoNLL-2009), pages 147–155.
Zhepei Wei, Jianlin Su, Yue Wang, Yuan Tian, and Yi Chang. 2019. A novel cascade binary tagging framework for relational triple extraction. arXiv preprint arXiv:1909.03227.
Hengyi Zheng, Rui Wen, Xi Chen, Yifan Yang, Yunyan Zhang, Ziheng Zhang, Ningyu Zhang, Bin Qin, Ming Xu, and Yefeng Zheng. 2021. Prgc: Potential relation and global correspondence based joint relational triple extraction. arXiv preprint arXiv:2106.09895.
Fayuan Li, Weihua Peng, Yuguang Chen, Quan Wang, Lu Pan, Yajuan Lyu, and Yong Zhu. 2020a. Event extraction as multi-turn question answering. In Findings of the Association for Computational Linguistics: EMNLP 2020, pages 829–838, Online. Association for Computational Linguistics.
Monica Agrawal, Stefan Hegselmann, Hunter Lang, Yoon Kim, and David Sontag. 2022. Large language models are zero-shot clinical information extractors. arXiv preprint arXiv:2205.12689.