Очистить неструктурированное название места в структурированный формат
У меня около 300 тыс. Неструктурированных данных, как показано на экране ниже. Я пытаюсь использовать Google уточнение или OpenRefine, чтобы исправить это. Тем не менее, я не могу найти правильный способ сделать это. Я новичок в этом инструменте. Любая помощь будет принята с благодарностью. Кроме того, этот инструмент довольно медленно обрабатывает записи по 300 тыс. Если я пытаюсь что-то сделать, это занимает много времени, чтобы обработать и дать вывод.
ИЛИ Пожалуйста, предложите какие-либо другие инструменты и методы с открытым исходным кодом, чтобы сделать это?
1 ответ
Как сказал Оуэн в комментариях, ваш вопрос, вероятно, слишком широкий и не может получить приемлемый ответ. Мы можем просто предоставить вам общую процедуру для подражания.
В Open Refine вам нужно будет создать столбец на основе грязного столбца и применить преобразования для удаления нежелательных символов. Вам придется использовать регулярные выражения. Но для этого необходимо уметь определять закономерности. Мне не понятно, почему "ST" из "Nat.secu ST". это важно, но не "США" в "Масси Интертех США". Даже "36" в "Plowk 36" (Google не знает этого слова, поэтому я не уверен, что это название организации).
Однако на основе ваших пятнадцати строк мы, кажется, различаем некоторые четкие закономерности. Например, похоже, что вам придется удалить токены (наборы символов без пробелов) в конце строки, содержащей символ #. Для этого формула GREL в Open Refine может выглядеть так:
value.trim().replace(/\b\w+#\w+\b$/,'')
Вот скринкаст, если он вам не понятен.
Но иногда название компании может содержать #, и в этом случае вам нужно будет создать более сложные правила. Например, удаляйте токен, только если строка содержит более двух слов.
if(value.split(' ').length() > 2, value.replace(/\b\w+#\w+\b$/, ''), value)
И так далее для других шаблонов, которые вы найдете (например, любая последовательность чисел в конце, которая содержит более 4 чисел и одно - между ними)
Не стесняйтесь проверять документацию Open Refine в случае сомнений.