0.阅读源码可知,想要把自己的数据集带进去需要经过预处理,把以不同格式存储的三元组先处理成以下格式:
Datasets are required in the following format, containing five files:
- train.txt :the training file in a format with (e1, e2, rel) per line, the first line is the number of triples.
- valid.txt :the validation file, same format as train.txt.
- test.txt :the testing file, same format as train.txt.
- entity2id.txt :all entities and corresponding ids, one per line.
- relation2id.txt:all relations and corresponding ids, one per line.
上面这段文字的来源是openke程序的官网:OpenKE - An Open-source Framework for Knowledge Embedding.
1.自己在网上下载的数据集有不同的格式,对应不同的读取方法,具体可参考:知识图谱的四种存储格式,N-Triples、Turtle、JSON-LD和RDF/XML。 - 知乎 (zhihu.com)
2.我下载的数据集是乳腺癌语义电子病历,记载了十万个乳腺癌病人初诊电子病历,以.nt后缀文件存储,下载地址为APDG: Advanced Patient Data Generator (vu.nl)
3.查阅资料后了解到nt格式就是每行一个三元组,实体、关系都是最完整的格式,有前缀,很长那种。
看不太懂的科普:
干货 | 初学者入门必看的“知识图谱”解读(上)-腾讯云开发者社区-腾讯云
N-Triples(nt)是RDF(Resource Description Framework,资源描述框架)的一种序列化表示方法,RDF是一种事物的表示方法和手段。
- R:Resource,即资源,能唯一标识的对象源,例如:地点、人、事件、餐馆等;
- D:Description,资源的描述,包括资源属性、关系等;
- F :Framework,为资源描述提供了描述的语法和模型。
N-Triples:多个三元组来表示RDF数据集,比如下面的三行,就是资源A1A2S2的信息,第一行表明这一行描述的是标签(label),值为“tumorsize”(肿瘤尺寸);第二行表示这个尺寸的值是0.5,第三行表示单位是cm。
<http://wasp.cs.vu.nl/apdg#VMRBC_ZSH2013A1000001_A1A2S2> <http://www.w3.org/2000/01/rdf-schema#label> "TumorSize".
<http://wasp.cs.vu.nl/apdg#VMRBC_ZSH2013A1000001_A1A2S2> <http://wasp.cs.vu.nl/apdg#value> "0.5"^^<http://www.w3.org/2001/XMLSchema#decimal>.
<http://wasp.cs.vu.nl/apdg#VMRBC_ZSH2013A1000001_A1A2S2> <http://wasp.cs.vu.nl/apdg#unit> "cm".
当然,除了这种可以直接读出来的字符串,还会有一些类似于网址的东西(URI),一般来说:
- 每行表示一个三元组,找到每行的主语、谓语和宾语。
- 主语和谓语通常是URI,表示资源和属性,而宾语可以是URI、字面量或其他资源。
- 使用空格来分隔三元组的组成部分,使用句点来结束每个三元组。
URI查询:https://www.cnblogs.com/xiaoqi/p/kg-study-part-1.html
4.到点该下班了~明天试试把nt格式的三元组提出来,变成openke需要的txt格式,或者看看如果很难的话就直接手输入几个!反正我找到的数据集都是英文的,我自己做的是中文的(小声)