0

在 rapidminer 中,我有一个数据集,其中包含一个名为 address 的属性,其中包含属性地址,我需要做的是创建一个新属性,该属性仅包含每个属性地址中的最后 3 个单词。即 231 新路爱尔兰都柏林郡我想要的是新属性中的都柏林郡爱尔兰。任何人都可以帮助我完成这个过程,因为我对 rapidminer 非常陌生。我曾尝试使用函数表达式选项通过生成属性过程来做到这一点,但没有成功。

4

1 回答 1

0

可能有一种更简单的方法可以实现这一点,但您可以使用执行脚本运算符和一些正则表达式。此示例脚本将仅用最后三个单词替换属性“att1”的值:

import java.util.regex.*

exampleSet = operator.getInput(ExampleSet.class)
Pattern p = Pattern.compile("^.*?(\\S+\\s\\S+\\s\\S+)\$")
for(Example example : exampleSet){
    value = example["att1"]
    print(value)
    Matcher m = p.matcher(value)
    if(m.matches()){
        example["att1"] = m.group(1)
    }
}
return exampleSet

编辑:

确实有更简单的方法:将Generate extract运算符与正则表达式一起使用:(\S+\s\S+\s\S+)$您可能需要使正则表达式适应您的数据。

于 2013-04-22T18:20:31.580 回答