OpenRefine: различия между версиями
Patarakin (обсуждение | вклад) Новая страница: «{{DigitalTool |Description=OpenRefine - свободный инструмент для извлечения и очистки табличных данных, которые можно связать с базами знаний, включая Викиданные. Он был разработан Google (под названием Google Refine) и сейчас превратился в проект, поддерживаемый сообществом. |Aff...» |
Patarakin (обсуждение | вклад) |
||
| (не показано 7 промежуточных версий этого же участника) | |||
| Строка 8: | Строка 8: | ||
Это инструмент для очистки наборов данных и для выполнения сложных операций с данными. У него есть свой язык GREL похожий на формумы Exel и OpenOffice. | Это инструмент для очистки наборов данных и для выполнения сложных операций с данными. У него есть свой язык GREL похожий на формумы Exel и OpenOffice. | ||
|Difficult=высокий порог входа | |Difficult=высокий порог входа | ||
|Field_of_knowledge=Информатика, Большие данные | |||
|Область применения=образование | |Область применения=образование | ||
|Website=https://openrefine.org/ | |Website=https://openrefine.org/ | ||
| Строка 16: | Строка 17: | ||
|AI=Нет | |AI=Нет | ||
}} | }} | ||
* см. примеры использования [[OpenRefine]] в статье [[Сравнительный анализ психологических школ]] | |||
== Основные возможности == | |||
=== Фасетирование (Faceting) === | |||
Фасетирование позволяет разбить большой [[датасет]] на управляемые подмножества по определённым критериям. С помощью фасетов можно: | |||
* Просмотреть распределение значений в столбце (например, сколько авторов, сколько пустых ячеек) | |||
* Отфильтровать данные по выбранным значениям | |||
* Применить операции только к отфильтрованным строкам | |||
* Выявить аномалии и пропуски в данных | |||
; Пример | |||
:Если в столбце "Авторы" 500 уникальных значений, фасетирование позволит увидеть структуру данных и выявить, что "Иванов И.И." и "иванов и и" — это один человек. | |||
=== Кластеризация (Clustering) === | |||
Кластеризация автоматически группирует похожие значения на основе различных алгоритмов: | |||
* Fingerprinting — консервативный метод (удаляет пунктуацию, регистр, сортирует слова) | |||
* N-Gram Fingerprinting — для выявления опечаток | |||
* Levenshtein — расстояние редактирования между строками | |||
[[Файл:Openrefine cluster Fingerprint.png]] | |||
=== Трансформация данных с GREL === | |||
GREL (General Refine Expression Language) — встроенный язык программирования для сложных преобразований: | |||
* Нормализация текста (приведение к lowercase, удаление пунктуации) | |||
* Условные операции (if-then-else) | |||
* Работа с [[массив]]ами и [[строка]]ми | |||
* [[Регулярные выражения]] | |||
=== История операций (Undo/Redo) === | |||
OpenRefine ведёт полную историю всех операций, позволяя: | |||
* Отменить любую операцию (Undo) | |||
* Вернуться к любому состоянию проекта | |||
* Повторить последовательность операций на новом датасете | |||
[[OpenRefine]] — это незаменимый инструмент для исследователей, работающих с данными. Он особенно полезен в библиометрических исследованиях, где качество данных критично для получения надёжных результатов. Простота использования в сочетании с мощностью [[GREL]] делает его идеальным выбором как для начинающих, так и для опытных аналитиков данных. | |||
== Методы == | |||
=== Key Collision методы (быстрые): === | |||
; Fingerprint (по умолчанию, консервативный) | |||
: Удаляет пунктуацию, переводит в lowercase, сортирует слова | |||
; N-Gram Fingerprint | |||
: Использует n-граммы (последовательности символов) | |||
=== Phonetic Fingerprint === | |||
С алгоритмами: Metaphone 3, Soundex, Cologne Phonetic, Beider-Morse | |||
==== Nearest Neighbor методы (медленные, но точные): ==== | |||
; Levenshtein Distance (Edit Distance) | |||
: Считает операции редактирования для преобразования одной строки в другую | |||
; PPM (Prediction by Partial Matching) | |||
: Очень агрессивный, много false positives | |||
== Подсказки по [[GREL]] == | |||
{{#ask: [[GREL]] | ?Description }} | |||
{{Шаблон:GREL clue}} | |||
Текущая версия от 10:19, 17 апреля 2026
| Краткое описание инструмента | OpenRefine - свободный инструмент для извлечения и очистки табличных данных, которые можно связать с базами знаний, включая Викиданные. Он был разработан Google (под названием Google Refine) и сейчас превратился в проект, поддерживаемый сообществом. |
|---|---|
| Возможности |
Это инструмент для очистки наборов данных и для выполнения сложных операций с данными. У него есть свой язык GREL похожий на формумы Exel и OpenOffice. |
| Трудности использования | высокий порог входа |
| Область знаний | Информатика, Большие данные |
| Область применения | образование |
| Поясняющее видео | |
| Веб-сайт | https://openrefine.org/ |
| Пользователи | Преподаватели, Исследователи |
| Используется для создания (проведения) | |
| Разработчик | |
| Сообщество вокруг средства | |
| Лицензия | Открытая |
| Год первого релиза | |
| Совместное сетевое использование | Нет |
| Какой язык основной | English |
| Есть ли поддержка Искусственным Интеллектом | Нет |
- см. примеры использования OpenRefine в статье Сравнительный анализ психологических школ
Основные возможности
Фасетирование (Faceting)
Фасетирование позволяет разбить большой датасет на управляемые подмножества по определённым критериям. С помощью фасетов можно:
- Просмотреть распределение значений в столбце (например, сколько авторов, сколько пустых ячеек)
- Отфильтровать данные по выбранным значениям
- Применить операции только к отфильтрованным строкам
- Выявить аномалии и пропуски в данных
- Пример
- Если в столбце "Авторы" 500 уникальных значений, фасетирование позволит увидеть структуру данных и выявить, что "Иванов И.И." и "иванов и и" — это один человек.
Кластеризация (Clustering)
Кластеризация автоматически группирует похожие значения на основе различных алгоритмов:
- Fingerprinting — консервативный метод (удаляет пунктуацию, регистр, сортирует слова)
- N-Gram Fingerprinting — для выявления опечаток
- Levenshtein — расстояние редактирования между строками
Трансформация данных с GREL
GREL (General Refine Expression Language) — встроенный язык программирования для сложных преобразований:
- Нормализация текста (приведение к lowercase, удаление пунктуации)
- Условные операции (if-then-else)
- Работа с массивами и строками
- Регулярные выражения
История операций (Undo/Redo)
OpenRefine ведёт полную историю всех операций, позволяя:
- Отменить любую операцию (Undo)
- Вернуться к любому состоянию проекта
- Повторить последовательность операций на новом датасете
OpenRefine — это незаменимый инструмент для исследователей, работающих с данными. Он особенно полезен в библиометрических исследованиях, где качество данных критично для получения надёжных результатов. Простота использования в сочетании с мощностью GREL делает его идеальным выбором как для начинающих, так и для опытных аналитиков данных.
Методы
Key Collision методы (быстрые):
- Fingerprint (по умолчанию, консервативный)
- Удаляет пунктуацию, переводит в lowercase, сортирует слова
- N-Gram Fingerprint
- Использует n-граммы (последовательности символов)
Phonetic Fingerprint
С алгоритмами: Metaphone 3, Soundex, Cologne Phonetic, Beider-Morse
Nearest Neighbor методы (медленные, но точные):
- Levenshtein Distance (Edit Distance)
- Считает операции редактирования для преобразования одной строки в другую
- PPM (Prediction by Partial Matching)
- Очень агрессивный, много false positives
Подсказки по GREL
| Description | |
|---|---|
| GREL | GREL (Google/General Refine Expression Language) — это выражения, которые используются в OpenRefine для фильтрации, преобразования и агрегирования данных в ячейках и столбцах. По смыслу GREL для OpenRefine играет ту же роль, что формулы для Excel или SQL‑запросы для баз данных: позволяет выполнять более сложные операции, чем доступно через стандартные пункты меню. |
| Контекст: что хотим сделать | Где и в каком режиме | Пример Expression (GREL) |
|---|---|---|
| Преобразовать текстовую дату в тип Date (для временных рядов) | Меню столбца с датой → Edit cells → Common transforms → To date (выбор GREL не нужен, но важно понимать, что OpenRefine внутри применяет преобразование типа) | (автоматическое преобразование ISO‑строки, например `"2022-07-06T06:37:06Z"`)
— отдельное выражение не вводим |
| Вытащить год из даты в новый столбец (переменная времени \(t\)) | Меню столбца с датой → Edit column → Add column based on this column… → язык: GREL | value.toDate().toString("yyyy")
Создаёт столбец `year` с годом, используемым как временной индекс |
| Построить строковое представление «год‑месяц» (для месячных рядов) | Меню столбца с датой → Add column based on this column… | value.toDate().toString("yyyy-MM")
Например, "2024-03" |
| Очистить пробелы в начале/конце и узнать длину строки | Меню столбца с текстом → Edit cells → Transform… | value.trim().length()
Полезно для диагностики «грязных» строк, где есть лишние пробелы |
| Заменить подстроку (очистка категорий) | Меню столбца → Edit cells → Transform… | value.replace("old","new")
Например, объединить разные варианты написания категорий |
| Объединить значения двух столбцов (конструирование идентификатора панели) | Меню любого из столбцов → Edit column → Add column based on this column… | cells["user"].value + "_" + cells["board_id"].value
Создаёт composite key вида "user_board", удобный для группировок |
| Превратить JSON‑массив в строку с разделителем (подготовка к Split multi-valued cells) | Меню столбца с массивом (например, idBoards) → Edit cells → Transform… | value.join("|")
После этого используем Edit cells → Split multi-valued cells… с разделителем |
| Посчитать количество строк с той же парой user–board (агрегация по ключу) | В режиме Rows, любой столбец → Edit column → Add column based on this column… | length(
filter(
rows,
r,
r.cells["user"].value == cells["user"].value &&
r.cells["board_id"].value == cells["board_id"].value
)
)
Даёт частоту пары (аналог COUNT(*) GROUP BY user, board_id) |
| Посчитать сумму числового показателя по user–board (например, events) | Аналогично: Add column based on this column…, предварительно столбец events → To number | sum(
forEach(
filter(
rows,
r,
r.cells["user"].value == cells["user"].value &&
r.cells["board_id"].value == cells["board_id"].value
),
r, r.cells["events"].value
)
)
Аналог SUM(events) GROUP BY user, board_id |
| Фильтровать строки, где значение содержит подстроку (кастомный facet) | Меню столбца → Facet → Custom text facet… | value.contains("wiki_edit")
Возвращает true/false для фасета, удобно для выделения определённых типов событий |

