用Wikidata做实体搜索的两种方案

Wikidata知识图谱介绍与数据处理 1. Wikidata简介 Wikidata(维基数据)是一个自由开放的知识库,可以同时被人和机器阅读、编辑[1]。根据官网介绍,Wikidata作为一种结构化数据的集中存储,为其他维基媒体(Wikimedia)项目[2]提供支撑,包括Wikipedia(维基百科)、Wikivoyage(维基导游)、Wiktionary(维基字典)、Wikisource(维基文库)等。 就像维基百科一样,Wikidata 支持自由协作编辑,支持多语言。与维基百科不同的是,Wikidata作为知识库,其内容都是结构化 阅读详情

用Wikidata做实体搜索的两种方案

Wikidata 是一个可协同编辑的知识库,是继2006年的维基学院之后,第一个新的维基媒体基金会项目。这一项目与维基共享资源的工作方式类似,将为其他维基计划及各语种维基百科中的信息框、列表及跨语言链接等提供统一存放的数据,该项目在2012年10月30日投入使用。

Wikidata 的所有数据都是对外公开的,官网对外提供了两类数据获取方式:在线API和数据库下载。在线API提供了方便的调用接口,数据库下载可以获取完整的数据库备份。

利用Wikidata做实体搜素时,针对这两类数据获取方式,相应的有两种方案:在线方法和离线方法。

1 在线方法

利用Wikidata提供的在线API可以很方便地实现在线实体搜索,过程可以分为三步:

  • 实体id确定
  • 实体信息获取
  • 实体信息解析
  • 相关实体信息获取

1.1 实体id确定

这一步利用用户输入的查询关键字确定对应的实体id。可以直接调用MediaWiki API,并且可以指定返回的数据格式(json等)。返回的数据里包含查询到的实体id。

例如搜索Fudan时,可以直接HTTP GET以下url:

https://www.wikidata.org/w/api.php?action=wbsearchentities&search=Fudan&language=en&limit=20&format=json

1.2 实体信息获取

在得到实体的id之后,可以直接利用此id通过MediaWiki API获取实体的详细信息,并且可以指定返回格式。例如获取实体Q495015的详细信息可以HTTP GET以下url:

https://www.wikidata.org/w/api.php?action=wbgetentities&ids=Q495015&format=json&languages=en

1.3 实体信息解析

得到指定格式的实体信息之后,需要对实体信息进行解析,具体方法可以参考第三章。

1.4 相关实体信息获取

解析实体信息之后,会得到与此实体相关的其他实体(实体id)以及关系属性(属性id),通过相关实体的实体id和属性id可以进一步得到相关实体信息:相关实体信息可以直接用id查询,属性信息可以解析属性详情页。例如属性P580的详情页为https://www.wikidata.org/wiki/Property:P580。

2 离线方法

在线方法虽然实现起来方便快捷,但是Wikidata并不能保证所有的请求都按时返回,甚至请求可能会被堵塞(参考API:Etiquette)。因此在需要发起大量请求时在线方案不适用。

Wikidata提供了完整的数据库下载,因此可以下载完整的数据库,然后搭建自己的实体搜索服务。大致可以分为3步:

  • 数据下载
  • 数据导入
  • 搭建搜索服务

2.1 数据下载

Wikidata提供多种格式的数据下载,具体可以参考Wikidata:Database download。

2.2 数据导入

将数据导入本地数据库,如MySQL、MongoDB等。json格式的dump每行为一个实体,数据导入比较方便,但是数据量非常大(json格式的dump大小为57G,包含1800万行),数据导入将非常耗时。

2.3 搭建搜索服务

基于本地服务器搭建搜索服务。搜索时数据的解析可以参考第三章。用关键字搜索实体id的接口可以直接调用Mediawiki的在线API,或者自己实现。

3 数据解析

Wikidata存储的是实体以及实体之间的关系,具体的数据结构可以参考官方文档Wikibase/DataModel.

3.1 综述

典型的json格式的数据如下:

Q5816: {
    "pageid": 6892,
    "ns": 0,
    "title": "Q5816",
    "lastrevid": 287405642,
    "modified": "2015-12-31T09:46:04Z",
    "type": "item",
    "id": "Q5816",
    "labels": {
        "en": {
            "language": "en",
            "value": "Mao Zedong"
        },
        "zh-hans": {
            "language": "zh-hans",
            "value": "毛泽东"
        }
    },
    "descriptions": {
        "en": {
            "language": "en",
            "value": "Chairman of the Communist Party of China"
        },
        "zh-hans": {
            "language": "zh-hans",
            "value": "中国共产党中央委员会主席"
        }
    },
    "aliases": {
        "en": [
            {
                "language": "en",
                "value": "Mao Tse-tung"
            },
            {
                "language": "en",
                "value": "Chairman Mao"
            }
        ]
    },
    "claims": {
        "P109": [
            {
                "mainsnak": {
                    "snaktype": "value",
                    "property": "P109",
                    "datavalue": {
                        "value": "Mao Zedong signature.svg",
                        "type": "string" },
                    "datatype": "commonsMedia"
                },
                "type": "statement",
                "id": "Q5816$618e6d2e-43ba-5d72-16d2-fda07ffca933",
                "rank": "normal",
                "references": [
                    {
                        "hash": "167445151e65821ce4e9d2141afbb3dafb53b8e5",
                        "snaks": {
                            "P143": [ { "snaktype": "value", "property": "P143", "datavalue": { "value": { "entity-type": "item", "numeric-id": 30239 }, "type": "wikibase-entityid" }, "datatype": "wikibase-item" } ] },
                        "snaks-order": [
                            "P143"
                        ]
                    }
                ]
            }
        ],
    },
    "sitelinks": {
        "afwiki": {
            "site": "afwiki",
            "title": "Mao Zedong",
            "badges": [ ],
            "url": "https://af.wikipedia.org/wiki/Mao_Zedong"
        },
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91

3.2 顶级字段

json格式的entity顶级字段有:

  • id: 实体id。
  • type: 实体类型。
  • labels: 不同语言描述的实体标签。
  • descriptions: 不同语言的实体描述。
  • aliases: 不同语言描述的实体别名。
  • claims: 以属性分组的实体声明(claims)或者陈述(statements)。
  • sitelinks: 各种网站上关于此实体的描述。
  • lastrevid: 当前json文件的版本。
  • modified: 当前json文件的发布日期。

每个entity都有识别码(id)、标签(label)、描述(description)、别名(aliases),使不同的entity得以区分。而entity中的具体数据被称为claim,一个entity可以有许多 claim。

3.3 Claims 以及 Statements

claim 包含一条主体信息(main Snak)以及一些修饰信息(qualifier Snaks)。statement是含有参考资料(reference)的claim。每个claim总是与一个属性(property)关联(claim是关于此property的)。并且在一个实体中可以有多条claim与同一property关联。

claim含有以下字段:

  • id: 识别码,只能保证当前数据库中唯一,不包含其他信息。
  • type: claim的类型,目前只有statement和claim两种。
  • mainsnak: 如果claim含有type值,那么它具有mainsnak字段包含与property相关的主体信息。
  • rank: 表示claim是否应该显示在查询结果中,为preferred, normal 或者 deprecated.
  • qualifiers: 修饰信息,一般为主体信息的上下文信息,每一条都与一个属性(property)关联。
  • references: 如果claim是statement,那么会有一个参考资料的列表。

3.4 解析示例

3.1节中的json字段,除了claims顶级字段,其它信息都可以直接提取利用。

claims字段下为一个字典,字典的键为属性(property),示例中只有一个key:P109。通过属性页P109属性页可以知道此属性表示签名。

与此属性关联的claim只有一个,mainsnak为此claim的主体信息,datavalue中的value为”Mao Zedong signature.svg”,表示实体毛泽东的签名文件文件名为”Mao Zedong signature.svg”。另外此claim的type为statment,因此含有一个参考资料列表-references。mainsnak中的datavalue也可以为其它关联实体(提供实体id)。

3.5 解析难点

  • 属性都是以属性ID表示的,不能直接解析属性的含义
  • 关联实体是以实体ID表示的,需要多次的查询-解析。
  • 不同种类实体含有的属性不同
从Wikidata上面获取数据及关系的几种方法 Wikidata介绍:Wikidata是维基媒体基金会主持的一个自由的协作式多语言辅助知识库,旨在为维基百科、维基共享资源以及其他的维基媒体项目提供支持。它是Wikipedia、Wikivoyage、Wikisource中结构化数据的中央存储器,并支持免费使用。每个文档都有一个主题或一个管理页面,且被唯一的数字标识。 阅读详情

相关推荐

wikidata研究和应用

应用场景 ​ 在平台初期或者后期都需要一些标准的官方信息来填充平台缺乏的内容,以往可能是通过爬虫进行爬取,但是这块受限于一些法律或者内容的付费独家信息和内容准确性的问题。因此需要一种渠道拿到我们希望获取的各类数据,比如,城市信息、人物信息、书籍刊物、歌曲、电影等等。 ​ 这类信息最直接的方式就是维基百科,里面基本可以搜索到我们能获取的数据,因此我们就考虑怎么从维基百科拉取标准化数据。 数据研究 ​...

danhuang 3415

Wikidata 模型分析+实体抽取+数据处理

维基知识库的内容可以概括如下:维基数据库知识库是实体的集合。实体是知识库的基本元素,可以使用Wikibase数据模型对其进行描述和引用。Entities有两种预定义的实体类型:项和属性。ItemsandProperties维基基础可以扩展以支持其他类型的实体。项目和属性的描述结构如下。

程序员五哥 6020

Knowledge graph, Freebase, Wikidata三大知识图谱

知识图谱本质上是一种语义网络,其节点代表实体或者概念,边代表实体/概念之间的各种语义关系。 Knowledge Graph:

Jean的博客 2383

Wikidata数据结构及本地部署——支持SPARQL查询

使用QLever实现对Wikidata140多亿个三元组的本地部署和查询

xuzf 的博客 4457

Wikidata-Recommender-Dataset:Wikidata数据集

Wikidata-Recommender-Dataset Wikidata是由全球志愿者社区构建的开放知识图。随着规模的扩大,它在编辑人员参与方面面临着严峻的挑战。这些挑战既是为了吸引新的编辑人员来跟上大量工作,又是在保留现有编辑人员方面。来自其他在线社区和包括Wikipedia在内的对等制作系统的经验表明,个性化推荐可能会有所帮助,尤其是新手,他们有时不确定如何为正在进行的工作做出最大贡献。因此,在本文中,我们提出了Wikidata项目的推荐系统。该系统使用基于内容的协作过滤技术的混合体,以使用项目功能以及编辑器和项目之间的先前交互来学习为编辑者对项目进行排名。为了促进在这个领域的进一步研究,我们还创建了两个基准数据集,一个通用数据集包含25万编辑者,负责1900万与800万个项目的交互,而第二个则集中于11个以上的活跃编辑的贡献。我们在两个数据集中都对该系统执行了脱机评估,并获得了令

MatterPort3D 数据集下载

【代码】MatterPort3D 数据集下载。

qq_44106838的博客 6770

实战 Wikipedia 与 Wikidata 知识图谱数据获取 (8)

如何从 WikiData 和 DBpedia 上获取数据。文末送知识图谱最新 2021 发布的开源书

qq_29824567的博客 3763

保姆级教程:在RK3568开发板上手把手配置RMII百兆以太网DTS节点

本文提供了一份详细的RK3568开发板RMII百兆以太网DTS节点配置教程,涵盖基础概念解析、关键参数设置、实际操作步骤及常见问题排查。通过手把手指导,帮助开发者快速完成RK3568开发板的以太网配置,特别适合嵌入式系统开发者参考。

weixin_33686714的博客 136

GEO知识库第159期:Wikipedia与Wikidata是AI实体骨幹,缺它优化白搭

GEO知识库第159期:Wikipedia与Wikidata是AI实体骨幹,缺它优化白搭

285

魔兽RPG老地图逆向工程:解密三国列传3.0武将招募限制(附JASS实战)

本文详细解析了《三国列传3.0》魔兽RPG地图的武将招募限制机制,通过逆向工程和JASS脚本修改技术,突破SLK加密防线并解密游戏逻辑。文章提供了从工具准备到代码修改的完整实战指南,帮助玩家解除武将数量限制,重温经典游戏的乐趣。

i1j2k的博客 360

RIGOL DS1102E示波器新手必看:从开机到捕获第一个波形的5分钟指南

本文为RIGOL DS1102E示波器新手提供了一份快速上手指南。内容涵盖从开机、探头校准到捕获第一个波形的完整流程,重点解析了触发设置、自动测量等核心操作,并指出了探头衰减比设置等常见误区,帮助用户快速掌握这款经典数字示波器的基本使用方法。

dream的博客 739

[知识图谱]Python-调用维基百科官方API查询返回json数据的数据模型解析(Wikidata datamodel)- 超详细介绍

Wiki官方提供了很多不同功能的接口;python利用API获取json数据;维基百科数据模型的json数据解析。

一棵灬大树的博客 5434

【RK3588 NPU性能调优实战】多线程异步推理YOLOv5,榨干6TOPS算力

本文详细解析了如何在RK3588 NPU上通过多线程异步推理优化YOLOv5目标检测性能,实现6TOPS算力的最大化利用。通过线程池设计、流水线化帧处理及避开内存带宽瓶颈等技巧,将NPU利用率从30%提升至82%,帧率显著提高至61.2FPS。文章还提供了环境配置、代码实现及性能对比数据,助力开发者高效部署AI模型。

weixin_29034963的博客 340

Python爬虫-快速入门 urllib+beautifulsoup4+多线程(附wiki data实体搜索等各种demo)

写在前面: 最近工作又要用到爬虫,利用商品的名称在wiki data上搜索实体id,再根据实体id爬取对应的实体详细信息。 虽然wiki官网上建议我们串行爬取数据,但速度实在是太慢了(预估要爬12天,显然不河里),因此记录了下常用的各种包的用法,并编写了一个多线程的脚本(一小时左右就爬完了),分享出来供大家参考~ 注:wiki data需要科学上网,不能的话用下面baidu的demo练手即可~ 1.urllib与beautifulsoup 这俩好兄弟是黄金组合,举个例子,拿到一条你需要爬..

River_sum的博客 3862

Serial RapidIO Gen2 IP 说明(一)

概述 高速IO(RapidIO)互联架构,用来兼容当前最流行的集成通信处理器、主处理器、联网的数字信号处理器,是一种高性能、分组交换(报文交换)的互联技术。它解决了高性能嵌入式产业稳定性、高带宽以及系统内部更快的总线速率的需求。 高速IO(RapidIO)标准由三层定义:逻辑层、传输层、物理层。逻辑层定义了所有的协议内容和报文格式。这些是终端发起和完成一次传输所必需的信息。传输层提供了报文从一个端点传输到另外一个端点必要的路线信息。物理层则描述了设备级的端口声明,如报...

记录所学,分享知识,结识挚友 1497

095、PCIE物理层测试模式:从信号眼图到误码率实战

本文介绍了PCIe物理层测试模式的调试方法和实战经验。重点解析了环回测试、合规性测试和静默模式的应用场景及配置要点,分享了信号眼图分析、误码率测试和接收端验证的实用技巧。作者结合自身调试经历,强调物理层测试对排查信号完整性问题的重要性,建议在量产前进行基础测试,并提醒注意芯片勘误和测试模式切换等易错点。通过合理使用测试模式,可显著提高PCIe链路调试效率,确保物理层稳定可靠。

z534437748的博客 59

SurfSense 实体优化实战:Knowledge Panel 与 Wikidata 深度优化指南

在搜索引擎与生成式 AI 并行的时代,品牌能否被"认识"直接决定了它能否被展示、被引用。本指南以 SurfSense 仓库中 `entity-optimizer` 技能库的 [Knowledge Panel & Wikidata Optimization Guide](https://link.gitcode.com/i/a5e67557f6f8992f3aba098dea4a46c2) 为核心骨

gitblog_00950的博客 163

Pytorch入门教程

Pytorch学习总结:1.张量Tensor 张量是一种特殊的数据结构,与数组和矩阵非常相似。在PyTorch中,我们使用张量对模型的输入和输出以及模型的参数进行编码。 张量类似于NumPy的ndarray,除了张量可以在 GPU 或其他硬件加速器上运行。事实上,张量和NumPy数组通常可以共享相同的底层内存,从而无需复制数据。...

专注大数据与人工智能技术分享,欢迎私信加群互相学习! 4万+

SPARQL从入门到精通:用Wikidata知识图谱实现多跳推理搜索

本文深入解析SPARQL查询语言在Wikidata知识图谱中的应用,从基础架构到多跳推理搜索实战,涵盖医疗、影视等领域的复杂关系挖掘。通过具体案例和优化策略,帮助开发者掌握语义搜索技术,提升知识图谱分析能力。

php55的博客 776

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

实体SEO:从关键词到实体的2026搜索引擎与AI引用实战指南

2026 年,AI 搜索(AI Overviews、AI Mode、ChatGPT、Perplexity)在生成答案前先解析查询实体、再从知识图谱检索内容——实体识别决定引用资格,关键词排名只决定传统排名。本文从概念科普出发,讲清实体 SEO 与知识图谱的关系,用数据说明为何 2026 年它成为底层变量(品牌提及相关性 0.664、约为外链 3 倍;结构化数据页面被 AI 引用 2.3 倍),并给出五步落地法。

SEO_juper的博客 500

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

查找FB15k-237 entity id对应实体数据

最近在做knowledge graph相关的research,FB15k-237是KG经常用到的一个数据集。因为项目需要,想找FB15k-237中entity id对应的实体具体是什么,但Google关停Freebase后,查询实体id的API也无法使用了。墙内没有翻到靠谱的答案,看到stackoverflow上一个比较好的回答,总结如下: https://developers.google.com/freebase/#freebase-wikidata-mappings Google提供了2.1M实体

weixin_43652082的博客 9945

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Wikidata和SparQL简介

知识库 数据库(Database)和SQL,相信我们大部分人都非常非常熟悉。但是“知识库”可能知道的人就要相对少一些。 知识库是一个相对比较新的概念,它其实是一堆“三元组”(类似于主-谓-宾)的组合,从空间上看是一个巨大的、由“物体”组成的一张图。 现有的比较有名的知识库有DBpedia、WikiData、Yago等。 SparQL 类似与SQL用来搜索的语言,可以适用于上面提...

dianshu1593的博客 1085

图-语言融合:使用语言模型进行Wikidata破坏检测

我们介绍了一种新一代的Wikidata破坏检测系统,Wikidata是Web上最大的开源结构化知识库之一。Wikidata非常复杂:其项目包含不断扩展的事实三元组和多语言文本。虽然编辑可以改变结构化和文本内容,我们的方法通过称为Graph2Text的方法将所有编辑转换到单一空间中。这使得能够使用单一的多语言语言模型评估所有内容变更中的潜在破坏。这种统一方法提高了覆盖率并简化了维护。实验表明,我们的解决方案优于当前的生产系统。

栖客 806

SurfSense 实体信号审计清单:47 项信号驱动的品牌实体与知识图谱优化实战

> 本文围绕仓库内的 [实体信号检查清单](https://link.gitcode.com/i/068ac0fd3301778970fe4535da7538b3) 展开,系统讲解如何以清单为审计工具,逐项核验品牌或组织在搜索引擎(Google Knowledge Graph、Knowledge Panel)与 AI 系统(ChatGPT、Perplexity、Google AI Overview

gitblog_00493的博客 1008

Wikidata数据集下载问题

数据集下载问题集合

祈熙霖的博客 3746
上一篇: html5 Canvas画图教程26:用transform来实现位移,缩放,旋转等
下一篇: 骨骼动画导论
CopperDong
博客等级 码龄14年 1205粉丝 466原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值