今天是2024年1月2日,北京,天气晴。
首先祝广大读者朋友们,新年快乐。
我们来开始新年的第一篇,来看看最近发现的一些有趣的工作。
关于知识图谱构建,2023年出现了很多方面的工作,包括如何利用大模型进行数据生成、基于大模型进行实体抽取、关系抽取等,而有哪些数据集,有哪些统一信息抽取范式以及如何利用大模型进行数据增强,是我们比较关注的三个话题,因此,本文先谈谈这个话题。
现在的大语言模型的参数往往较大,消费级电脑单纯做推理都比较慢,但如何能够低成本地学习其中的一些方法和流程,十分必要【总需要进行实践】,因此,我们可以使用小模型,比如0.2B(bert的当量)来做些实验,因此,我们来推荐一个小模型开源项目。
愿大家在新的一年,理论与实践相结合,踏实前进。
一、大模型用于信息抽取的几个有趣问题
《Large Language Models for Generative Information Extraction: A Survey》(地址:https://arxiv.org/pdf/2312.17617.pdf)这一工作对大模型进行生成式信息抽取做了综述,很有趣,大家可以看看。
对应的综述工作放在:https://github. com/quqxui/Awesome-LLM4IE-Papers
其中几个比较重点的,可以看看数据集、基于NL-LLMs和Code-LLMs用于统一信息抽取以及信息抽取数据增强上的一些思路。
1、关于信息抽取的数据集
目前关于信息抽取的数据集,我们在之前的文章《也看面向知识图谱构建的垂直微调大模型:KnowLM、TechGPT看指令数据生成方式及开放信息抽取数据集》(https://mp.weixin.qq.com/s/Ub22ksWgOUia1dGVzDw1tg) 中有系统整理过。
该工作也做了系统梳理,可以从下看出:
2、关于NL-LLMs和Code-LLMs用于统一信息抽取
统一信息抽取Uni-IE的提示格式通常可分为基于自然语言的LLMs(NL-LLMs)和基于代码的LLMs(code-LLMs)。
其中:
1)基于自然语言的方法
将所有IE任务统一到一个通用的自然语言模式中。例如:
UIE《Unified Structure Generation for Universal Information Extraction》(https://aclanthology.org/2022.acl-long.395.pdf) 提出一个统一的从文本到结构的生成框架,该框架可对外延结构进行编码,并通过结构化提取语言捕捉常见的IE能力。
InstructUIE《InstructUIE: Multi-task Instruction Tuning for Unified Information Extraction》(https://arxiv.org/pdf/2304.08085.pdf) 通过结构化专家编写的指令来微调LLM,从而增强UIE,以一致地模拟不同的IE任务并捕捉任务间的依赖性。
ChatIE《Zero-Shot Information Extraction via Chatting with ChatGPT》(https://arxiv.org/pdf/2302.10205.pdf) 探索了如何在zero-shot提示中使用GPT3和ChatGPT等LLM,将任务转化为多轮问题解答问题。
2)基于代码的方法
通过生成具有统一编程模式的代码来统一IE任务。例如:
Code4UIE《Retrieval-Augmented Code Generation for Universal Information Extraction》(https://arxiv.org/pdf/2311.02962.pdf) 提出一个通用的检索增强代码生成框架,利用Python类来定义模式,并使用上下文学习来生成从文本中提取结构知识的代码。
CodeKGC《CodeKGC: Code Language Model for Generative Knowledge Graph Construction》(https://arxiv.org/abs/2304.09048) 利用代码中固有的结构知识,并采用模式感知提示和理性增强生成来提高性能。
GoLLIE《GOLLIE : ANNOTATION GUIDELINES IMPROVE ZERO-SHOT INFORMATION-EXTRACTION》(https://arxiv.org/pdf/2310.03668.pdf) 通过微调LLMs以符合标注要求,从而提高未见IE任务的zero-shot性能。
这两种方法都各有千秋,例如:
基于自然语言的方法可在广泛的文本中进行训练,并能理解和生成人类语言,从而使提示和说明更简洁、更易于设计,但由于IE任务的语法和结构与训练数据不同,NL-LLMs可能难以生成不自然的输出结果。
而对于基于代码的方法上,代码作为一种形式化的语言,具有在不同模式中准确再现知识的内在能力,因此更适合结构预测,基于代码的方法需要大量文本来定义Python类别,这反过来又限制了上下文的样本量。
3、关于大模型用于数据增强的一些思路
信息抽取最大的问题就是训练数据的问题,如何进行标注数据生成,其涉及到多种方法。数据增强涉及生成有意义的多样化数据,以有效增强训练示例或信息,同时避免引入不切实际、误导性和偏移的模式。
如图4所示,可大致分为三种策略。
1)数据标注
这种策略直接使用LLM生成标注数据。
例如:
LLMaAA《LLMaAA: Making Large Language Models as Active Annotators》(https://arxiv.org/pdf/2310.19596.pdf) 通过在主动学习环路中使用LLMs作为标注器来提高准确性和数据效率,从而优化标注和训练过程。
AugURE《Improving Unsupervised Relation Extraction by Augmenting Diverse Sentence Pairs》(https://arxiv.org/pdf/2312.00552.pdf) 采用句内对增强和跨句对提取的方法来增强无监督关系抽取的证样本多样性,并为句子对引入边际损失。
2)知识检索
该策略从LLMs中检索相关知识,用于IE。例如:
PGIM《Prompting ChatGPT in MNER: Enhanced Multimodal Named Entity Recognition with Auxiliary Refined Knowledge》(https://aclanthology.org/2023.findings-emnlp.184.pdf) 为多模态NER提出了一个两阶段框架,利用ChatGPT作为隐式知识库,启发式地检索辅助知识,以提高实体预判词的效率。
Amalvy《Learning to Rank Context for Named Entity Recognition Using a Synthetic Dataset》(https://arxiv.org/abs/2310.10118) 提出通过生成合成上下文检索训练数据集和训练神经上下文检索器来改进长文档的NER。
3)反向生成
这种策略促使LLMs根据输入的结构数据生成自然文本或问题,与大模型的训练范式相一致。例如:
SynthIE《Exploiting Asymmetry for Synthetic Training Data Generation: SynthIE and The Case of Information Extraction》(https://arxiv.org/abs/2303.04132) 使用输入的结构数据生成自然文本。
STAR《STAR: Improving Low-Resource Information Extraction by Structure-to-Text Data Generation with Large Language Models》(https://arxiv.org/pdf/2305.15090.pdf) 根据触发词和论据生成结构,然后用LLM生成段落。
这些策略也有自己的特点,例如:
数据标注可以直接满足任务要求,知识检索可以提供更多关于实体和关系的信息,但它存在幻觉问题,而且会引入噪音。反向生成能够更好地生成结果,但需要结构化数据,而且生成的对与领域之间存在差距。
二、可用于练手的小模型ChatLM-Chinese-0.2B
现在的大语言模型的参数往往较大,消费级电脑单纯做推理都比较慢,但如何能够低成本地学习其中的一些方法和流程,十分必要【总需要进行实践】
根据该项目的描述:
ChatLM-mini-Chinese为基于T5的中文对话小模型,模型参数只有0.2B(算共享权重约210M),可以在最低4GB显存的机器进行预训练(batch_size=1,fp16或者 bf16),float16加载、推理最少只需要512MB显存。
该项目对生成式语言模型的训练流程,包括数据清洗、tokenizer训练、模型预训练、SFT指令微调、RLHF优化等进行了整理。
很自然的,该项目并不具备实用性【与大模型相比,并没有效果优势,甚至是bert有监督模型】,如在三元组抽取上,将百度三元组抽取数据集公开的dev数据集作为测试集,对比传统方法pytorch_IE_model(基于bert),微调后的效果并无优势。
但该项目可以作为入门级的朋友进行流程实践。
地址:github.com/charent/ChatLM-mini-Chinese
参考文献
1、https://arxiv.org/pdf/2312.17617.pdf
2、github.com/charent/ChatLM-mini-Chinese
总结
本文主要介绍了关于信息抽取的几个有趣的工作,包括有哪些数据集,有哪些统一信息抽取范式以及如何利用大模型进行数据增强,是我们比较关注的三个话题,因此,本文先谈谈这个话题。
此外,我们还推荐了一个小模型开源项目,这个对于提高我们的实践能力,有很大帮助,大家可以多实践。
关于我们
老刘,刘焕勇,NLP开源爱好者与践行者,主页:https://liuhuanyong.github.io。
老刘说NLP,将定期发布语言资源、工程实践、技术总结等内容,欢迎关注。
对于想加入更优质的知识图谱、事件图谱、大模型AIGC实践、相关分享的,可关注公众号,在后台菜单栏中点击会员社区->会员入群加入。