输入文本生成知识图谱,包含前后端。nlp部分基于deepke-cnschema,前端展示基于KGview。
前端部分graphxr也是不错的选择,但是要注册就没选。
(“刘姥姥进大观园”是预置的输入,这一章节内容对应的triples会被直接返回无需再次生成,减少等待时间)
.
├── `api` 后端部分
│ ├── `.devcontainer` 开发容器配置,用于隔离开发环境
│ ├── `cnschema` deepke-cnschema项目,稍做了一些修改。
│ ├── `docekr` docker相关文件,方便部署到开发环境
│ ├── `models` deepke-cnschema用到的模型放在这里面,ner和re都采用robert。
│ ├── `static` 网页放在这里。
│ ├── `api.py` 用于暴露API
│ └── `KnowledgeGraph.py` 对cnschema的抽象,方便api调用。
└── `vue` 前端部分,没啥好说的。
后端
- 运行环境用的是deepke里的dockerfile生成的容器,也可以用dockerhub的zjunlp/deepke,或者自己用对应版本的pytorch容器都可以。
- pip install的时候安装我写的requirements.txt,不用安装cnschema里的requirements。
- 下载deepke-cnschema模型,需要下载一个ner模型和一个re模型,我选的是
DeepKE(NER), RoBERTa-wwm-ext, Chinese
和DeepKE(RE), RoBERTa-wwm-ext, Chinese
,运行这个项目需要把这两个模型下载下来放到项目根目录/api/models/
下,一个是目录,一个是pth文件。- 模型位置的配置文件在
项目根目录/api/cnschema/conf/predict.yaml
,你需要修改这个配置文件来告诉cnschema模型在哪里。
- 模型位置的配置文件在
然后是前端
- 在vue目录下创建.env文件,编辑文件
VITE_BASE_URL=http://127.0.0.1:8000
,具体端口自己和docker compose里写的对照一下 - 然后在vue目录执行
npm install && npm run build
,构建好了之后把vue/dist
目录下的内容复制粘贴到api/static
下,此时的static目录结构:- static
- assets
- show
- vite.svg
- index.html
- static
最后在容器内的/workspace执行python api.py
即可启动。
测试:
-
启动之后在浏览器打开127.0.0.1:8000——同样的具体端口看compose里怎么映射的——就会打开vue写的获取triples的页面,输入内容,然后等待一段时间会获取到nodes和links,复制这两段文本
-
再打开127.0.0.1:8000/show,在左侧的节点数据中粘贴nodes值,关系数据中粘贴links值,然后点左下角渲染按钮,即可生成示例所示的网状图。
-
输入内容的时候可以写
刘姥姥进大观园
,如果后台检测到这个输入会直接返回之前生成好的刘姥姥进大观园章节的知识图谱,不需要再生成一遍,因为实在太耗时间了。不是这个输入的都会重新跑一遍实体识别和关系抽取,没写缓存。
- 更省心的部署
- 更现代的前端
- 更智能的关系抽取
- 知识图谱缓存