Создание нового атрибута

В Rapidminer у меня есть набор данных с атрибутом, называемым адресом, который содержит адрес свойства, что мне нужно сделать, это создать новый атрибут, который будет содержать только последние 3 слова в каждом адресе свойства. т.е. 231 новая дорога, графство Дублин, Ирландия, что я хочу иметь, это графство Дублин, Ирландия, в новом атрибуте. Может ли кто-нибудь помочь мне с этим процессом, так как я очень новичок в Rapidminer. Я попытался сделать это с помощью процесса создания атрибута, используя параметры выражения функции, но безуспешно.


person user2133572    schedule 22.04.2013    source источник


Ответы (1)


Это может быть проще, но вы можете использовать оператор Execute Script и некоторые регулярные выражения. Этот пример скрипта заменит значения атрибута «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+)$ Возможно, вам придется адаптировать регулярное выражение к вашим данным.

person Josef Borkovec    schedule 22.04.2013