语言模型的中文识字率有多大及如何利用ChatGPT加速知识图谱数据标注:2个代表工作解析与思考
作者: 老刘说NLP 来源: [老刘说NLP](https://mp.weixin.qq.com/s/uJ_UQ_BnMForv5mCbTKd6w)
今天是7月4日,北京一早下了雨,路面湿答答的,久违的清爽。
我们今天来看看大模型的一些可解释性的工作,并且再看看大模型怎么来提升自动化标注工具的效率,最终加速知识图谱构建。
最近看到2份工作很有趣,一个是语言模型中文识字率分析项目,介绍了如何通过embedding来分析语言模型对字符的理解。
一个是CollabKG,一个基于ChatGPT的“人机合作”知识图谱构建工具工作,提出了如何利用大模型自动化标注以提升标注速度,思路也很有趣。
本文对这两个工作进行介绍,供大家一起思考并参考。
一、语言模型中文识字率分析与向量可解释
本项目的是为了调查各个语言模型的中文识字率的情况,以此可以作为后续模型评估分析的参考。
地址:https://github.com/twang2218/vocab-coverage
跟作者聊过这个项目的想法,作者最开始是做汉字识别率的分析,因为当时对大模型对汉字处理到底是一个什么情况没有概念,所以分析了一下tokenizer。后来开始进一步的理解词表的向量分布是否可以反映出模型对于语义上理解的学习程度。再后来,就进一步去理解词的向量在输入端和输出端的差异。
那么是怎么做的呢?为了分析模型的中文识字率,一共使用三个常用的字符集,总共21267个汉字,而对于语言模型是否认知某个汉字的判断,通过对应语言模型所使用的 Tokenizer 是否可以对该汉字进行 encode 来判断。
判定的依据也很有意思,设定了几条原则:如果模型对该汉字的编码结果为空,模型对该汉字的编码结果为 unk_token_id,则认定模型不认识某汉字,如果模型对该汉字的编码结果长度为1,则认为模型认识某汉字。
一般来说,如果编码结果长度大于1,这有可能是因为使用了BPE的原因,一个不常出现的汉字被拆分成了多个token,比如LLama。由于汉字被以UTF-8的形式编码,拆散该编码并不能体现汉字语义,因此,一个汉字被打散的编码越多,可以认为该模型对该汉字的认知程度可能越低。
所以,对于编码结果长度大于1的情况,可以认为该模型对该汉字的认知程度为1/len(encode_result),用以控制半透明程度。 在识字率的计数中,将计数为0。
那么这个工作可以用来做什么,作者列举了一些例子。
1、语言模型是否对语言进行了对齐
对于多语言的模型,如果红绿间杂,放大模型看细节,很容易看出是否是多语言对齐的模型,多语言对齐,应该有助于模型的多语言的理解能力;
比如,sentence-transformers/paraphrase-mutilingual-MiniLM-L12-v2 模型,输入端的词向量分布图,呈现明显的小堆聚集的情况,放大来看,可以看到同一个语义的不同国家语言词汇汇聚到了一起,这说明这个模型多国语言对齐了。
而没有多语言对齐的,却经过多语言语料训练的,会形成另一种形态,词向量分布按语言汇聚。
这个就是经过多国语言训练后的模型,可以看到同一种语言聚在了一起,而且也可以看出来,这个模型主要是用英语训练的,因为英文是最大的一堆。
这个是text2vec-base-multilingual 输入词表的embedding分布图,放大后可以看到,多语言对齐了。这个模型不止中英文检索,还可以其它语言法语德语什么的同样语义的检索。
其中的多语言对齐,是指不同的语言的 文本内容,转换成 embedding 之后, 可以计算跨语言的语义相似度。
而与此相比, text-embedding-ada-002 里面的图,中文是聚集在一块地方的,虽然也对齐了,但是由于词表中汉字较少,所以不明显。扎堆的汉字说明可能有一部分的汉字没能训练出明确的语义,这个在很多中文模型中也有这种现象,会有两堆,一堆有局部结构的连结,而另一堆,比较浅的那堆,是均匀分布,没有什么局部结构,说明这部分在词这个级别没有训练出语义。
又如,用这种方法查看大模型,也可以一窥端倪,比如清华的ChatGLM-6B就是中英文对齐的,而ChatGLM2-6B,就不是中英文对齐的[此处存疑]。
2、语言模型是否支持多语言模型
通过这种方法,可以很容易从输入端的词向量分布图上看出模型是否支持多语言,分布图中的中英文分别为红色和绿色,从红色或者绿色的占比,就可以轻易的看出这个模型是否只支持英文,或者只支持中文,或者两者都支持;
这两个模型就很明显,一个完全不认识中文字,一个基本是只认识中文字。
3、对于词表分布,可以看出哪一部分是训练出语义的
这部分词表内容形成的图,呈现小段的连结关系,训练的语义越高级,结构越复杂;而没有训练出语义的,会呈现每个词有一个独立空间的随机分布的;
训练有效果的字词,在绘制出来后,能感觉互相之间是有连接性的,有一定的拓扑关系。但是没能充分训练的字词,明显呈现了均匀分布,互相之间没有远近关系。这应该是保持了原始的随机分布特征。而这部分绝大多数都是中文子词的后缀部分。这就引出了下一个可能的规律。
4、关于模型训练与适用性上的一些发现
首先。对于子词的概念,或许不适合中文,因为看到的输入端词表分布中,基本所有的后缀词(粉色)都是随机分布的。这部分词表一句话的语义理解贡献应该比较低,因此,子词的概念,或许不适合中文;
其次,英文模型训练要比中文模型训练的更充分。因为英文词表分布中大约只有1/4的词呈现随机分布,而中文词表分布中大约有1/2的词呈现随机分布,说明中文词表中的词,有更多没有训练出语义。这或许反映了用于中文训练的语料多样性不够,从另一个角度来说,中文模型还有潜力可挖。
此外,模型微调的效果,或许可以通过对比输出端的embedding分布图可以看出一定的规律,同一个模型经过不同的微调训练后,输出端的差异还是很明显的。
如上图所示,作为衍生模型,由于所用语料有所不同,形成的输出端的词向量分布图差异非常大,现在还无法解释这种差异表达的含义具体是什么,还需要进一步观察不同的语料、不同的训练方法、不同的评估分数对应输出端的分布图是否具有什么特定的规律。这些都是可以进一步探究的内容。
对于进一步的细节,可以查看github项目,该工作还对BERT等模型进行了中文覆盖率、输入词向量分布以及输出词向量之间的差异,这种可视化的方式很有意思。例如,可以发现,在向量空间,繁体字和简体字完全重叠,也就是说在语言模型内部,其实不分简繁体,简繁之争在这里终结了。
接下来,作者有两个方向会去尝试,一个是模型各层的embedding分布的可视化,争取看到一个变化过程;另一个是对数据集经过某个模型后的分布情况,看到一个过程,这个工作其实十分有趣。
二、CollabKG:基于ChatGPT的“人机合作”知识图谱构建工具
在知识图谱的工业应用中,推进智能化进程的核心目的是保证可靠性的同时降本增效,在不能保证自动标注100%准确性的前提下,需要“人机合作”。
以实体为中心和以事件为中心的知识图谱(KG和EKG,统称为 (E)KG)是用于描述现实世界中的概念及其关系的结构化语义知识库,是过去和现在都十分重要的结构化任务的需求方。
信息提取(IE)技术是构建或补充(E)KGs的有效方法,所以相应的自动标注工具(toolkit)是至关重要的。有大量现有的用于 IE 标注的开源工具。 然而现存的开源工具仍然存在一些重要的问题,阻碍了实际应用的适用性和有效性,如下图所示,对比了当前开源的一些信息抽取工具。
具体分析,我们可以看到,
首先,IE任务分为命名实体识别 (NER)、实体关系三元组提取 (RE) 和事件提取 (EE)。大部分现存工具不能够全面支持多个任务,也不能同时支持KG和EKG。
其次,大部分现存工具不能全面支持人工标注和机器自动标注两种模式,以及两者之间的交互性。
最后,耗时性,易用性,是否适用低资源场景,是否支持多语言等。
针对这些问题,论文 《CollabKG: A Learnable Human-Machine-Cooperative Information Extraction Toolkit for (Event) Knowledge Graph Construction》 提出了CollabKG,一个可学习的“人机合作”式知识图谱构建工具。
根据该工作的介绍,CollabKG统一了NER、RE和EE任务,整合了KG和EKG,支持英文和中文语言。并结合了自动和人工标注,建立了一个可学习的人机合作系统,人工标注以在线方式为机器的自我更新提供参考。此外,CollabKG还设计了许多其他的应用功能。 经过人工评估表明,CollabKG能够显著提高人工注释的效率和效益,并减少差异。
论文地址:https://arxiv.org/pdf/2307.00769.pdf
Demo: https://www.youtube.com/@xiangwei-ih5gg
三、多任务统一(UIE;Universal Information Extraction)的实现
CollabKG统一NER、RE、EE三个IE任务,并集成KG和EKG构建。这个其实在去年的UIE中就已有介绍。
为了统一这些任务,首先观察它们的方案并总结它们之间的转换规则。然后,我们利用这些转换规则统一整合这三种方案,并设计一种注释格式以适应统一的方案。
我们先看看三个任务的区别:
NER旨在从给定文本中找到具有特定预设实体类型的实体。例如,给定预设类型列表[PER, LOC, ORG, MISC]和句子 “James在日本首都东京为Google工作。",这些实体应该被识别: PER:James, ORG:Google, LOC:Tokyo, LOC:Japan。
RE的目的是找到成对的实体,预测它们之间的关系并形成三元组。例如,给定句子 “Mr.Johnson在2005年赛季前退役,并短暂地担任波士顿WBZ电视台的足球分析员。",这个三要素是(Person:Mr.Johnson, person-company, Organization:WBZ-TV)。这个三元组中的第一个词叫主语,中间的词是关系,最后一个词叫宾语。
EE的目的是识别事件类型、触发器、涉及的论据和相应的角色。例如,给定句子 “昨天Bob和他的妻子在北京结婚了”,将Life:Marry作为事件类型,“结婚 “作为触发器,“Bob和他的妻子 “作为人,“昨天 “作为时间,“北京 “作为地点。
因此,可以从中找到三个任务的共性,并进行形式上的统一。
在表2中总结出来,可以看到三者的统一规则,其中:→表示进行转换。对于NER,E表示实体。对于RE,S,R,O分别代表主体,关系,对象。对于EE,E,T,R,A分别代表事件,触发器,角色,参数,而n表示参数的数量。_Type表示类型。_代表一个伪标记。
具体的转换规则如下:RE方案保持不变。NER方案可以归结为RE方案的实体部分。对于EE来说,如果把Trigger看作主语,Argument看作宾语,Role看作关系,可以发现很容易把EE结构分解成多个RE三元组的组合。通过转换规则,以RE为中心,转换NER和EE方案,从而统一了三个IE方案。因此,最终形成如下的三种任务的表示方式。
四、人机合作:人工标注与自动标注的机制
CollabKG同时支持手动标注和自动标注两种,并且两者可以互相转换。
首先,手动标注功能。 使用一种叫做 “markup"的字典结构来记录和管理标签,包括定义模式、识别实体、创建节点、识别关系、创建边、验证和细化、迭代等操作。
其次,自动标注功能。在这里,采用基于机器标注的方法,即基于 ChatIE(基于LLM和prompt的零样本信息抽取方法),这个我们在之前的文章中有介绍过。选取ChatIE的原因一方面是因为这个工作的效果,另一方面是可以通过prompt灵活地进行定制化,因为类型列表允许自定义,如表8所示。
此外,为了兼容事件抽取,该工作增加了与触发有关的提示模板,以便它能根据事件类型提取触发词,这样就可以根据事件类型来提取触发词。例如,使用以下提示模板:“当上述给定句子的事件类型为”<事件类型>“时,请识别相应的触发词。触发词是最清楚地表达事件发生的词或短语。只回答触发词,不回答多余的词。触发词是:”
我们再来看看是如何进行人工和自动标签之间的双向互动工作的,可以看下图。
1、自动标注辅助手动标注
CollabKG的自动标注模块首先收集当前信息以形成输入,包括任务、数据集和语言选择。
然后,前缀生成器使用当前文本搜索知识库(存储高频手动标注结果)以生成前缀提示,实现在模型中输入前缀提示以增强领域知识。例如,生成提示:Google的类型是ORG;James和Google之间的关系是person-company;
最后,标记生成器生成最终的提示,预测结果,并将其转换为标记供人工参考。届时,这些标记的属性被设置为待定状态,表明它们尚未处于接受状态,用户可以单击“接受”或“删除”按钮来接受或删除相应的标记。
2、手动标注反哺自动标注
该方案的思想在于处理高频的、信息量大的人工标注,并将其转换为特定的方案。然后,它通过将这些特定的方案添加到知识库中来更新CollabKG,以在以后的迭代中建立一个更强大的前缀生成器,这个过程称为 “可学习性”。
该工作认为,这种可学习性带来了很多好处,比如识别新兴概念、特定领域的术语、模棱两可的词语等等。例如,给一个电子产品报告中的文本 “he middle class likes using Apple.",模型可能不会将Apple识别为ORG,即第一次点击第二句的自动标注,它不会识别(Apple,ORG)。
但如果人类在另一个句子 “New Yorker really like Apple phones. “中手动将Apple标记为ORG,CollabKG执行模型更新,那么前缀提示 “Note: Apple is ORG in …; “将使模型成功识别。
换句话说,即用(Apple, ORG)标记第一句话并单击自动标记按钮时,模型将被更新,提示被追加,当再次点击第二句的自动标注按钮时,它会识别(Apple, ORG)。
总结
本文主要介绍了一个语言模型中文识字率分析项目,介绍了如何通过embedding来分析语言模型对字符的理解。以及一个CollabKG:基于ChatGPT的“人机合作”知识图谱构建工具工作,提出了如何利用大模型自动化标注以提升标注速度,思路很有趣。
关于大模型可解释性以及智能化的标注工具工作,感兴趣的可以进一步阅读论文跟项目代码,会有更多收获。
参考文献
1、Wei X, Cui X, Cheng N, et al. Zero-shot information extraction via chatting with chatgpt[J]. arXiv preprint arXiv:2302.10205, 2023.
2、Bikaun T, Stewart M, Liu W. QuickGraph: A Rapid Annotation Tool for Knowledge Graph Extraction from Technical Text[C]//Proceedings of the 60th Annual Meeting of the Association for Computational Linguistics: System Demonstrations. 2022: 270-278.
3、https://github.com/twang2218/vocab-coverage
4、https://arxiv.org/pdf/2307.00769.pdf
关于我们
老刘,刘焕勇,NLP开源爱好者与践行者,主页:https://liuhuanyong.github.io。
老刘说NLP,将定期发布语言资源、工程实践、技术总结等内容,欢迎关注。
对于想加入更优质的知识图谱、事件图谱实践、相关分享的,可关注公众号,在后台菜单栏中点击会员社区->会员入群加入。