启动Wolfram数据存储库:真正有效的数据发布

十年后,终于到了!

我很高兴地宣布,截至今天Wolfram数据存储库正式启动!这是一条漫长的路。实际上,我十年前就开始了这个项目,但现在才开始,在Wolfram语言及其表示数据的符号方式,以及Wolfram云所有的部分最终都准备好了,以形成一个真正的可计算数据存储库,它以我认为应该的方式工作。

Wolfram数据存储

这件事在我身上发生过无数次:我正在读一篇论文或其他什么东西,我遇到了一张有趣的表格或情节。我对自己说:“我真的很想得到这背后的数据,尝试一些东西”。但是我怎样才能得到数据呢?

如果我幸运的话,报纸上会有一个链接。但遵循它通常是一种令人沮丧的经历。因为即使那里有数据(通常实际上没有),它也几乎永远不会以一种人们可以轻易使用的形式出现。它通常很原始,而且往往很难解码,甚至可能与文本交织在一起。即使我能看到我想要的数据,我几乎总是发现自己在脚注中穿行,想弄清楚到底发生了什么。最后,我通常只是觉得实际提取我想要的信息太麻烦了。

我想有人可能会认为这只是处理数据的一门普通课程。但在现代,我们有一个很好的反例:沃尔夫拉姆语言。我使用Wolfram语言的目标之一是尽可能多地在其中构建数据,并使所有数据立即可用和可计算。我不得不说,它的效果很好。您是否需要木星质量,或所有已知系外行星的质量,或阿兰·图灵的出生日期-或者是一万亿个更难懂的东西,你只要在语言中要求它们,你就会得到一种可以立即用它们计算的形式。

这是木星的质量(是的,人们可以使用“Wolfram | Alpha-style”自然语言来要求它):

木星(行星)[“质量”]

将其除以地球质量立即生效:

实体[“行星”、“木星”][“质量”]/实体[“星球”、“地球”][”质量“]

这是已知系外行星质量的直方图,除以木星质量:

直方图[实体类[“外行星”,全部][“质量”]/实体[“行星”,“木星”][“重量”]]

这里是阿兰·图灵的出生日期,可以立即计算出来:

Alan Turing(人)[“生日”]

当然,要使一切顺利进行,并使数千种不同类型的数据完全集成到Wolfram语言中,需要花费很多年和大量的工作Wolfram|Alpha公司.

但是,来自一些新研究或实验的其他数据呢?以某种原始形式将其上传到某处很容易。但挑战在于如何使数据真正有用。

这就是新的Wolfram Data Repository的用武之地。它的想法是利用我们使用Wolfram Language和Wolfram | Alpha以及Wolfram Cloud所做的一切,使数据尽可能容易地广泛可用和可计算。

这有很多方面。但让我陈述一下我们的基本目标。我希望是这样的情况,如果有人处理的数据他们理解得很好,那么他们应该能够在30分钟内为Wolfram数据存储库准备数据,然后让这些数据成为其他人可以随时使用和计算的数据。

设定期望很重要。使数据完全可计算到Wolfram语言中内置的标准——这是非常困难的。但有一个较低的标准仍然使数据在许多方面非常有用。Wolfram Data Repository(及其周围的技术)的重要之处在于,它现在使该标准易于实现,其结果是,现在以一种真正可供许多人使用的形式发布数据是可行的。

示例

Wolfram数据存储库中发布的每个项目都有自己的网页。例如,这里是陨石降落公共数据集页面:

输入1

ResourceObject[“陨石着陆”]

输入2

ResourceData[“陨石着陆”]

顶部是关于数据集的一些一般信息。但还有一块Wolfram笔记本说明如何在Wolfram语言中使用数据集。通过阅读本笔记本,人们可以开始了解Wolfram数据存储库的一些实际功能。

需要注意的一点是,获取数据非常容易。你所做的就是要求资源数据[“陨石着陆”]。无论您是在桌面上还是在云中使用Wolfram语言,这都将为您提供45716个陨石降落数据的良好符号表示(是的,数据被仔细缓存,因此这将尽可能快,等等):

然后重要的是,您可以立即开始对该数据集进行任何计算。作为示例,这需要“坐标”元素,然后随机抽取1000个结果,并对其进行地理绘图:

GeoListPlot[RandomSample[ResourceData[“陨石着陆”][All,“坐标”],1000]]

要实现这一点,需要很多东西。首先,数据必须可靠地访问,因为它位于Wolfram Cloud中。其次,人们必须能够知道坐标在哪里——如果能在Wolfram笔记本中看到数据集,这很容易。最后,坐标必须是一种可以立即计算的形式。

最后一点至关重要。仅仅将坐标的文本形式存储在电子表格中是不够的。人们必须以可计算的形式进行计算。不用说,Wolfram语言对地理坐标有这样一种形式:符号构造地理位置[{纬度, 离子}].

从陨石数据集也可以立即看到其他东西。比如注意,有一个“质量”列。因为我们使用的是Wolfram语言,质量不一定只是数字;它们可以是象征性的数量正确包含其单位的对象。还有一个“年份”数据中的列,并且每年都由一个实际的、可计算的符号表示日期对象构造。

有许多不同类型的可能数据,需要一个复杂的数据本体来处理它们。但这正是我们为Wolfram语言和Wolfram | Alpha构建的,它现在已经过了非常彻底的测试。它涉及到10000种单位以及数千万“核心实体“,就像城市化学制品等等。我们称之为Wolfram数据框架(WDF)-这是使Wolfram数据存储库成为可能的因素之一。

到目前为止,Wolfram数据存储库中有什么?

今天是首次发布Wolfram数据存储库为了准备此次发布,我们已经在存储库中添加了几个月的示例内容。我们添加的一些是“显而易见”的著名数据集。有些是我们出于某种原因发现有趣或好奇的数据集。有些是我们自己创建的数据集,有些是我自己创建的,比如在写书的过程中一种新的科学.

WDR主页类别

Wolfram Data Repository中已有大量内容,将立即用于各种应用程序。但从某种意义上说,现在的情况只是一个例子,我们希望和期待的事情将由许多其他人和组织贡献。

Wolfram数据存储库建立在我们的Wolfram语言之上技术堆栈立即赋予它很大的通用性,意味着它可以处理任何类型的数据。它不仅仅是电子表格或简单数据库中的数字数据表。它是任何类型和结构的数据,以任何可能的组合或安排。

主页类型

时间序列:

取[ResourceData[“美国联邦机构支出”],3]

有以下训练集机器学习:

随机样本[ResourceData[“MNIST”],30]

这里有网格化数据:

ResourceData[“GMM-3火星重力图”]

这就是许多书的文本:

WordCloud[ResourceData[“物种起源”]]

这里有地理空间数据:

ResourceData[“全球空中导航辅助设备”]

GeoHistogram[ResourceData“Global Air Navigation Aids”][All,“Geoposition”],50,GeoRange->美国]

Wolfram data Repository中当前的许多数据资源本质上都是表格式的。但与传统的电子表格或数据库中的表不同,它们不限于只有一级的行和列,因为它们是使用符号Wolfram语言表示的数据集可以处理任意深度的任意粗糙结构的构造。

ResourceData[“示例数据:太阳系行星和月球”]

但是,通常存在于关系数据库或图形数据库中的数据呢?有一个结构叫做实体存储最近添加到Wolfram语言中。事实上,我们在Wolfram | Alpha内部已经使用了多年类似的东西。但是什么实体存储现在可以用Wolfram语言建立实体、属性和值的任意网络。通常需要更多的管理,而不是建立类似数据集-但其结果是知识的一种非常方便的表示,在这种表示上,所有相同的函数都可以与内置的Wolfram语言知识一起使用。

以下是实体存储的数据资源:

ResourceData[“现代艺术馆藏和艺术家博物馆”]

这会将实体存储添加到要自动使用的实体存储列表中:

PrependTo[$EntityStores,%];

下面是5个类型的随机实体“MoMAArtist”从实体存储中:

RandomEntity[“MoMAArtist”,5]

对于每个艺术家,可以提取值的数据集:

实体[MoMAArtist],Otto Mühl[数据集]

这将查询实体存储以查找具有最新出生日期的艺术家:

实体列表[EntityClass[“MoMAArtist”,“BirthDate”->TakeLargest[5]]

它的工作原理

Wolfram数据存储库建立在Wolfram语言中称为“资源系统”的新的、非常通用的东西之上。(是的,预计不久将推出各种其他存储库和类似市场的东西。)

资源系统具有存储在云中的“资源对象”(使用CloudObject(云对象)),然后根据需要自动下载并缓存在桌面上(使用本地对象). 每个资源对象包含主要内容和元数据。对于Wolfram数据存储库,主要内容是数据,您可以使用资源数据.

资源数据

我们今天发布的Wolfram数据存储库是一种公共资源,它位于公共Wolfram云中。但我们也将推出可以在中运行的私有Wolfram数据存储库企业私有云-事实上,在我们自己的公司内部,我们已经建立了几个私有数据存储库,其中包含我们公司的内部数据。

原则上,可以存储在Wolfram数据存储库中的数据大小没有限制。但目前,“管道”针对大小最多约为几GB的数据进行了优化,事实上,Wolfram数据存储库中的现有示例清楚表明,大量有用数据的大小从未超过几MB。

Wolfram数据存储库主要用于不不断变化的确定数据。对于不断从中流入的数据物联网设备-我们去年发布了Wolfram数据删除。Data Repository和Data Drop都已深入集成到Wolfram语言中,通过我们的资源系统,将来还会有一些变体和组合。

向世界传递数据

我们的目标是Wolfram数据存储库是为来自各种组织的数据提供一个中心位置,以便于查找和使用。

Wolfram Data Repository中的每个条目都有一个关联的网页,该网页描述了它包含的数据,并给出了可以立即在Wolfram云(或下载到桌面).

在云中打开

在每个存储库条目的网页上(以及资源对象也有元数据,用于索引和搜索,包括标准都柏林核心书目数据。为了便于引用Wolfram数据存储库条目,每个条目都有一个唯一的内政部.

我们管理Wolfram Data Repository的方式是,每个条目都有一个唯一的可读注册名称,它既用于其网页的URL,也用于资源对象表示条目的。

在Wolfram笔记本中或在任何Wolfram语言程序中使用来自Wolfram数据存储库的数据都非常容易。数据最终存储在Wolfram Cloud中。但您可以从任何存储库条目的网页上下载它作为示例。

获取数据最丰富、最有用的形式是Wolfram语言Wolfram数据框架(WDF)-ASCII或二进制。但我们也在设置它,以便您可以以其他格式下载,例如JSON格式(在适当的情况下CSV公司,TXT公司,巴布亚新几内亚等)。

数据下载

当然,即使像JSON这样的格式也没有原生的方式来表示实体,或者用单位、日期或地理位置表示数量,或者WDF和Wolfram Data Repository处理的所有其他事情。因此,如果您真的想以完整的形式处理数据,最好直接使用Wolfram语言。但是,使用Wolfram语言,您总是可以将一些数据片段处理成更简单的形式,以便在低级格式.

捐款的工作原理

这个Wolfram数据存储库我们今天发布的是一个向世界发布数据的平台。为了开始,我们已经输入了大约500个样本条目。但从今天开始,我们接受任何人的贡献。我们将像过去十年一样审查和审查捐款Wolfram示范项目我们将强调我们认为普遍感兴趣的贡献和数据。

但Wolfram数据存储库的技术及其基础资源系统非常通用,它不仅允许人们向世界自由发布数据,还允许人们以更可控的方式共享数据。其工作方式是,人们像准备提交给公共Wolfram数据存储库一样准备数据。但他们并没有真正提交它,而是将其部署到自己的Wolfram Cloud帐户中,让任何人都可以访问。

事实上,一般的工作流程是,即使人们向公共Wolfram数据存储库提交数据,我们也希望他们首先将数据部署到自己的Wolfram Cloud帐户中。一旦他们这样做了,他们就会得到网页和一切——就像在公共Wolfram数据仓库中一样。

好的,那么如何创建存储库条目呢?您可以使用Wolfram语言代码以编程方式完成,也可以使用Wolfram笔记本以更交互的方式完成。让我们先谈谈笔记本的方式。

你首先要得到一个模板笔记本。您可以通过菜单项执行此操作文件>新建>数据资源,或者您可以使用创建笔记本[“数据资源”]。无论哪种方式,你都会得到如下内容:

数据资源建设笔记本

基本上,这是一个“填写表格”的问题。一个非常重要的部分是实际提供资源内容的部分:

资源内容

是的,它是Wolfram语言代码,而且它的灵活性足以支持您想要的任何内容。您可以直接在笔记本中输入内容,也可以让笔记本引用本地文件或云对象。

构建笔记本的一个重要部分(至少如果你想为你的数据创建一个漂亮的网页)是让你给出例子的部分。当这些示例实际出现在网页上时,它们将引用您正在创建的数据资源。但是,当您填写施工笔记本时,资源尚未创建。尽管如此,沃尔夫拉姆语的象征性特征还是得到了拯救。因为它允许您将数据资源的内容符号化地引用为$$数据在将显示的输入中,但允许您设置$$数据当您在构建示例的构造笔记本中工作时,请使用实际数据。

心率数据

好的,那么一旦你填写了施工笔记本,你会怎么做?有两个初始选择:在计算机上本地设置资源,或在云中设置资源:

专用部署

然后,如果您准备好了,您可以实际提交资源以在公共Wolfram Data Repository中发布(是的,您需要获得发布者ID,以便您的资源可以与您的组织关联,而不仅仅是与您的个人帐户关联):

提交到Wolfram数据存储库页面

在笔记本中设置资源通常很方便。但就像我们的技术堆栈中的其他东西一样,也有一种编程的Wolfram语言方法来实现它,有时这是最好的方法。

记住,Wolfram数据存储库中的所有内容最终都是资源对象.和一个资源对象-与Wolfram语言中的其他内容一样,i只是一个符号表达式,它恰好包含一个关联,该关联提供了资源对象的内容和元数据。

一旦你创建了一个合适的资源对象,您可以使用将其部署到云云部署。当您执行此操作时,将自动创建与您的云帐户关联的私人网页。该网页将依次对应于CloudObject(云对象)。通过设置该云对象的权限,您可以确定谁可以查看该网页,以及谁可以获取与其关联的数据。

当你有一个资源对象,只需使用资源提交.

顺便说一句,所有这些东西不仅适用于公共Wolfram Cloud中的主Wolfram数据存储库,也适用于私有云中的数据存储库。企业私有云的管理员可以决定他们想要如何审查提交的数据资源(以及他们想要如何管理名称冲突之类的事情),尽管他们通常可能只选择发布提交的任何资源。

我们为公共Wolfram Data Repository设计的审查和编辑资源的过程非常精细,尽管在任何给定的情况下,我们都希望它能快速运行。它涉及到对传入数据和示例进行自动化测试,然后确保这些在进行更改时继续工作,例如在Wolfram语言的后续版本中。私有云的管理员当然不必使用此过程,但如果他们愿意,我们将提供我们的工具。

制作数据支持的出版物

好的,假设在Wolfram数据存储库。如何实际使用它来创建数据库出版物?最明显的答案是,出版物只需包含Wolfram data Repository中数据资源的网页链接。一旦人们进入该页面,它会立即向他们展示如何访问Wolfram语言中的数据,如何在Wolfram Open Cloud中使用数据,如何下载数据,等等。

但实际的可视化效果或论文中出现的任何东西呢?人们怎么知道怎么做?一种可能性是可视化可以包含在数据资源网页上的示例中。但还有一种更直接的方法,即使用Wolfram Cloud中的源链接。

以下是它的工作原理。您可以创建一个Wolfram笔记本,从Wolfram数据存储库中获取数据并创建可视化:

使用Wolfram笔记本创建可视化效果

然后使用Wolfram语言函数将此可视化部署到Wolfram Cloud-either,如云部署嵌入代码,或使用菜单项。但当您进行部署时,您会说要包含源链接(源链接->自动(沃尔夫拉姆语)。这意味着,当你得到一个可嵌入的图形时,它会附带一个源链接,带你回到制作图形的笔记本:

指向笔记本的源链接

因此,如果有人正在阅读,并且他们看到了该图形,他们可以只沿着其源链接查看它是如何制作的,以及它如何访问Wolfram数据存储库中的数据。使用Wolfram Data Repository,您可以进行数据备份发布;通过源链接,您还可以进行完全支持笔记本的发布。

大赢家

现在我们已经谈了一下Wolfram数据存储库好的,让我们再谈谈为什么它很重要,为什么其中的数据如此有价值。

第一个原因很简单:它使数据立即变得有用和可计算。

数据访问非常方便(只需使用资源数据["..."]). 但真正重要且独特的是,Wolfram data Repository中的数据以统一、符号化的方式存储为WDF,利用我们多年来在Wolfram Language和Wolfram|Alpha中对数据所做的一切。

为什么在WDF中有数据很好?首先,因为在WDF中,所有事物的含义都是明确的:无论是实体、数量、地理位置还是其他什么,它都是经过精心设计和记录的符号元素。(这不仅仅是一个数字或字符串的无实体集合。)还有一件重要的事情:WDF中的数据已经精确地以所需的形式存在,人们可以使用Wolfram语言中内置的数千个函数中的任何一个立即对其进行可视化、分析或计算。

Wolfram笔记本也是图片的重要组成部分,因为它们可以很容易地显示如何处理数据,并提供可立即运行的示例。同样重要的是,Wolfram语言如此简洁易读,这就是为什么可以给出独立的示例,人们可以很容易地理解、修改并将其纳入自己的工作中。

在许多情况下,使用Wolfram数据存储库将包括识别一些数据资源(例如通过来自文档的链接),然后在Wolfram笔记本中使用WolframLanguage来探索其中的数据。但是,Wolfram Data Repository已完全集成到Wolfram Language中,因此可以在任何使用该语言的地方使用它。这意味着Wolfram data Repository中的数据不仅可以在云中或桌面上使用,还可以在服务器等中使用。例如,它也可以在API或计划任务中使用,使用完全相同的资源数据功能一如既往。

Wolfram数据存储库最常见的使用方式是一次一个资源。但WDF提供的统一性和标准化真正伟大的地方在于,它允许不同的数据资源一起使用:即使在不同的数据资源中,这些日期或地理位置也意味着相同的东西,因此它们可以立即放在一起进行相同的分析、可视化或其他操作。

Wolfram数据存储库建立在我们过去三十年来一直在组装的整个技术堆栈之上。在某些方面,它只是一个复杂的基础设施,使许多事情变得更容易做。但我已经知道,它的含义远远不止于此,它将对人们成功共享和重用各种数据的程度产生定性影响。

数据处理过程

在Wolfram数据存储库中拥有数据是一个巨大的胜利。但要做到这一点需要什么?几乎总是需要一定数量的数据管理。

让我们再看看我在这篇文章前面展示的陨石降落数据集。它是从NASA以良好的组织方式提供的数据收集开始的。(经常需要删除网页或PDF;这种情况下,数据恰好可以通过多种方式下载方便的格式.)

NASA的陨石着陆数据

通常,这里数据的基本元素是数字和字符串。因此,首先要做的是找出如何将这些映射到WDF中有意义的符号结构。例如,“质量”列被标记为“(g)”,即以克为单位,因此其中的每个元素都应该转换为数量[价值,“克”]。不过,这有点棘手,因为对于某些与陨石相对应的行,该值只是空白,可能是因为它未知。

那么应该如何表示呢?因为Wolfram语言是象征性的,所以这很容易。事实上,有一个标准的符号结构缺少[...]用于指示在分析和可视化功能中一致处理的缺失数据。

当我们开始深入研究数据集时,我们看到了各种各样的其他东西。有一列标为“年”。好的,我们可以把它转换成日期对象[{价值}]-尽管我们需要注意BC日期(它们将如何出现在原始数据中?)。

接下来是“reclat”和“recong”列,还有一个名为“GeoLocation”的列似乎将它们结合在一起,但引用的数字精度不同。稍微搜索一下,就会发现我们应该把陨石的经纬度取为reclat和recong,然后把它们转换成符号形式地理位置[{纬度,离子}].

为了在实践中做到这一点,我们首先导入所有数据:

导入[“https://data.nasa.gov/api/views/gh4g-9sfh/rows.csv?访问类型=\下载“,”CSV“]

好的,让我们提取一个示例行:

数据[2]

已经有了一些意想不到的事情:日期不仅仅是一年,而是一个精确的时间。因此,这需要转换:

口译员[“DateTime”][data[[2,7]]]

现在,我们必须将其重置为仅对应于一年粒度的日期:

日期对象[{DateValue[解释器[“DateTime”][数据[[2,7]],“年份”]},“年份“]

这里是地理位置:

地理位置[{data[[2,-3]],data[[2],-2]]}]“title=”地理位置[[{data[2,-3]],数据[[2],-2]]}]

我们可以继续下去,逐步构建可以应用于导入数据的每一行的代码。实际上,经常会有一些小问题发生。有一排东西丢了。在某处有一段额外的文字(“脚注”)。当提供数据供下载时,数据中的某些内容被误解为分隔符。每一个都需要尽可能自动化地进行处理。

但最后我们有一个很大的行列表,每个行都需要组装成一个关联,然后将所有行组合成一个数据集对象,以查看是否可以进入Wolfram数据存储库。

数据处理层次结构

上面的例子是非常典型的基本管理,任何熟练的Wolfram语言用户都可以在30分钟内完成。(一个专心阅读我的书的人Wolfram语言简介例如,应该能够做到这一点。)

这是一个相当简单的例子——值得注意的是,数据的原始形式相当干净。但即使在这种情况下,也值得了解哪些方面没有做。例如,查看标记为“分类”在最终数据集中。它有一堆字符串。是的,我们可以做一些事情,比如把这些字符串做成单词云:

WordCloud[Normal[ResourceData[“陨石着陆”][全部,“分类”]]

但要真正使这些值可计算,我们必须做更多的工作。我们必须找出某种陨石分类的符号表示,然后我们必须进行管理(毫无疑问,还要请一些陨石专家),以便将所有内容都很好地融入到该表示中。这样做的好处是,我们可以就这些值提出问题(“L3以上是什么陨石?”),并期望计算出答案。但如果没有这一点,我们已经可以用这个数据资源做很多事情了。

总的来说,我的经验是,在使数据能够在不同级别上进行计算时,存在一个明确的努力和回报层次——从刚刚以数字形式存在的数据开始,到可以干净计算的数据结束,使其能够完全集成到核心Wolfram语言中,并用于重复,系统计算。

数据层次结构级别

 

让我们稍微谈谈这个层次结构。

当然,第零件事是数据必须存在。其次,它必须是数字形式。例如,如果它是从手写索引卡开始的,那么最好是输入到文档或电子表格或其他东西中。

但接下来的问题是:人们应该如何访问该文档或电子表格?好吧,一个很好的答案是,它应该位于某种可访问的云处理器中,并用一个明确的URI引用。对于存在于那里的许多数据存储库来说,只需让数据像这样可访问就可以了。

但要使数据真正有用,还需要更进一步。下一步通常是确保数据以某种明确的结构排列。它可能是一组行和列,也可能是更精细的,比如说层次结构。但关键是要有一个明确的已知结构。

在Wolfram语言中,获取以任何合理格式存储的数据并使用导入以适当的方式将其转换为Wolfram语言。(稍后我将谈到,它可能是数据集,可能是实体存储,它可能只是一个列表图像对象,或者它可能是各种其他东西。)

但是,好吧,现在事情开始变得更加困难了。我们需要能够识别,比如说,这样的列中有代表国家、日期对、动物物种等的条目。语义导入使用机器学习,可以很好地自动导入多种数据。但是,经常有一些事情需要解决。缺失数据究竟是如何表示的?是否有额外的注释妨碍了自动解释?这就是人们开始需要真正了解数据的专家的地方。

但让我们假设一个人已经度过了这个阶段。那么,根据我的经验,最好的办法就是开始可视化数据。通常,人们会立即看到严重错误的事情。某些特定数量在数据中以几种不一致的方式表示。也许有一些明显的转录或其他错误。但幸运的是,转换数据来处理明显的问题是相当容易的,尽管要真正做到正确,几乎总是需要有数据方面的专家。

这一过程的结果通常对许多目的都非常有用——这是我们对提交给Wolfram数据存储库的内容所期望的管理级别。

可以用这种形式的数据进行各种分析、可视化和其他操作。

但如果有人想,例如,将数据实际集成到Wolfram|Alpha中,还有很多工作要做。首先,一切可以现实地象征性地表示的东西都必须象征性地表达。用随机字符串给出事物的值是不够的,因为人们无法对这些提出系统性的问题。这通常需要发明系统的方法来表示世界上的新概念,例如“分类”陨石。

Wolfram|Alpha通过自然语言输入工作。因此,下一个问题是:当数据中存在可以引用的内容时,人们如何在自然语言中引用它?通常会有一个完整的名称集合,有各种各样的变体。我们必须通过算法捕捉所有的可能性。

接下来,我们必须考虑将对数据提出什么样的问题。在Wolfram|Alpha中,问题是用自然语言提出的,这一事实迫使问题具有某种简单性。但这也让人需要弄清楚问题的语言学可能是什么(通常这比实体或其他确定事物的语言学要复杂得多)。然后,这通常是一个非常困难的部分,我们必须弄清楚人们想要计算什么,以及他们想要如何计算。

至少在Wolfram|Alpha的世界中,人们很少只要求原始数据。他们想要得到问题的答案——这些问题必须通过模型、方法或算法从底层数据中计算出来。对于陨石,他们可能不想知道陨石何时坠落的原始信息,而是想根据陨石坠落的时间、气候、成分等计算陨石的风化程度。为了成功地将数据集成到Wolfram|Alpha中,这些计算都需要存在。

对于完整的Wolfram | Alpha,还有更多。一个人不仅必须能够给出一个单一的答案,还必须能够生成一份完整的报告,其中包括相关的答案,并以有序的方式呈现这些答案。

这最终是一项艰巨的工作。很少有领域被添加到Wolfram|Alpha中,只需要不到几个熟练人员月的工作。还有很多领域需要人年或几十人年的时间。为了得到正确的答案,必须始终有领域专家参与。

将数据集成到Wolfram|Alpha中是一项重大成就。但还有更多的方法可以实现,实际上,要将数据集成到Wolfram语言中,还需要更进一步。在Wolfram|Alpha中,人们会提出一次性问题,目标是在个人问题上尽可能做到最好。但是,如果Wolfram语言中有数据,人们不仅会用它来问一次性问题:他们还会进行大规模的系统计算。这需要更高水平的一致性和完整性,根据我的经验,每个领域实现这一点所需的时间很少少于人年。

但好吧。那么这将把Wolfram数据存储库留在哪里呢?好消息是,我们在Wolfram | Alpha和Wolfram语言中所做的所有工作都可以用于Wolfram数据存储库。要实现将数据实际集成到Wolfram|Alpha或Wolfram语言中所需的功能,需要进行大量工作。但考虑到我们所拥有的所有技术,要使数据变得非常有用,只需要非常少量的工作。这就是Wolfram数据仓库的意义所在。

数据发布生态系统

使用Wolfram数据存储库(和Wolfram笔记本电脑)终于有了一个实现真正的数据支持发布的好方法,可以确保数据可以立即可用且可计算。

至少十年来,研究和政府等领域的数据共享一直备受关注。而且,已经有了各种各样的数据存储库,通常都是通过良好的软件工程创建的,结果是,数据不再只是放在某人的本地计算机上,而是上传到中央服务器或云位置。

但问题是,这些存储库中的数据几乎总是以一种非常原始的形式存在,并且没有被设置为通常有意义和可计算的。而在过去,除了在非常特定的领域,没有真正好的方法来做到这一点,至少在一般情况下是这样的。但Wolfram数据存储库的关键是利用我们在Wolfram语言和WDF上所做的所有开发,最终能够提供一个框架,使数据以可立即计算的形式存在。

效果是戏剧性的。一种情况是,人们在尝试使用数据时经常会感到沮丧,而另一种情况则是数据可以立即使用。通常,为了积累某些特定的数据集,需要进行大量投资和多年的艰苦工作。尽管原则上任何人都可以访问这些数据,但看到这些数据实际上被使用的次数如此之少,人们往往感到难过。但我希望Wolfram数据存储库将提供一种改变这种情况的方法,它不仅允许数据可访问,还允许数据可计算,并且便于任何人立即和常规地将其用作工作的一部分。

数据可计算有很大的价值,但这样做也有一定的成本。当然,如果现在只是收集数据,特别是如果数据来自自动来源,如传感器网络,那么可以将其设置为良好状态,从一开始就可以计算WDF(比如通过使用Wolfram data Drop的数据语义层)。但至少在一段时间内,仍会有大量数据以电子表格和传统数据库等形式存在,这些数据甚至没有技术支持直接表示WDF和可计算数据所需的结构类型。

因此,这意味着不可避免地需要付出一些努力来管理数据,使其可计算。当然,对于Wolfram语言中的所有内容,可用于管理的工具级别已经非常高。但要做好策划工作,总是需要一定程度的人力和专家投入。理解后Wolfram-Data-Repository数据发布生态系统的一个关键问题是,谁将实际完成这项工作。

在一级近似中,它可能是数据的原始制作人,也可能是专业人员或其他“策展专家”,或者是某种组合。所有这些可能性都有优点和缺点。但我怀疑,至少对于研究数据这样的东西,从数据的原始生产者开始是最有效的。

现在数据管理的情况与文档制作的历史情况有点类似。当我第一次从事科学研究时(是的,在20世纪70年代),人们手写论文,然后交给专业打字员打字。论文一旦打印出来,就会提交给出版商,出版商会让专业的文案编辑对其进行复写,然后由排字员排版印刷。这一切都相当耗时和昂贵。但在20世纪80年代期间,作者开始学习在计算机上键入自己的论文,然后开始直接将其上传到服务器,从而使其立即成为可发布的形式。

这并不是一个完美的类比,但在数据管理和文档编辑中都存在结构和格式问题,然后还有一些问题需要实际理解内容。(有时还存在更多的全球“政策”问题。)对于生成可计算数据,就像生成文档一样,几乎总是最有效的方法是从作者“键入自己的论文”开始,或者在数据的情况下,将他们的数据放入WDF中。

当然,要做到这一点,至少需要学习一点可计算数据,以及如何进行管理。为了帮助实现这一点,我们正在与各个小组合作,开发相关材料并提供相关培训。需要交流的部分内容是关于力学:如何移动数据、转换格式等。但部分内容也是关于原则以及如何在设置可计算数据时进行最佳判断调用。

我们计划组织“策展马拉松”,在这里,了解Wolfram语言并具有WDF数据策展经验的人可以与了解特定数据集的人结成搭档,并有望快速获得他们几十年来积累的各种数据,这些数据将形成可计算的形式,并存入Wolfram数据存储库。

最后,我相信,范围非常广泛的人(不仅是技术人员,还有人文学科的人等等)将能够熟练使用Wolfram语言进行数据管理。但我预计,在数据管理方面,总会有“自己键入”和“让别人帮你键入”的方法。有些人会让他们的数据自己计算,或者在他们的实验室里有人,或者其他什么人。有些人会转而依赖外部供应商来完成这项工作。

这些供应商是谁?会有一些个人或公司像今天提供编辑和出版服务的人一样成立。为了支持这一点,我们正在计划一个“认证数据管理员”计划,以帮助为那些将与各种不同类型数据的创建者一起将其转换为可计算形式的人定义一致的标准。

但除了个人或特定的“策展公司”之外,还有至少两种其他类型的实体有潜力成为使数据可计算的主要推动者。

第一个是研究图书馆。近年来,许多大学图书馆的作用有所变化。但对他们来说,潜在的非常重要的事情是为组织和制作大学内外的可计算数据提供一个中心位置。在许多方面,这只是传统图书馆活动(如归档和编目)的现代模拟。

这可能会涉及到图书馆实际上拥有Wolfram数据存储库的私有云版本,也可能涉及到图书馆拥有自己的员工来进行管理。或者它可能只是涉及图书馆提供建议。但我发现,图书馆界对这种方向有相当大的热情(这可能是一个有趣的迹象,即在我们公司,参与数据管理的人员最初往往接受过图书馆学的培训)。

除了图书馆,另一种应该参与使数据可计算的组织类型是出版公司。有人可能会说,过去几十年来,出版公司的日子过得有点轻松。当时,他们发表的每一篇论文都涉及各种制作工作,从手稿到最终排版。但多年来,作者一直在以数字形式发表论文,出版商不必做太多工作。

然而,有了数据,出版商又有了一件事要做,也有了一个潜在的增值空间。作者几乎可以自己将原始数据放入公共存储库。但是,让出版商明显增加价值的是他们处理(或“编辑”)工作中的数据输入,使其可计算。投资和过程将与过去文本方面所涉及的内容非常相似,只是现在出版商应该学习WDF和Wolfram语言,而不是学习照相排版系统。

值得一提的是,截至今天,我们接受到Wolfram数据存储库中的所有数据都是免费提供的。但我们预计在不久的将来,我们还将加入一个可以买卖数据的市场(甚至可能有有意义的DRM,至少如果它被限制在Wolfram语言中使用的话)。它还可以有一个私有云版本的Wolfram数据存储库,无论运行它的任何组织都可以设置它想要的关于贡献、订阅和访问的任何规则。

传统纸质出版的一个特点是它所提供的持久性:一旦世界各地的大学图书馆的书架上只有几百份纸质印刷品,就有理由认为这种纸张将永远保存下去。对于数字材料,保存更为复杂。

如果有人只是将一个数据资源部署到他们的Wolfram Cloud帐户,那么它可以向全世界提供,但前提是该帐户得到维护。然而,Wolfram数据存储库旨在成为更为永久的东西。一旦我们接受了存储库的一段数据,我们的目标是确保它在任何情况下都能继续可用。考虑到世界上各种可能的未来场景,如何最好地实现这一点是一个有趣的问题。但现在Wolfram数据仓库终于启动了,我们将与几个知名组织合作,确保其内容得到尽可能安全的维护。

数据支持日志

Wolfram Data Repository及其私有版本基本上是一种强大的技术,可以使数据以可计算的形式可用。有时人们想要做的就是使数据可用。

但至少在学术出版中,重点通常不是数据。通常会有一个“要讲述的故事”,而数据只是这个故事的备份。当然,拥有这些数据支持非常重要,而且可能会带来很大的变革。因为当一个人拥有可计算形式的数据时,人们自己处理数据,复制或检查研究,并直接在其基础上进行构建,这是现实的。

但是,好吧,Wolfram Data Repository与传统学术出版有什么关系?对于我们的官方Wolfram数据仓库,我们将为我们接受的内容制定明确的标准,并且我们将专注于我们认为具有普遍兴趣或用途的数据。我们有一个完整的过程来检查数据的结构,并将软件质量保证方法以及专家评审应用于此。

是的,Wolfram数据仓库中的每个条目都会获得一个DOI,就像期刊文章一样。但对于我们的官方Wolfram数据存储库,我们关注的是数据,而不是围绕数据的故事。我们不认为这是我们的职责,即检查获取数据的方法,或决定从中得出的结论是否有效。

但考虑到Wolfram Data Repository,有很多新的机会可以用于支持数据的学术期刊,这些期刊实际上是“讲述故事”的,但现在有了基础设施,可以用易于使用的数据对其进行备份。

例如,我期待着最终能写日记复杂系统30年前我创办了一本真正的数据库期刊。在许多现有期刊中,使用Wolfram Data Repository版本(通常在私有云中)来交付与期刊文章相关的可计算数据是有意义的。

但另一个有趣的是,现在人们可以想当然地认为可计算数据,有了全新一代的“数据支持期刊____”期刊成为可能——不仅使用Wolfram数据存储库中的数据,但实际上也可以将其结果显示为Wolfram笔记本,可以立即重新运行和扩展(例如,还可以包含交互式元素)。

企业版

我一直在学术期刊之类的背景下谈论Wolfram数据仓库。但这在公司环境中也很重要。因为它提供了一种非常干净的方法,可以在整个组织中共享数据(或与客户共享数据,等等)。

通常在企业环境中,人们谈论的是私有云版本。当然,这些用户可以有自己的规则来确定贡献的工作方式,以及谁可以访问什么。数据不仅可以立即用于Wolfram笔记本,还可以用于自动生成的报告或即时API。

在我们测试Wolfram数据存储库的过程中,我们发现了多少应用程序,这很有趣。

以前网页上有信息,但现在在我们的私有Wolfram数据存储库中,现在可以立即用于计算。过去数据库中有一些信息,需要认真编程才能访问,但现在可以通过Wolfram语言立即访问。还有各种各样甚至很小的列表等等,它们过去只以文本形式存在,但现在是我们数据存储库中的可计算数据。

拥有一家真正的“可计算公司”一直是我的目标,而建立我们的私有Wolfram数据仓库是实现这一目标的重要一步。

我自己的数据

除了公共和企业用途外Wolfram数据存储库个人技术,尤其是个人研究人员的技术。就我自己而言,我在一生中收集或生成了大量数据。我碰巧在保存东西方面很有条理,但通常情况下,要记住足够多的数据来“复活”我已经十多年没有处理过的数据仍然是一种冒险。在实践中,我使用的旧数据比我应该使用的要少得多,尽管在许多情况下,我首先花了巨大的精力来收集或生成数据。

但现在情况不同了。因为我所要做的就是一次性地将数据上传到Wolfram数据存储库,然后我就可以很容易地随时获取和使用数据。一些数据(如医疗或财务记录)我只想为自己准备,所以我使用了Wolfram数据存储库的私有云版本。但我一直上传到公共Wolfram数据存储库的其他数据。

这里有一个例子。它来自一页在我的书中一种新的科学:

《一门新科学》第833页

页面是这样说的搜索我发现计算宇宙中大约有8万亿个可能的系统,其中有199个满足特定标准。在书中我显示示例其中一些。但数据在哪里?

好吧,因为我对这些事情很有条理,所以我可以进入我的文件系统,找到生成书中图片的2001年的Wolfram笔记本。这让我找到了一个包含原始数据的文件,然后用很短的时间将其转换为数据资源对于Wolfram数据存储库:

三色元胞自动机规则使输入加倍

我们一直在系统地挖掘20世纪80年代我的研究中的数据,甚至从1988年的Mathematica Version 1笔记本电脑(是的,今天仍然有效)。有时这种经历不那么鼓舞人心。喜欢查找人员列表在索引中引用一种新的科学再加上他们的国家和日期,最好的方法似乎是浏览在线图书网站:

ResourceData[“Stephen Wolfram中提到的人\[CloseCurlyQuote]s\\[OpenCurlyDoubleQuote]一种新的科学\[Close CurlyDo倍Quote]”]

为了获得我用过的书的清单工作时一种新的科学需要进入一个古老的FileMaker数据库。但现在所有数据都与打开库从ISBNs推导出的信息位于清洁WDF表格在Wolfram数据存储库中。所以我可以做一些事情,比如立即将书的标题做成一个单词云:

WordCloud[StringRiffle[Normal[ResourceData[“Stephen Wolfram图书馆的书”][全部,“标题”]]]

它意味着什么

为了使今天的Wolfram数据存储库的发布成为可能,必须将许多事情结合在一起。在现代软件世界中,很容易构建一个能够获取blob数据并将其放在云中某个位置供人们访问的东西。但更困难的是要让数据真正立即可用,而实现这一点需要我们的Wolfram Language和Wolfram Cloud技术堆栈的整体开发,它们现在是Wolfram data Repository的基础。

但现在Wolfram数据存储库已经存在,并且可以设置它的私有版本,这里有很多新的机会。对于研究界来说,最明显的是最终能够进行真正的数据支持发布,在这种情况下,人们可以常规地以人们可以实际使用的方式提供研究片段中的基础数据。在教育决策数据中有各种各样的数据,这些数据易于访问并用于教育练习和项目。

在企业界,它是关于在整个组织中方便地提供数据。对于个人来说,这是关于以一种可以很容易地用于计算和构建的方式来维护数据。

但最后,我看到了Wolfram数据存储库作为定义未来如何处理数据的关键支持技术,我很兴奋,经过这么长时间,它终于发布了,并可供所有人使用。


如需评论,请访问此帖子的副本Wolfram博客»