DeepKE知识图谱抽取开源工具使用
文章目录
- DeepKE知识图谱抽取开源工具使用
- 1、DeepKE介绍
- 2、简单使用
- 1、训练模型
- 2、知识抽取
- 3、注意事项
1、DeepKE介绍
今天给大家介绍一下DeepKE这个开源工具。DeepKE一个支持cnSchema、低资源、长篇章、多模态的知识图谱抽取开源工具。主要是由浙江大学和阿里团队研发的。
DeepKE是一种基于深度学习的知识抽取工具,它可以从文本数据中抽取出实体、关系和事件等知识,并将其表示为结构化的形式,可以用于自然语言处理、信息提取、搜索引擎优化以及其他相关领域。
官网地址:http://deepke.zjukg.cn/CN/index.html
论文地址:https://arxiv.org/pdf/2201.03335.pdf
官方文档:https://zjunlp.github.io/DeepKE
DeepKE的步骤通常包括以下几个方面:
1.预处理:对原始文本进行分词、词性标注、命名实体识别等处理,以便后续的模型训练和使用;
2.知识抽取:使用深度学习模型,例如神经网络、卷积神经网络和循环神经网络等,从预处理后的文本中抽取出实体、关系和事件等知识;
3.结构化表示:将抽取出的知识表示为结构化的形式,例如图或表格等,以便后续的应用和分析。
2、简单使用
首先deepke支持各种方式的安装
conda环境
conda create -n deepke python=3.8conda activate deepke
pip方式
pip install deepke
还提供了dockerfile来创建docker镜像。
cd dockerdocker build -t deepke .conda activate deepke
博主使用conda和pip直接进行install出现了报错,所以是直接下载deep的压缩包并setup
下载地址: https://pypi.doubanio.com/packages/d1/79/3ec7a5b14ecc16677b13e2f2603f56849a54ec9a0a527f1556d65f9c9f3a/deepke-2.2.1.tar.gz
解压后在deepke-2.2.1目录下运行
python setup.py install
发现还是报错,原因是该包里面没有requirements.txt(希望官方改正)
于是找到官方文档中的安装依赖并写入requirements.txt放入setup.py的同级目录下再运行(已被调试过)。
torch == 1.10.0hydra-core == 1.0.6tensorboard == 2.4.1matplotlib == 3.4.1protobuf==3.19.2transformers == 3.4.0jieba == 0.42.1scikit-learn == 0.24.1pytorch-transformers == 1.2.0seqeval == 1.2.2tqdm == 4.60.0opt-einsum==3.3.0wandb==0.12.7ujson
使用命令后可能会由于从python官方库下载而导致的超时问题,因此我们直接使用如下命令
pip install -r requirements.txt -i https://pypi.douban.com/simple
来将依赖直接安装之后再运行命令
python setup.py install
就安装成功了。
1、训练模型
import deepke# 加载训练数据train_data = [ { "text": "乔布斯是苹果公司的创始人。", "entities": { "PERSON": [{"start": 0, "end": 2}] }, "relations": { "FOUNDED_BY": [{"head": 0, "tail": 3}] } }, { "text": "比尔盖茨是微软公司的创始人。", "entities": { "PERSON": [{"start": 0, "end": 4}] }, "relations": { "FOUNDED_BY": [{"head": 0, "tail": 5}] } }, # ... 其他训练数据]# 训练模型model = deepke.train(train_data)# 保存模型model.save_model("model_path")
2、知识抽取
import deepke# 加载预训练模型model = deepke.load_model(model_path)# 对输入文本进行预处理text = "乔布斯是苹果公司的创始人。"tokens = deepke.tokenize(text)# 使用模型进行知识抽取entities, relations = model.predict(tokens)# 输出抽取结果print("Entities:", entities)print("Relations:", relations)
以上代码使用预训练模型对输入文本进行了知识抽取,并输出了实体和关系等结构化信息。
3、注意事项
数据集格式为json数据。训练数据的格式必须符合DeepKE要求的格式。具体而言,每个训练样例应该包含一个文本字段(即**“text”字段)以及一个实体字段(即“entities”字段),实体字段的值应该是一个字典类型,键为实体类型,值为一个列表,列表中的每个元素表示一个实体在文本中的位置信息(即“start”和“end”字段)。同时,在存在关系的情况下,每个训练样例还应该包含一个关系字段(即“relations”字段),关系字段的值也应该是一个字典类型,键为关系类型,值为一个列表,列表中的每个元素表示一条关系,其中“head”和“tail”**分别表示关系头和尾在实体列表中的索引。
以下是一个示例的训练数据格式:
{ "text": "史蒂夫·乔布斯是苹果公司的创始人。", "entities": { "PERSON": [{"start": 0, "end": 5}], "ORG": [{"start": 9, "end": 13}] }, "relations": { "FOUNDED_BY": [{"head": 0, "tail": 1}] }}
如有任何问题请参考开源地址:https://gitee.com/openkg/deepke