利用大模型进行知识图谱问答的交互式系统LinkQ:兼看中文OCR代表方案、Benchmark及数据合成工具

 

今天是2024年6月15日,星期六,北京,天气晴。

6月份转眼已经过去一半,因此,乘着周末,老刘说NLP技术社区将于今晚迎来社区第21讲,做《2024年6月份半月度大模型&KG&RAG&文档智能相关进展》汇报,同时,跟第20讲一样,第二个panel也邀请了行业朋友做文档领域技术实践分享,欢迎大家一同参加。

近期看到一个很有趣的观点,来自图灵奖得主hinton的观点,很有启发,推荐看看:我们的大脑以权重的形式储存知识,它们使用这些权重来重构事件。如果事件是最近的,那么重构通常相当准确。如果事件是旧的,我们通常会在很多细节上出错(除非我们频繁地复习)。也就是记忆不是存储,而且是重构

在技术内容上,我们今天来看看两个问题,一个是中文OCR代表方案、Benchmark及数据合成工具,用来解决中文OCR的基本认知;一个是关于利用大模型进行知识图谱问答的交互式系统LinkQ,其中的一些交互式思路值得借鉴。

对了,

问题1:中文OCR代表方案、Benchmark及数据合成工具

OCR问题在整个文档理解中扮演着十分重要的角色,尤其是在中文文档领域,因此,我们来看看关于中文OCR领域的Benchmark内容。

前几年的一个工作 《Benchmarking Chinese Text Recognition: Datasets, Baselines, and an Empirical Study》(https://arxiv.org/abs/2112.15093),地址:https://github.com/FudanVI/benchmarking-chinese-text-recognition

其手动收集了来自公开竞赛、项目和论文的CTR数据集,并根据应用场景将数据集分为四类:场景(scene)、网络(web)、文档(document)和手写(handwriting)数据集。具体样例如下:

因为我们关注文档场景,所以主要看3个内容:

1、关于document datasets的数据合成

关于文档场景的OCR识别数据,可以进行合成,例如使用text_render,地址在:https://github.com/Sanster/text_renderer,https://github.com/oh-my-ocr/text_renderer

2、一些ocr的bad case

一个是Failure cases in the scene dataset

一个是Failure cases in the document dataset

一个是Failure cases in the handwriting dataset.

3、一些方案的表现水准

可看看一些模型在不同场景下的水准,指标是acc/ned:

对应的代码在:

CRNN: https://github.com/meijieru/crnn.pytorch;

ASTER: https://github.com/ayumiymk/aster.pytorch;

MORAN: https://github.com/Canjie-Luo/MORAN_v2;

SEED: https://github.com/Pay20Y/SEED;

SRN: https://github.com/PaddlePaddle/PaddleOCR;

SAR: https://github.com/liuch37/sar-pytorch;

TransOCR: https://github.com/FudanVI/benchmarking-chinese-text-recognition/tree/main/model

问题2:利用大模型进行知识图谱问答的交互式系统LinkQ

作为第二个问题,我们来看看关于知识图谱与大模型进展。也是最近的一个工作《LinkQ: An LLM-Assisted Visual Interface for Knowledge Graph Question-Answering》(https://arxiv.org/pdf/2406.06621),利用大型语言模型(LLM)辅助知识图谱(KG)查询的构建,通过自然语言问答简化传统复杂的图查询语言需求,其本质上就是一个利用大型语言模型(LLM)来精细化自然语言问题并将其转换为知识图谱(KG)查询的系统

代码放在:https://github.com/mit-ll/linkq,也可以体验其demo:https://mit-ll.github.io/linkq/

有几个点可看看:

1、为什么要干这个事儿

其设定目标有些启发,例如:

其一,支持来回对话(back-and-forth),将自然语言问题细化为精确查询。 用户可能对知识图谱中的数据提出开放式或针对性的问题。当问题是开放式时,LLM应该帮助用户细化搜索。重要的是,在保持用户问题语义意图的同时,生成一个结构良好、精确的KG查询。

其二,减少LLM生成错误信息的倾向。使用LLM生成KG查询可能导致错误的数据ID或错误的查询结果。应该采取措施减少这些情况的发生频率。

其三,预览LLM生成的查询信息以评估其准确性。 KG查询可能在计算上很昂贵。应该向用户展示查询的预览,包括相关信息,以帮助他们评估数据和查询的准确性。

其四,提供来自LLM和KG的多模态查询结果。 用户出于多种目的与KG进行问答。因此,查询结果应该以文本形式(供消费)和表格形式(供进一步分析)显示。尽可能地,LLM的结果摘要应该基于KG数据。

2、怎么干的这事儿?

整个流程如下所示,展示了LinkQ系统的示例工作流程,

可以看到,架构由以下几个主要部分组成:

A. Chat Panel(聊天面板):用户可以通过这个面板与LLM进行交互,提出特定或开放式问题;

B1.Query Editor(查询编辑器):查询预览面板的一部分,支持交互式编辑查询;

B2.Entity-Relation Table(实体-关系表):提供从知识图谱映射过来的数据ID,帮助用户评估LLM生成的查询的正确性;

B3.Query Graph(查询图):通过可视化查询的结构来展示知识图谱的底层架构;

C.Results Panel(结果面板):提供高一个清洁、可导出的表格以及基于查询结果的 LLM生成的摘要。

当然,从给出的例子中可以看到,其中的知识图谱使用的是SPARQL,具体的内部实现流程可以看下图:

其中,做知识图谱检索(text2cypher)最重要的是将数据映射到知识图谱,也就是做实体链接。因为使用各种LLMs生成KG查询时会经常生成错误的额实体和关系ID。

但是,微调一个LLM以记住KG中所有可能的实体、关系和属性ID在计算上是不切实际的。例如,WikidataKG拥有超过一亿个实体。即使KG的规模较小,任何对ID的维护更新都可能导致需要重新训练LLM。

因此,这个匹配的过程,更具备实操性的工作,实际上是做模糊匹配。

例如,该工作所采用的方法:

在实体链接方面,基于名称和上下文的模糊搜索实体。 具体地,利用模糊搜索,这样LLM就不必依赖于确切的实体名称来识别ID,而是根据用户问题的上下文从语义相似性中识别ID。系统指示LLM选择与用户问题上下文最匹配的实体ID,这种方法有助于处理重复和模糊的实体。例如,如果用户询问关于《教父》的票房总收入,LLM应该选择匹配电影的实体ID,而不是书籍系列。但是,这个的重点在于怎么来衡量这个相似性。

在实体关系和属性方面,给定实体,查找其关系和属性。 具体地,LLM采用类似的方法,在语义上搜索所有与用户原始问题紧密匹配的属性和关系。但这个搜索确保属性和关系实际上属于KG中的那个实体。例如,如果用户询问关于《教父》的票房总收入,LLM将寻找任何属于《教父》的属性或关系,这些属性或关系与票房名称相似。这个其实就会用到schema来进行约束搜索;

针对多跳查询问题。 需要具体遍历图以识别多跳关系,具体地,LLM从头部实体遍历到尾部实体,以识别多跳数据。例如,在映射问题“Google的创始人是谁,他们的出生日期是什么”的数据时,LLM需要从Google实体跳转到其创始人实体,以识别他们的出生日期属性。

综合来说,这个工作,做的更多的是一个工程的可视化。

总结

今天我们主要看了两个问题,一个是中文OCR代表方案、Benchmark及数据合成工具,用来解决中文OCR的基本认知;一个是关于利用大模型进行知识图谱问答的交互式系统LinkQ,其中的一些交互式思路值得借鉴。

看到一个有趣的生物学观点,复杂情感和自我意识是右脑前部的功能,而左脑前部负责复杂决策的制定。脑前叶是发育最晚的脑组织,大约在25岁左右,这很可能是内向孩子“大器晚成”的原因。大脑前叶主要帮助我们在事前作详细的计划。因此,25-31岁似乎是很值得去自律坚持实施的一个阶段,大家可以试试看。

参考文献

1、https://arxiv.org/abs/2112.15093

2、https://github.com/mit-ll/linkq

关于我们

老刘,刘焕勇,NLP开源爱好者与践行者,主页:https://liuhuanyong.github.io。

老刘说NLP,将定期发布语言资源、工程实践、技术总结等内容,欢迎关注。

对于想加入更优质的知识图谱、事件图谱、大模型AIGC实践、相关分享的,可关注公众号,在后台菜单栏中点击会员社区->会员入群加入。

相关推荐

  • ​DrissionPage,Python浏览器自动化又一神器~
  • 怒删180个服务器!39岁程序员被裁后实施报复,导致公司损失91.8万新币
  • 周鸿祎AI产品翻车事件始末,被群嘲后又惹上官司!被盗图者:我要的是公开道歉和1元RMB赔偿!
  • 他离开一年多了
  • 年费 12 万美元?在线赌场因 Cloudflare 涨价被迫停运
  • 《架构师》电子书下载:用过去的智慧引导 AI 变革
  • 服务调用延迟降低 10%-70%,字节跳动做了什么?
  • 中国软件行业被指“全军覆没”;微软 Copilot GPTs 宣布停服;苹果股价暴涨,“一夜飙升”1.56万亿!| Q资讯
  • 介绍一个 SpringBoot 集成各种场景的项目
  • 糊弄面试官系列:用最简洁的大白话把 Vue 原理讲清楚!!!
  • 7 个杀手级的 JS 一行代码
  • 如何利用 TypeScript 的判别联合类型提升错误处理与代码安全性
  • InnoDB 对 Buffer Pool 的奇思妙想
  • B站疯传!被严重低估的后端面试题库!
  • 大爆冷!17岁中专生吊打一众名校生!
  • 前腾讯员工:从北京回了老家,进了小厂,​跟之前在腾讯比,年包缩水了一大截,强度却跟腾讯差不多大
  • 同事月薪6800,端午节后上班就收拾东西,她说组长给领导反馈说,因为自己端午放假没接电话,把项目验收给耽误了!
  • 为什么你拿不到高薪?一定是犯了这6个错误:1、只顾着默默干活,2、不及时汇报工作进度,3、遇事不沟通硬抗,4、容易被上级情绪左右
  • 防止暴力破解,教你如何在登录失败后实施10分钟账户锁定策略!
  • 今日AI资讯-20240615