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
Затем я сделал следующее:
- Кластеризованный новый столбец COMPLETE_ADDRESS с алгоритмом по умолчанию
- Объединены значения в каждом кластере (теперь значения идеально дублируют друг друга)
- Сортировать столбец навсегда.
- Выполните операцию "заглушить".
- Наконец, выберите только ненулевые значения в COMPLETE_ADDRESS
Сказав, что на момент написания этой статьи нет возможности объединять независимые столбцы. Единственный способ сделать это - соответствующим образом разделить COMPLETE_ADDRESS на отдельные столбцы. В этом случае вам придется использовать лучший разделитель, такой как труба "|" символ, который не будет конфликтовать с существующими ценностями.