与 AI 同行,利用 ChatGLM 构建知识图谱
大家好,我是东方财富的一名算法工程师,这里分享一些利用大模型赋能知识图谱建设的一些实践。
为什么知识图谱需要大模型
在金融场景中,天然会有大量结构化的数据需要投入大量的人力去生产和维护,而这样的数据又会大量被应用在下游的标签、推荐、风控等场景。比如基金关联的基金经理,基金净值,基金重仓股等信息,需要从各个基金公司的公告信息中进行提取。
做个类比,在 1.0 时代,我们会利用大量的规则和人力去提取和校验相应的数据,但这种方法往往需要针对特定的文本内容去维护各自的规则,成本较高。在 2.0 时代我们可以构建相应的深度学习模型,去辅助完成 NER、实体链接等工作。在这个过程中,数据的清洗,标注和训练,往往需要非常专业的标注人员和算法开发参与,而且其准确率需要大量的工作来提高。在大模型时代,我们发现 ChatGPT 能以一个相对非常高的准确率去完成各式各样的任务,这也让我们有一个想法,是否可以利用大模型去辅助我们建设知识图谱(毕竟不是啥业务都上得起大模型,一个图谱能解决下游很多任务)。
通过一些实践发现,ChatGPT 的确可以根据海量文本数据自动生成实体、属性和关系三元组等知识元素,从而快速构建大规模的知识图谱。
利用 ChatGPT 构建知识图谱
社区里已经有不少利用 ChatGPT 甚至 GPT4 构建知识图谱的案例:
假设我们已经在图数据库中建了一些节点,囊括了所以上市公司,我们的目标是想构建一个关于上市公司的知识图谱,包括董事长,上市时间等信息。
这里推荐修改下面的代码,构建相应的知识图谱:https://github.com/cocacola-lab/ChatIE,我们只需将预设的实体类型和关系类型修改成我们需要的种类,就能实现零样本的大规模知识图谱构建,当然能用 GPT4 的话效果更佳。
本地部署的 ChatGLM 方案
考虑到本地部署的数据隐私问题,也可以将 ChatIE 中的 ChatGPT 接口换成 ChatGLM-6B,理论上可以接近 ChatGPT 的效果。
但在实际应用中,我们发现 ChatGLM 虽然具备了一定的内容抽取和链接能力,但是生成内容的可控性较差。
比如我们希望令模型按(实体1,实体2,...)或者 实体1 关系1 实体2 \n这样的格式输出结果,可以在大模型的输入中添加:不要编造答案,并严格按照(实体1,实体2,...)的格式回答,不要有额外内容“ 类似的话。
但往往结果中还是有大量不可控的内容,需要做大量的正则匹配去清洗数据。
在后来的尝试中,我们在 ChatGLM 中前置了两轮对话达到了较好的效果。具体的代码 demo 可以参考
利用 ChatGLM 进行金融知识抽取,具体的效果演示参考下图:

当然这只是一个初级的 demo,后续还有更多利用 ES 和 NebulaGraph 进行校验和应用的代码,欢迎大家进行讨论。
同主题线上分享
如果你对 LLM、知识图谱感兴趣,可以看看同主题的线上分享:和 LLM、图数据库从业者一起夜谈这波 AI 风
与 AI 同行,利用 ChatGLM 构建知识图谱的更多相关文章
- Redis闲谈(1):构建知识图谱
场景:Redis面试 (图片来源于网络) 面试官: 我看到你的简历上说你熟练使用Redis,那么你讲一下Redis是干嘛用的? 小明: (心中窃喜,Redis不就是缓存吗?)Redis主要用作缓存,通 ...
- springboot2.0+Neo4j+d3.js构建知识图谱
Welcome to the Neo4j wiki! 初衷这是一个知识图谱构建工具,最开始是对产品和领导为了做ppt临时要求配合做图谱展示的不厌其烦,做着做着就抽出一个目前看着还算通用的小工具 技术栈 ...
- 中文维基百科分类提取(jwpl)--构建知识图谱数据获取
首先感谢 : 1.https://blog.csdn.net/qq_39023569/article/details/88556301 2.https://www.cnblogs.com/Cheris ...
- [知识图谱]Neo4j知识图谱构建(neo4j-python-pandas-py2neo-v3)
neo4j-python-pandas-py2neo-v3 利用pandas将excel中数据抽取,以三元组形式加载到neo4j数据库中构建相关知识图谱 Neo4j知识图谱构建 1.运行环境: pyt ...
- Atitit 知识图谱的数据来源
Atitit 知识图谱的数据来源 2. 知识图谱的数据来源1 a) 百科类数据2 b) 结构化数据3 c) 半结构化数据挖掘AVP (垂直站点爬虫)3 d) 通过搜索日志(query record ...
- 1. 通俗易懂解释知识图谱(Knowledge Graph)
1. 通俗易懂解释知识图谱(Knowledge Graph) 2. 知识图谱-命名实体识别(NER)详解 3. 哈工大LTP解析 1. 前言 从一开始的Google搜索,到现在的聊天机器人.大数据风控 ...
- 知识图谱+Recorder︱中文知识图谱API与工具、科研机构与算法框架
目录 分为两个部分,笔者看到的知识图谱在商业领域的应用,外加看到的一些算法框架与研究机构. 文章目录 @ 一.知识图谱商业应用 01 唯品金融大数据 02 PlantData知识图谱数据智能平台 03 ...
- Task1:知识图谱介绍(1天)
一.知识图谱简介 "知识图谱本质上是语义网络(Semantic Network)的知识库".但这有点抽象,所以换个角度,从实际应用的角度出发其实可以简单地把知识图谱理解成多关系图( ...
- 知识图谱顶刊综述 - (2021年4月) A Survey on Knowledge Graphs: Representation, Acquisition, and Applications
知识图谱综述(2021.4) 论文地址:A Survey on Knowledge Graphs: Representation, Acquisition, and Applications 目录 知 ...
- Atitit 知识图谱解决方案:提供完整知识体系架构的搜索与知识结果overview
Atitit 知识图谱解决方案:提供完整知识体系架构的搜索与知识结果overview 知识图谱的表示和在搜索中的展1 提升Google搜索效果3 1.找到最想要的信息.3 2.提供最全面的摘要.4 ...
随机推荐
- 记一次 MySQL 主从同步异常的排查记录,百转千回
你好,我是悟空. 这是悟空的第 183 篇原创文章 官网:www.passjava.cn 本文主要内容如下: 一.现象 最近项目的测试环境遇到一个主备同步的问题: 备库的同步线程停止了,无法同步主库的 ...
- vue-element-admin 动态菜单改造
vue-element-admin 动态菜单改造 vue-element-admin 是一款优秀后台前端解决方案,它基于 vue 和 element-ui实现.开源后台管理系统解决方案项目 Boot- ...
- python:冒泡排序(Bubble Sort)超详细教程!
关于排序,真的非常的重要.数据可以从小到大排序,也可以从大到小排序.这样对于一个有序的数据,我们处理起来就很方便,这对于我们的工作帮助是很大的. 那么你拿到一组无序的数据,你将要如何去处理它呢? 冒泡 ...
- Java双向链表实现队列
将双向链表做简单的改造,即可实现一个FIFO(First Input First Out)队列, 该队列只在头节点出队,尾节点入队. 一般来说定义节点类只需一个后驱节点next即可. 这里保留pre节 ...
- 笔记二:进程间的通信(fork、孤儿进程,僵死进程等)
以下是以前学习<unix环境高级编程>时的一些笔记和测试代码,好久没看过了,没有再次验证,存在错误的话,希望见谅,分享下主要是!!! ps 查看系统中的进程 ps– ...
- #Powerbi 理解VAR函数
VAR意思即为变量,在编程语言中,变量是一个重要概念,DAX作为一种语言也有变量概念,利用VAR,我们可以缩短我们一些DAX语句的长度,更清晰的表达我们的度量值计算逻辑. 举例说明: 我们要计算一个产 ...
- 2023-03-22:给定一个字符串str, 如果删掉连续一段子串,剩下的字符串拼接起来是回文串, 那么该删除叫做有效的删除。 返回有多少种有效删除。 注意 : 不能全删除,删成空串不允许, 字符串长
2023-03-22:给定一个字符串str, 如果删掉连续一段子串,剩下的字符串拼接起来是回文串, 那么该删除叫做有效的删除. 返回有多少种有效删除. 注意 : 不能全删除,删成空串不允许, 字符串长 ...
- 2022-07-21:给定一个字符串str,和一个正数k, 你可以随意的划分str成多个子串, 目的是找到在某一种划分方案中,有尽可能多的回文子串,长度>=k,并且没有重合。 返回有几个回文子串。 来
2022-07-21:给定一个字符串str,和一个正数k, 你可以随意的划分str成多个子串, 目的是找到在某一种划分方案中,有尽可能多的回文子串,长度>=k,并且没有重合. 返回有几个回文子串 ...
- 2020-12-29:mysql中,innodb表里,某一条数据删除了之后,这条数据会被真实的擦掉吗,还是删除了关系?
福哥答案2020-12-29:[答案来自此链接,答案相当详细:](https://www.zhihu.com/question/436957843)面试的时候受 <MySQL技术内幕 InnoD ...
- 2021-03-12:go中,如何确定有没有内存泄露,系统里怎么去监控整体的运行情况,日志是怎么处理的?
2021-03-12:go中,如何确定有没有内存泄露,系统里怎么去监控整体的运行情况,日志是怎么处理的? 福哥答案2021-03-12: runtime/pprof:采集程序(非 Server)的运行 ...