使用旧世界计算的WebAutomation扩展在RapidMiner中解析JSON

Jana_OWCJana_OWC 主持人,成员,KB贡献者职位:14因素二世
你好,

我们是一家总部位于德国波鸿的咨询公司,专注于将数据科学和大数据作为企业的战略能力。乐鱼平台进入我们还开发了RapidMiner扩展,为RapidMiner带来了一堆有用的功能!我们认为您可能有兴趣了解我们的扩展以及如何使用它们,所以我们将从这里开始使用我们的WebAutomation扩展的教程,使您能够轻松解析JSON和集成REST api。

我们希望这对你有用,请随时在下面问任何问题或在Twitter上找到我们!我们将很快上传更多教程,解释各种扩展的其他功能

旧世界计算的WebAutomation扩展


扩展将解析JSON的过程分为两个步骤。在第一步中,用户应用特殊运算符来定义JSON数据的格式。该定义可以作为存储库中的常规对象保存,也可以动态生成。第二步是应用规范将JSON解析为一个或多个数据集。有几种操作符可以实现这一点:虽然可以从文件或数据集中读取数据,但还有一种方便的请求操作符,可以直接从web服务中获取数据。使用原始JSON数据后,所有这些操作符将解压缩对象的结构,并创建一个或多个示例集,以便在进一步分析中使用。


定义从JSON数据中提取简单表的格式

那么它到底是如何工作的呢?例如,假设提供了JSON格式的图书数据。数据来自内部数据库,以JSON字符串的形式存储。

{"books":[{"title":"Java ist auch eine Insel", "subtitle":" einfhrung, Ausbildung, Praxis", "authors":[{"first name":"Christian", "last name":"Ullenboom"}], "language":"German", "edition":"13 "。,aktualisierte und überarbeitete Auflage", "publication date":2018, "publishing company":"Bonn Rheinwerk Verlag", "keywords":[ "Java Standard Edition 8", "Java Standard Edition 9", "Programming" ] }, { "title":"The elements of statistical learning", "subtitle":"data mining, inference, and prediction", "authors":[ { "first name":"Trevor", "last name":"Hastie" }, { "first name":"Robert", "last name":"Tibshirani" }, { "first name":"Jerome", "last name":"Friedman" } ], "language":"English", "edition":"2. ed., corr. at 5. print.", "publication date":2011, "publishing company":"NY Springer", "keywords":[ "Machine Learning", "Statistics" ] }, { "title":"Learning Spark", "subtitle":"lightning-fast data analysis", "authors":[ { "first name":"Holden", "last name":"Karau" }, { "first name":"Andy", "last name":"Konwinski" }, { "last name":"Wendell" }, { "first name":"Matei", "last name":"Zaharia" } ], "language":"English", "publication date":2015, "publishing company":"Beijing [u.a.] O'Reilly", "keywords":[ "Machine Learning", "Cluster", "Big Data" ] } ] }

查看JSON,您将看到数据中有几个关系不能用简单的表表示。例如,每本书可以有不同的作者对象。但是现在,我们只打算提取表格数据,但是扩展可以很容易地将这些关系提取为单独的关系表或使用重复条目进行非规范化。

从右边的树视图中也可以看到,扩展使用带有子流程的操作符来建模JSON的结构。Process Object操作符中有一个Array操作符,该操作符又容纳了Extract Properties和Commit Row操作符。

这些操作符一起定义了如何从JSON文件中提取数据的结构。Process Object和Process Array将告诉解析器输入对象或数组。由于JSON总是以对象或数组开头,所以最外层的操作符将不包含任何参数。但是,请注意,在这个外部操作符内部,可以有进一步的进程数组和进程对象操作符,它们将具有参数,镜像JSON结构。

让我们看看内部进程数组操作符是怎样的:

在这里,我们输入“books”属性并将其定义为一个对象数组。现在进程数组操作符内部发生的任何事情都将对内部对象作出反应。

看一下process Array的内部进程,我们看到两个操作符:Extract Properties和Commit Row。对象中找到对象时应该发生什么一个给定JSON的数组。简而言之,这个过程定义了解析器应该提取一些属性并将它们作为属性存储在结果示例集中,然后在处理对象时完成结果示例集中的一行,这意味着我们可以从当前对象的属性中提取具有标量值(如字符串、数字或布尔值)的任何信息。一旦我们完成了这些,我们就可以提交行,这样每个对象就由结果示例集中的一行表示。

在这种情况下,对象都有标题字幕,和更详细的信息,如语言出版日期.为了提取这些属性,我们在extract properties操作符中配置extract properties参数:在“property”下,我们设置属性的名称。在这个例子中有标题,副标题等等。在右边的“属性名称和类型”下面,我们可以自由地指定属性的名称及其类型。当使用定义进行解析时,结果将包含此属性,并将信息存储在其中。

请注意,需要将规范对象传递给Process object和Process Array操作符的输出。总是有一个输入和多个输出,但您至少必须提供一个输出。您可以在最外层的Process Object或Process Array操作符上获得最终规范。

使用解析器规范解析JSON数据

在下一段中,我们将看到如何使用上一段中创建的规范来实际解析JSON。我们将继续从数据库表中获取图书数据的场景。我们现在需要做的就是添加一个来自Data的Process JSON操作符,向它提供数据和解析器规范,并告诉它哪个属性包含JSON数据。

然后,解析器将接受输入规范并为每个规范生成一个数据集。


您可以对其他各种解析操作符使用相同的规范。有一个可以从文件和文件对象中解析JSON,在与RapidMiner评分代理或RapidMiner服务器的web服务连接时非常方便。您还可以使用由宏交付的JSON,它的应用程序主要作为web服务部署或web应用程序构建。最后但并非最不重要的一点是,与新操作符的集成可以与RESTful web服务交互,从而可以直接解析web服务响应,而无需额外开销。



Tghadially varunm1 IngoRM yyhuang jwpfau ChristianK

答案

登录注册置评。