循环文件操作符的问题
你好,
我是论坛和RapidMiner的新手,所以请原谅任何冗余或缺乏细节。
我正在使用CRC出版社出版的《RapidMiner:数据管理用例和业务分析应用》第14章(健壮的语言识别)中的流程。流程从这里下载:http://rapidminerbook.com/index.php/chapter-downloads-13-24/chapter-14/
附件1显示了该流程的屏幕截图,附件2显示了循环文件子流程
我成功地加载了进程,并下载了语言语料库http://corpora.informatik.uni-leipzig.de/download.html
我改变了循环文件操作符的目录,从存放语料库的文件夹中读取。目录中有五个文件(德语、英语、法语、葡萄牙语和西班牙语)。循环文件操作符似乎成功地读取了所有文件,但给出了第6个输出,这看起来毫无意义。附件3显示了任何语言文件(在本例中是英语)的预期输出。附件3显示了无意义的输出。附件5显示了抛出的错误,可能是由无意义的输出引起的。谁能告诉我为什么会这样,怎么解决?谢谢!
0
最佳答案
-
thapli_64 成员职位:18Maven
答案
你好@thapli_64-欢迎来到社区。因此,首先,如果你能在这个帖子中分享你的XML过程(回复时请参阅右边的“有用的提醒”),那么我们就可以真正地复制你正在做的事情,这将会更容易。其次,我刚刚从RapidMinerBook和循环文件操作符中查看了该过程,该操作符自上个版本以来已弃用:
左边已弃用的循环文件操作符这是新的循环文件操作符
所以我建议将操作符移动到旧的“循环文件”中,并在新的“循环文件”中重新布线,然后再试一次。然后将您的XML粘贴到这里,我们将看到您得到了什么。
斯科特
斯科特,
感谢您的欢迎、回复和建议!我已经尝试了你提到的,它抛出了同样的错误。我附上了截图。请看下面的XML:
谢谢!
Racchit。
<?xml version="1.0" encoding="UTF-8"?> <过程version = " 7.6.001”>
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
> <上下文
<输入/ >
<输出/ >
<宏/ >
> < /上下文
<过程扩展= " true " >
<过程扩展= " true " >
/> .
<列出关键= "注释" / >
<列出关键= " data_set_meta_data_information " / >
< /操作符>
<列出关键= " rename_additional_attributes " / >
< /操作符>
< /操作符>
<列出关键= " function_descriptions " >
< / >列表
< /操作符>
<列出关键= " set_additional_roles " / >
< /操作符>
<枚举关键= "分区" >
< /枚举>
< /操作符>
< /操作符>
<列出关键= " specify_weights " / >
< /操作符>
/> .
> < /过程
< /操作符>
<过程扩展= " true " >
/> .
<列出关键= "注释" / >
<列出关键= " data_set_meta_data_information " / >
< /操作符>
<列出关键= " rename_additional_attributes " / >
< /操作符>
< /操作符>
<列出关键= " function_descriptions " >
< / >列表
< /操作符>
<列出关键= " set_additional_roles " / >
< /操作符>
<枚举关键= "分区" >
< /枚举>
< /操作符>
< /操作符>
<列出关键= " specify_weights " / >
< /操作符>
/> .
> < /过程
< /操作符>
< /操作符>
< /操作符>
< /操作符>
< /操作符>
< /操作符>
<列出关键= " set_additional_roles " / >
< /操作符>
< /操作符>
/> .
/> .
> < /过程
< /操作符>
> < /过程
托马斯,
它确实存在于从5个预期数据文件中提取的数据中(见附件中的德语语料库截图)。错误由第6个意外输入抛出。我得想办法摆脱它。它不应该在那里。
你好@thapli_64-好的,谢谢(下次请使用>工具插入您的XML).所以最好的调试方法是使用“断点”,看看在引起麻烦的操作符之前的数据是什么样子的:
添加断点添加断点
我猜是一样的@Thomas_Ott你会看到第六次“language”属性没有了。
斯科特
斯科特,
再次感谢你的建议——我边做边学!
是的,我一直在使用断点来弄清楚发生了什么,这就是我如何发现正在读入的额外数据。您是对的,该错误确实是由于此时缺少语言属性而抛出的。我之前已经发现了,但没有分享,因为我觉得根本原因是第6个数据集被读取,这本来就不应该在那里。我这样想错了吗?它应该在那里吗?
见附件截图。正如你所看到的,我添加了一个断点来查看输入到set role标签操作符中的内容。结果屏幕截图显示,5个预期文档的文本和语言属性都有,但第6个文档却没有。显然,循环文件子进程是为了有效地处理实际的语言语料库文件而设置的,但不是这种错误情况。所以错误情况根本不应该出现。如果我说错了,请指正。
所以@sgenzer,罪犯似乎是一个'。由read csv操作符从目录读入DS_STORE文件,该操作符反过来输出错误的结果(附件1)。
附件2显示了Deutsch文件的预期结果。
附件3显示文件夹中只有5个文件。我找不到任何隐藏文件。
我该怎么解决这个问题?为什么循环文件/读取CSV操作符读取这个文件?
啊,有趣的是,我几乎要问你是否在Mac上,因为如果你是而且不使用RegEx表达式过滤掉. ds_store文件,你会有问题。这是一个隐藏的文件,会导致各种挑战。很高兴你自己解决了。
斯科特
感谢斯科特!这特别烦人,但这个过程是有教育意义的。通过这个调试过程,我学到了很多关于每个操作符的知识,并对RapidMiner有了更多的信心——这是我第一次认真使用RM。
这是我的荣幸@thapli_64.享受RapidMiner之旅。这是一个爆炸。
斯科特