Открыть сервисСервис

OpenRefine

OpenRefine — это свободное, кроссплатформенное приложение с открытым исходным кодом, предназначенное для очистки, трансформации и обогащения неструктурированных или слабоструктурированных данных. Инструмент ориентирован на работу с табличными данными (CSV, TSV, Excel, XML, JSON, RDF) и позволяет пользователю выполнять сложные операции по нормализации, удалению дубликатов, кластеризации, перекодировке и связыванию записей с внешними базами знаний (например, Wikidata, VIAF, DBpedia). OpenRefine часто используется в журналистике данных, библиотечном деле, научных исследованиях и при миграции данных между информационными системами.

История

Проект был основан в 2009 году под названием Freebase Gridworks компанией Metaweb Technologies (организация Meta признана экстремистской и запрещена в РФ). После приобретения Metaweb компанией Google в 2010 году инструмент был переименован в Google Refine. В 2012 году Google передал код проекта сообществу разработчиков, и он получил текущее название OpenRefine. С тех пор развитие осуществляется силами добровольцев, а последний стабильный релиз (версия 3.8.3) вышел в 2024 году.

Ключевые этапы развития:

  • 2009 — выпуск первой версии Freebase Gridworks.
  • 2010 — интеграция с Google Fusion Tables и переименование в Google Refine.
  • 2012 — открытие исходного кода и смена названия на OpenRefine.
  • 2015 — добавление поддержки Wikidata и RDF-экспорта.
  • 2020–2024 — улучшение производительности, поддержка больших наборов данных (до 10 млн строк), обновление интерфейса.

Архитектура и принцип работы

OpenRefine работает как веб-приложение на локальном компьютере. После запуска (через командную строку или скрипт) программа открывает в браузере пользователя интерфейс, через который выполняются все операции. Данные загружаются в оперативную память и обрабатываются в рамках одного проекта.

Основные компоненты

  • Ядро (Core) — модуль на Java, отвечающий за парсинг, хранение и выполнение операций над данными.
  • Интерфейс (UI) — написан на JavaScript (с использованием библиотеки GWT) и предоставляет визуальный редактор для просмотра и редактирования таблиц.
  • Плагины (Extensions) — подключаемые модули, расширяющие функциональность (например, для работы с Wikidata, RDF, геоданными).

Форматы данных

OpenRefine поддерживает импорт из:

  • CSV, TSV, PSV (разделители — запятая, табуляция, вертикальная черта);
  • Excel (.xls, .xlsx);
  • XML, JSON, RDF/XML, Turtle;
  • HTML-таблиц;
  • текстовых файлов с произвольными разделителями.

Экспорт возможен в те же форматы, а также в SQL-скрипты, Excel и RDF.

Основные функции

Очистка данных

  • Удаление дубликатов — поиск и удаление идентичных или близких по значению записей.
  • Кластеризация — группировка вариантов написания (например, «Москва» и «г. Москва») с помощью алгоритмов Левенштейна, метрики Жаккара, фонетического сравнения (Soundex, Metaphone).
  • Фильтрация и сортировка — по условиям, регулярным выражениям, числовым и текстовым шаблонам.
  • Замена значений — массовая замена, удаление лишних пробелов, исправление регистра.

Трансформация

  • Разделение и объединение столбцов — на основе разделителей, позиций символов или регулярных выражений.
  • Извлечение данных — из текста (например, дат, номеров телефонов, адресов) с помощью GREL (General Refine Expression Language).
  • Перекодировка — преобразование кодировок (UTF-8, Windows-1251, KOI8-R) и типов данных (строки в числа, даты).

Обогащение

  • Связывание с внешними источниками — через API Wikidata, VIAF, DBpedia, OpenStreetMap, ORCID и других баз.
  • Добавление столбцов — на основе запросов к внешним сервисам (например, получение координат по адресу через геокодинг).
  • Сопоставление с эталонными данными — реконсилиация (reconciliation) для приведения записей к единому стандарту.

Язык выражений GREL

GREL (General Refine Expression Language) — встроенный язык для манипуляции данными. Он поддерживает:

  • строковые функции (trim, toUpperCase, replace, split);
  • числовые операции (round, floor, ceil);
  • работу с датами (parseDate, formatDate, diff);
  • регулярные выражения (match, find);
  • условные конструкции (if, switch);
  • вызов внешних API (with, get).

Примеры выражений:

  • value.replace("ё", "е") — замена буквы «ё» на «е» во всех ячейках.
  • cells["Дата"].value.toDate("dd.MM.yyyy") — преобразование строки в дату.

Применение

Журналистика данных

OpenRefine активно используется в расследованиях, где требуется обработать утечки данных, базы госзакупок, списки компаний или персон. Например, проект «Bellingcat» применял OpenRefine для анализа открытых данных о перемещениях военной техники.

Библиотечное дело и музеи

Инструмент применяется для каталогизации, нормализации авторских записей, связывания с авторитетными файлами (VIAF, ISNI, LCCN). Библиотеки Конгресса США, Британская библиотека и Национальная библиотека Франции используют OpenRefine для очистки метаданных.

Научные исследования

В биологии, социологии и лингвистике OpenRefine помогает обрабатывать результаты опросов, полевых наблюдений, геномные данные. Например, проект «GBIF» (Global Biodiversity Information Facility) использует OpenRefine для очистки записей о наблюдениях видов.

Миграция данных

При переходе между системами (например, из Excel в SQL-базу или из старой CRM в новую) OpenRefine позволяет выявить и исправить несоответствия, дубликаты и ошибки форматирования.

Ограничения и критика

  • Производительность — при работе с наборами данных более 10–20 млн строк возможны замедления и ошибки из-за ограничений оперативной памяти. Рекомендуется использовать 64-битную версию Java и увеличить выделенную память.
  • Отсутствие автоматизации — большинство операций требуют ручного запуска. Для повторяющихся задач необходимо создавать скрипты (OpenRefine не поддерживает полноценную пакетную обработку без внешних обёрток).
  • Сложность GREL — для массового использования требуется обучение, так как язык не интуитивен для неподготовленных пользователей.
  • Слабая поддержка больших файлов — импорт CSV размером более 1 ГБ может приводить к зависаниям.

Интересные факты

  • OpenRefine является одним из немногих инструментов, который позволяет выполнять реконсилиацию с Wikidata — крупнейшей свободной базой знаний, что делает его незаменимым для проектов, связанных с Linked Open Data.
  • Исходный код проекта написан на Java, но интерфейсная часть использует Google Web Toolkit (GWT) — фреймворк, который компилирует Java-код в JavaScript.
  • В 2020 году OpenRefine был включён в репозитории пакетов для Linux (Debian, Ubuntu, Arch Linux) и доступен через менеджеры пакетов.
  • Существует расширение для интеграции с OpenStreetMap, позволяющее геокодировать адреса и добавлять координаты к записям.

Источники

  • Официальная документация OpenRefine (openrefine.org)
  • Статья «OpenRefine: A Free Tool for Data Cleaning and Transformation» в Journal of Open Research Software, 2019
  • Руководство по использованию OpenRefine в библиотеках (Library of Congress, 2021)
  • Код проекта на GitHub (github.com/OpenRefine)
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru