OpenRefine - кластеризация между столбцами

Как представляется, кластеризация между столбцами пока не поддерживается с помощью OpenRefine.

Есть ли у кого-нибудь предложения о том, как кластеризовать "модели" на основе "производителей", подобно тому, как "город" будет основан на "штате" (многие "Спрингфилд" могут существовать в США, но только кластер "город"): "Спрингфилд", если столбец относительного "состояния" совпадает)? Относительный столбец уже нормализован.

2 ответа

Решение

Один из простых способов сделать это - создать столбец, представляющий собой конкатенацию модели + производителя, кластеризовать объединенные поля, а затем (при необходимости) снова разделить две части на части.

У меня было похожее требование для дедупликации адресных строк. Поэтому я создал новый столбец (скажем, COMPLETE_ADDRESS) и соединил поля STREET, CITY, PROVINCE, COUNTRY и ZIPCODE, используя приведенное ниже выражение GREL

cells["STREET"].value + " " + cells["CITY"].value + " " + cells["PROVINCE"].value + " " + cells["COUNTRY"].value + " " + cells["ZIPCODE"].value

Затем я сделал следующее:

  1. Кластеризованный новый столбец COMPLETE_ADDRESS с алгоритмом по умолчанию
  2. Объединены значения в каждом кластере (теперь значения идеально дублируют друг друга)
  3. Сортировать столбец навсегда.
  4. Выполните операцию "заглушить".
  5. Наконец, выберите только ненулевые значения в COMPLETE_ADDRESS

Сказав, что на момент написания этой статьи нет возможности объединять независимые столбцы. Единственный способ сделать это - соответствующим образом разделить COMPLETE_ADDRESS на отдельные столбцы. В этом случае вам придется использовать лучший разделитель, такой как труба "|" символ, который не будет конфликтовать с существующими ценностями.

Другие вопросы по тегам