几行代码构建知识图谱:SmoothNLP知识三元组抽取与可视化完整Demo
2026/9/19 6:58:04 网站建设 项目流程

几行代码构建知识图谱:SmoothNLP知识三元组抽取与可视化完整Demo

【免费下载链接】SmoothNLP专注于可解释的NLP技术 An NLP Toolset With A Focus on Explainable Inference项目地址: https://gitcode.com/gh_mirrors/smo/SmoothNLP

SmoothNLP是一个专注于可解释 NLP 技术的开源工具集,其中的知识图谱(KG)模块可以仅用几行代码就从中文文本中抽取知识三元组(主语-关系-宾语),并一键生成可视化图谱。本文带你完成一次完整的知识抽取 Demo:从安装、三元组抽取,到 NetworkX 有向图与 matplotlib 可视化,全程无需复杂配置。

🧩 什么是知识三元组抽取

知识图谱的核心数据结构是N 元组。SmoothNLP 的 kg 模块 对每个抽取结果返回 5 个字段:

字段含义示例
subject主语(对象1)上海培罗蒙西服公司
object宾语(对象2)有限公司
action连接关系
type关系类型(state/prep/num/action)state
_conf_score置信概率0.9266

得益于 SmoothNLP "可解释推理"的设计,每条三元组都能追溯到原始句子与词法关系,这在基于深度黑盒模型的知识抽取工具中并不多见。

🚀 快速上手:两步完成知识抽取

第 1 步:安装 SmoothNLP

pip install smoothnlp

第 2 步:调用kg.extract抽取三元组

from smoothnlp import kg text = "上海培罗蒙西服公司成立于1928年,总部位于上海,是一家西服制作有限公司" rels = kg.extract(text) for rel in rels: print(rel['subject'], rel['action'], rel['object'], rel['_conf_score'])

输出结果:

上海培罗蒙西服公司 是 有限公司 0.92668116 上海培罗蒙西服公司 成立 于1928年 0.87661725 上海培罗蒙西服公司 是 于上海 0.77132225

💡 参数小贴士:

  • text支持str[str],长文本会被自动切句;
  • pretty=True(默认)会对词组结果进行合并,让三元组更通顺;
  • 抽取逻辑封装在 smoothnlp/algorithm/kg/init.py 中,可阅读源码理解细节。

🕸️ 可视化:把三元组变成有向图

拿到三元组列表后,用kg.rel2graph构建 NetworkX 有向图,再用kg.graph2fig渲染成图,整个过程不需要手动配置布局:

from smoothnlp import kg g = kg.rel2graph(rels) # 构建 nx.DiGraph 有向图 fig = kg.graph2fig(g, x=1000, y=800) fig.savefig('kg_demo.png')

rel2graph会按关系类型给边打上中文标签(状态修饰 / 条件修饰 / 数字修饰 / 动作),graph2fig内置 SimHei 中文字体并用 Dijkstra 最短路径作为 Kamada-Kawai 布局的距离权重,节点按中心度自适应调整大小,开箱即美观。

📊 进阶 Demo:多句批量抽取 + 节点分类

V0.4 版本起,kg.extract_ngram支持对一批句子批量抽取并识别节点类型,配合kgexplore可视化库可以生成带节点分类与边关系图例的完整图谱:

from smoothnlp.algorithm import kg from kgexplore import visual ngrams = kg.extract_ngram([ "SmoothNLP在V0.3版本中正式推出知识抽取功能", "SmoothNLP专注于可解释的NLP技术", "SmoothNLP支持Python与Java", "SmoothNLP将帮助工业界与学术界更加高效的构建知识图谱", "SmoothNLP是上海文磨网络科技公司的开源项目", "SmoothNLP在V0.4版本中推出对图谱节点的分类功能", "KGExplore是SmoothNLP的一个子项目"]) visual.visualize(ngrams, width=12, height=10)

V0.4 版本支持的边关系事件触发状态描述属性描述数值描述;支持的节点种类:产品、地区、公司与品牌、货品、机构、人物、修饰短语、其他。节点会自动着色分类,右侧图例一目了然。

📁 配套学习资料

想动手复现本文 Demo,推荐以下项目内资料:

  • 官方知识图谱文档与示例输出:tutorials/知识图谱/README.md
  • 百度百科公司页批量抽取实战 Notebook:tutorials/知识图谱/baike-company.ipynb
  • KG 模块源码(含extract/rel2graph/graph2fig):smoothnlp/algorithm/kg/init.py
  • 项目主入口与 NLP Pipeline:smoothnlp/nlp.py

❓ 常见问题 FAQ

Q1:kg.extract和普通 NER 有什么区别?NER 只识别实体,而知识三元组抽取输出的是「主语-关系-宾语」的完整结构,并附带关系类型与置信度,可直接入图谱。

Q2:中文图谱可视化乱码怎么办?graph2fig已内置 SimHei 字体自动加载;若自行使用 matplotlib,可将 SimHei 字体注册到font_manager后再绘图(参考 baike-company.ipynb 中的做法)。

Q3:支持哪些版本?知识图谱功能自 V0.3.0 起支持,节点分类与边关系图例为 V0.4 版本特性。


🎉 恭喜!到这里你已经用不到 20 行 Python 代码完成了从文本 → 知识三元组 → 可视化图谱的完整链路。无论是企业信息库、新闻事件抽取还是学术文献知识组织,SmoothNLP 的 kg 模块都能作为可解释的起点,帮你快速搭建自己的知识图谱原型。

【免费下载链接】SmoothNLP专注于可解释的NLP技术 An NLP Toolset With A Focus on Explainable Inference项目地址: https://gitcode.com/gh_mirrors/smo/SmoothNLP

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询