大家好,我是东方财富的一名算法工程师,这里分享一些利用大模型赋能知识图谱建设的一些实践。

为什么知识图谱需要大模型

在金融场景中,天然会有大量结构化的数据需要投入大量的人力去生产和维护,而这样的数据又会大量被应用在下游的标签、推荐、风控等场景。比如基金关联的基金经理,基金净值,基金重仓股等信息,需要从各个基金公司的公告信息中进行提取。

做个类比,在 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 构建知识图谱的更多相关文章

  1. Redis闲谈(1):构建知识图谱

    场景:Redis面试 (图片来源于网络) 面试官: 我看到你的简历上说你熟练使用Redis,那么你讲一下Redis是干嘛用的? 小明: (心中窃喜,Redis不就是缓存吗?)Redis主要用作缓存,通 ...

  2. springboot2.0+Neo4j+d3.js构建知识图谱

    Welcome to the Neo4j wiki! 初衷这是一个知识图谱构建工具,最开始是对产品和领导为了做ppt临时要求配合做图谱展示的不厌其烦,做着做着就抽出一个目前看着还算通用的小工具 技术栈 ...

  3. 中文维基百科分类提取(jwpl)--构建知识图谱数据获取

    首先感谢 : 1.https://blog.csdn.net/qq_39023569/article/details/88556301 2.https://www.cnblogs.com/Cheris ...

  4. [知识图谱]Neo4j知识图谱构建(neo4j-python-pandas-py2neo-v3)

    neo4j-python-pandas-py2neo-v3 利用pandas将excel中数据抽取,以三元组形式加载到neo4j数据库中构建相关知识图谱 Neo4j知识图谱构建 1.运行环境: pyt ...

  5. Atitit 知识图谱的数据来源

    Atitit 知识图谱的数据来源   2. 知识图谱的数据来源1 a) 百科类数据2 b) 结构化数据3 c) 半结构化数据挖掘AVP (垂直站点爬虫)3 d) 通过搜索日志(query record ...

  6. 1. 通俗易懂解释知识图谱(Knowledge Graph)

    1. 通俗易懂解释知识图谱(Knowledge Graph) 2. 知识图谱-命名实体识别(NER)详解 3. 哈工大LTP解析 1. 前言 从一开始的Google搜索,到现在的聊天机器人.大数据风控 ...

  7. 知识图谱+Recorder︱中文知识图谱API与工具、科研机构与算法框架

    目录 分为两个部分,笔者看到的知识图谱在商业领域的应用,外加看到的一些算法框架与研究机构. 文章目录 @ 一.知识图谱商业应用 01 唯品金融大数据 02 PlantData知识图谱数据智能平台 03 ...

  8. Task1:知识图谱介绍(1天)

    一.知识图谱简介 "知识图谱本质上是语义网络(Semantic Network)的知识库".但这有点抽象,所以换个角度,从实际应用的角度出发其实可以简单地把知识图谱理解成多关系图( ...

  9. 知识图谱顶刊综述 - (2021年4月) A Survey on Knowledge Graphs: Representation, Acquisition, and Applications

    知识图谱综述(2021.4) 论文地址:A Survey on Knowledge Graphs: Representation, Acquisition, and Applications 目录 知 ...

  10. Atitit 知识图谱解决方案:提供完整知识体系架构的搜索与知识结果overview

    Atitit 知识图谱解决方案:提供完整知识体系架构的搜索与知识结果overview   知识图谱的表示和在搜索中的展1 提升Google搜索效果3 1.找到最想要的信息.3 2.提供最全面的摘要.4 ...

随机推荐

  1. Sphinx 配置文件说明

    一.    创建sphinx.conf文件 其结构组成主要如下: Source 源名称1{                //指定数据源 一些配置 } Index 索引名称1{ Source=源名称1 ...

  2. python函数参数与类参数

    python关于函数的一些应用 前言 鉴于python3与python2有些不同,看到某些代码时可能会感到疑惑,就稍微记录一下. 一.不限制个数的函数参数 1.*args 以此为参数,会被python ...

  3. 谷歌浏览器配置vue调试工具

    1.下载调试工具 下载地址:Vue Devtools_6.1.4_chrome扩展插件下载_极简插件 点击推荐下载 2.解压下载的压缩文件: 3.打开chrome浏览器,进入chrome://exte ...

  4. Java关键字以及标识符

    Java中有许多关键字,关键字是什么意思呢? 我用自己的分析来表达一下吧. Java就是源自于生活的,我们都有自己的名字.所以它也会有许多的名字,每个名字都有各自不同的特性(作用),都是系统定义好的. ...

  5. Python tkinter 进度条代码

    1 import tkinter as tk 2 import time 3 4 # 创建主窗口 5 window = tk.Tk() 6 window.title('进度条') 7 window.g ...

  6. 程序猿要chatpgpt干掉了?

    如何拥抱被chatpgpt拉开的人工智能大时代 昨天 chatgpt-4 发布了.我看到好多技术圈的人都惶恐着,以后咱们都要失业了/(ㄒoㄒ)/~~ 和之前差不多的是毫无意外地又引动了一大波舆论.虽然 ...

  7. 干货|工作中要使用Git,看这篇文章就够了

    本文将从 Git 入门到进阶.由浅入深,从常用命令.分支管理.提交规范.vim 基本操作.进阶命令.冲突预防.冲突处理等多方面展开,足以轻松应对工作中遇到的各种疑难杂症,如果觉得有所帮助,还望看官高抬 ...

  8. Rust中的函数指针

    什么是函数指针 通过函数指针允许我们使用函数作为另一个函数的参数.函数的类型是 fn (使用小写的 "f" )以免与 Fn 闭包 trait 相混淆.fn 被称为 函数指针(fun ...

  9. 2023-01-14:给定一个二维数组map,代表一个餐厅,其中只有0、1两种值 map[i][j] == 0 表示(i,j)位置是空座 map[i][j] == 1 表示(i,j)位置坐了人 根据防

    2023-01-14:给定一个二维数组map,代表一个餐厅,其中只有0.1两种值 map[i][j] == 0 表示(i,j)位置是空座 map[i][j] == 1 表示(i,j)位置坐了人 根据防 ...

  10. JavaWeb概念

    1 基本概念 1.1 前言 web开发: web,网页的意思,类如:www.baidu.com 静态web: html,css 提供给所有人看到的数据始终不会改变! 动态web: 几乎所有的网站:类如 ...