在一个大的示例列表上循环脚本

TobiasNehrigTobiasNehrig 成员职位:41大师
2018年11月编辑 帮助

嗨,专家,

我有一个例子集与1属性和1975个例子,每个是一个网页的内容)。

输入如下所示:

18-01-04 . list mit 1975 Spon text .png

对于每个例子,我想执行一个R脚本来拆分单词,创建一个双图图列表,并将其存储在一个列表中,以便以后分析它们。

我想,我可以使用循环值运算符在每个示例上运行脚本,但是运算符将在所有1975个示例上循环1975次。

如果我使用循环示例操作符,它也会运行所有示例,但在这种情况下,进程在第二个循环开始时终止,并出现错误信息:PM INFO: [1] "Failed to execute the script.";PM INFO:[1] "计算错误:参数"…’应该是字符向量(或强制对象)。”

这是我的过程:

<?xml version="1.0" encoding="UTF-8"?> <过程version = " 8.0.001”>
> <上下文
<输入/ >
<输出/ >
<宏/ >
> < /上下文

<过程扩展= " true " >


< /操作符>


< /操作符>



<过程扩展= " true " >

<参数key="script" value="library(dplyr) library(tidytext) rm_main = function(data) { 如果(is.data.frame(数据)){& # 10;& # 9;spon_words & lt; -数据%祝辞% & # 10;& # 9;Unnest_tokens (bigram, text, token = "ngram ", n = 2) } & # 10; & # 9;打印(spon_words) & # 10; & # 10;返回列表((spon_words)) & # 10;} & # 10;" / >
< /操作符>



< /操作符>


<参数键=“脚本”值= " rm_main = function(数据)& # 10;{& # 10;& # 9;图书馆(dplyr) & # 10; & # 9;图书馆(tidytext) & # 10; & # 9;图书馆(tidyr) & # 10; & # 10; & # 9; count_bigrams & lt; -数据%祝辞% & # 10;& # 9;count(word1, word2, sort = TRUE) print(count_bigrams) & # 10;返回(counted_bigrams) & # 10;} & # 10;" / >
< /操作符>



<参数key="script" value="rm_main = function(data) { library(dplyr) library(tidytext) library(tidyr) 库(igraph) & # 10; & # 10;- data %>% Filter (n >= 10) %>% graph_from_data_frame& # 10;打印(bigram_graph) & # 10;& # 9 # bigram_graph & lt;——data.frame (bigram_graph) & # 10; & # 10;& # 9;图书馆(ggraph) & # 10;& # 9; set.seed (2017) & # 10; & # 10; graph <- ggraph(bigram_graph, layout = "fr") + geom_edge_link() + geom_node_point() + geom_node_text(aes(label = name), vjust = 1, hjust =1) setwd("/home/knecht") #graph.write(graph, "/home/knecht/graph01.txt",, "edgelist") #ggsave(filename = "foo300.png", width = 5, height = 4, dpi = 300, units = "in", device='png') return(list(graph)) } "/>
< /操作符>



















> < /过程
< /操作符>

<过程扩展= " true " >

<参数key="script" value="library(dplyr) library(tidytext) rm_main = function(data) { 如果(is.data.frame(数据)){& # 10;& # 9;spon_words & lt; -数据%祝辞% & # 10;& # 9;Unnest_tokens (bigram, text, token = "ngram ", n = 2) } & # 10; & # 9;打印(spon_words) & # 10; & # 10;返回列表((spon_words)) & # 10;} & # 10;" / >
< /操作符>



< /操作符>


<参数键=“脚本”值= " rm_main = function(数据)& # 10;{& # 10;& # 9;图书馆(dplyr) & # 10; & # 9;图书馆(tidytext) & # 10; & # 9;图书馆(tidyr) & # 10; & # 10; & # 9; count_bigrams & lt; -数据%祝辞% & # 10;& # 9;count(word1, word2, sort = TRUE) print(count_bigrams) & # 10;返回(counted_bigrams) & # 10;} & # 10;" / >
< /操作符>



<参数key="script" value="rm_main = function(data) { library(dplyr) library(tidytext) library(tidyr) 库(igraph) & # 10; & # 10;- data %>% Filter (n >= 10) %>% graph_from_data_frame& # 10;打印(bigram_graph) & # 10;& # 9 # bigram_graph & lt;——data.frame (bigram_graph) & # 10; & # 10;& # 9;图书馆(ggraph) & # 10;& # 9; set.seed (2017) & # 10; & # 10; graph <- ggraph(bigram_graph, layout = "fr") + geom_edge_link() + geom_node_point() + geom_node_text(aes(label = name), vjust = 1, hjust =1) setwd("/home/knecht") #graph.write(graph, "/home/knecht/graph01.txt",, "edgelist") #ggsave(filename = "foo300.png", width = 5, height = 4, dpi = 300, units = "in", device='png') return(list(graph)) } "/>
< /操作符>


















> < /过程
< /操作符>










> < /过程
< /操作符>
> < /过程

有人能告诉我怎么解决这个问题吗?

问候

托拜厄斯

标记:

最佳答案

  • MartinLiebigMartinLiebig 管理员,版主,员工,RapidMiner认证分析师,RapidMiner认证专家,大学教授职位:3314年RM数据科学家
    解决方案接受

    你好,

    你可以用:

    迭代宏上的普通循环+过滤器示例范围

    组到集合+循环集合

    两者都可以很好地解决这个问题。

    最好的

    马丁

    - RapidMin乐鱼平台进入er数据科学服务主管
    德国多特蒙德
    sgenzer

答案

  • sgenzersgenzer 12管理员,版主,员工,RapidMiner认证分析师,社区经理,成员,大学教授,PM版主职位:2959年社区经理

    你好@TobiasNehrig-嗯,我更喜欢使用文本处理扩展和操作符“从数据处理文档”。类似于tokenize, generate n-gram,等等:

    <?xml version="1.0" encoding="UTF-8"?> <过程version = " 8.0.001”>
    > <上下文
    <输入/ >
    <输出/ >
    <宏/ >
    > < /上下文

    <过程扩展= " true " >


    < /操作符>


    < /操作符>



    <过程扩展= " true " >

    <参数key="script" value="library(dplyr) library(tidytext) rm_main = function(data) { 如果(is.data.frame(数据)){& # 10;& # 9;spon_words & lt; -数据%祝辞% & # 10;& # 9;Unnest_tokens (bigram, text, token = "ngram ", n = 2) } & # 10; & # 9;打印(spon_words) & # 10; & # 10;返回列表((spon_words)) & # 10;} & # 10;" / >
    < /操作符>



    < /操作符>


    <参数键=“脚本”值= " rm_main = function(数据)& # 10;{& # 10;& # 9;图书馆(dplyr) & # 10; & # 9;图书馆(tidytext) & # 10; & # 9;图书馆(tidyr) & # 10; & # 10; & # 9; count_bigrams & lt; -数据%祝辞% & # 10;& # 9;count(word1, word2, sort = TRUE) print(count_bigrams) & # 10;返回(counted_bigrams) & # 10;} & # 10;" / >
    < /操作符>



    <参数key="script" value="rm_main = function(data) { library(dplyr) library(tidytext) library(tidyr) 库(igraph) & # 10; & # 10;- data %>% Filter (n >= 10) %>% graph_from_data_frame& # 10;打印(bigram_graph) & # 10;& # 9 # bigram_graph & lt;——data.frame (bigram_graph) & # 10; & # 10;& # 9;图书馆(ggraph) & # 10;& # 9; set.seed (2017) & # 10; & # 10; graph <- ggraph(bigram_graph, layout = "fr") + geom_edge_link() + geom_node_point() + geom_node_text(aes(label = name), vjust = 1, hjust =1) setwd("/home/knecht") #graph.write(graph, "/home/knecht/graph01.txt",, "edgelist") #ggsave(filename = "foo300.png", width = 5, height = 4, dpi = 300, units = "in", device='png') return(list(graph)) } "/>
    < /操作符>



















    > < /过程
    < /操作符>

    <过程扩展= " true " >

    <参数key="script" value="library(dplyr) library(tidytext) rm_main = function(data) { 如果(is.data.frame(数据)){& # 10;& # 9;spon_words & lt; -数据%祝辞% & # 10;& # 9;Unnest_tokens (bigram, text, token = "ngram ", n = 2) } & # 10; & # 9;打印(spon_words) & # 10; & # 10;返回列表((spon_words)) & # 10;} & # 10;" / >
    < /操作符>



    < /操作符>


    <参数键=“脚本”值= " rm_main = function(数据)& # 10;{& # 10;& # 9;图书馆(dplyr) & # 10; & # 9;图书馆(tidytext) & # 10; & # 9;图书馆(tidyr) & # 10; & # 10; & # 9; count_bigrams & lt; -数据%祝辞% & # 10;& # 9;count(word1, word2, sort = TRUE) print(count_bigrams) & # 10;返回(counted_bigrams) & # 10;} & # 10;" / >
    < /操作符>



    <参数key="script" value="rm_main = function(data) { library(dplyr) library(tidytext) library(tidyr) 库(igraph) & # 10; & # 10;- data %>% Filter (n >= 10) %>% graph_from_data_frame& # 10;打印(bigram_graph) & # 10;& # 9 # bigram_graph & lt;——data.frame (bigram_graph) & # 10; & # 10;& # 9;图书馆(ggraph) & # 10;& # 9; set.seed (2017) & # 10; & # 10; graph <- ggraph(bigram_graph, layout = "fr") + geom_edge_link() + geom_node_point() + geom_node_text(aes(label = name), vjust = 1, hjust =1) setwd("/home/knecht") #graph.write(graph, "/home/knecht/graph01.txt",, "edgelist") #ggsave(filename = "foo300.png", width = 5, height = 4, dpi = 300, units = "in", device='png') return(list(graph)) } "/>
    < /操作符>


















    > < /过程
    < /操作符>

    <列出关键= " specify_weights " / >
    <过程扩展= " true " >








    > < /过程
    < /操作符>





    > < /过程
    < /操作符>
    > < /过程

    这有帮助吗?

    斯科特

  • TobiasNehrigTobiasNehrig 成员职位:41大师

    @sgenzer

    谢谢你的回答。输入数据先前被抓取并使用提取内容、标记句子、过滤停止词和按长度过滤进行预处理。但是用N-Gram算子,我没有得到任何进一步的图形。所以我尝试实现整洁文本方法(www.tidytextmining.com)通过执行R操作符。使用这种方法,如果我提前对1975个示例中的每一个运行脚本,我也会尝试找到共现现象。

    问候

    托拜厄斯

  • sgenzersgenzer 12管理员,版主,员工,RapidMiner认证分析师,社区经理,成员,大学教授,PM版主职位:2959年社区经理

    哦,我明白了。好的。你想要每个例子的双元图还是整个数据集的双元图?

    你能附上截图中显示的数据集吗?

    斯科特

  • TobiasNehrigTobiasNehrig 成员职位:41大师

    嗨,是的,我想为每个例子创建一个双元图。

    我不知道如何附加数据集,但这是生成数据集的过程:

    <?xml version="1.0" encoding="UTF-8"?> <过程version = " 8.0.001”>
    > <上下文
    <输入/ >
    <输出/ >
    <宏/ >
    > < /上下文

    <过程扩展= " true " >

    <过程扩展= " true " >

    http://www.spiegel.de" / >
    <列出关键= " crawling_rules " >


    < / >列表








    < /操作符>




    < /操作符>





    > < /过程
    < /操作符>


    < /操作符>








    <列出关键= " specify_weights " >

    < / >列表
    <过程扩展= " true " >


    < /操作符>



    < /操作符>




    < /操作符>



    < /操作符>








    > < /过程
    < /操作符>






    > < /过程
    < /操作符>
    > < /过程
  • TobiasNehrigTobiasNehrig 成员职位:41大师

    @mschmitz

    非常感谢你的建议。对于正常循环的提示,由于我的计算机缺乏RAM,它不起作用。但收集循环在很短的时间内就能完美地工作。

    问候

    托拜厄斯

  • MartinLiebigMartinLiebig 管理员,版主,员工,RapidMiner认证分析师,RapidMiner认证专家,大学教授职位:3314年RM数据科学家

    @TobiasNehrig

    这很可能是因为通常的循环是并行运行的,这会占用更多的内存。如果您停用此功能,它也应该与通常的循环一起工作。

    最好的

    马丁

    - RapidMin乐鱼平台进入er数据科学服务主管
    德国多特蒙德
    sgenzer
  • sgenzersgenzer 12管理员,版主,员工,RapidMiner认证分析师,社区经理,成员,大学教授,PM版主职位:2959年社区经理

    所以RapidMiner的一个小技巧-右键单击你想保存的结果标签,然后选择“在存储库中存储ExampleSet”:

    截屏2018-01-08上午9.14.44 .png

    然后,如果你想把它发送给别人,最简单的方法就是找到它在你的驱动器上,然后使用社区帖子部分的“选择文件”按钮来附加:

    截图2018-01-08上午9.16.59 .png

    好了,现在看看你的双字母图……请继续关注。

    斯科特

  • sgenzersgenzer 12管理员,版主,员工,RapidMiner认证分析师,社区经理,成员,大学教授,PM版主职位:2959年社区经理

    故事是这样的——你可以用“黑客”的方式,或者“正确”的方式来做这件事。:)“黑客”的方法是使用非常老的,几乎弃用的报告扩展,将创建一个PDF与您的图表。我在这篇文章中附上了一个过程,这样你就可以看到我是如何做到的。

    之所以说这是一种“黑客”方式,是因为RM Studio并不是真正为BI设计的。它是一个数据科乐鱼平台进入学平台——我们把BI留给其他平台,比如Qlik、Tableau等,或者我们把结果推送到RM Server的生产环境中。所以“正确”的方法是使用其中一种技术。

    过程和样本结果PDF附件。注意,您需要向RM Studio添加报表扩展。

    斯科特

  • TobiasNehrigTobiasNehrig 成员职位:41大师

    @sgenzer我非常感谢你的帮助。嗯,我选择老式的“时尚”方式;)

    托拜厄斯

    sgenzer
登录注册置评。