OpenRefine начинающий вопрос преобразования текстового документа - PullRequest
0 голосов
/ 08 апреля 2020

В Национальном музее фотографии в Нидерландах у нас есть небольшая проблема импорта, которую мы не можем решить самостоятельно.

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

- смайлик lo go - начало новой записи, черный lo go говорит: да У меня есть белый lo go говорит, нет, еще нет (идея была с ручкой, которую можно было бы закрасить на отпечатке). Lo go, конечно, можно заменить любой комбинацией букв, которую мы можем отфильтровать позже. .

Первое поле - это заголовок, который (иногда) продолжается во втором и / или более строках в первом столбце

Справа в первом ряду указан год публикации

Есть несколько полей, которые обычно имеют перед собой имя поля:

  • ISBN
  • Trefwoord (является ключевым словом (ями)
  • Uitg. ( является издателем)
  • Текст (является автором)
  • Красный. (является редактором)

-Тогда у нас есть имена участвующих фотографов, что делает форматирование довольно грязный. Обычно фотографы находятся во втором и третьем столбце. Это может быть от одного фотографа до 30 или около того имен и они отформатированы как используется в книге (так иногда с полным именем, а иногда только с буквами).
НО,
довольно часто у нас также есть фотографы в первом столбце. Затем они находятся между заголовком (или содержимым поля Tekst) и ISBN.

К счастью, коллектор использует [. ] вполне последовательно в качестве разделителя. Как бы вы go о в OpenRefine? Желательно сначала разделить записи и сгруппировать их, а затем начать с создания столбцов для каждого содержимого с именем поля впереди. Поместите второй и третий столбец в большое количество полей в конце, которые называются фотографом1, до фотографа ХХ. А затем уберите беспорядок в первом столбце вручную. Это путь к go? И будет ли кто-то с большим опытом здесь, так любезен, чтобы дать нам стартовую руку, объясняя, как мы go о.

1 Ответ

0 голосов
/ 08 апреля 2020

Возможно, вы новичок в OpenRefine, но ваш вопрос довольно сложный и требует глубоких знаний инструмента. :)

Мне кажется невозможным извлечь нужную информацию, кроме как с помощью массового использования регулярных выражений.

Чтобы дать вам представление о том, как действовать:

1 ° Импортируйте свои текстовые файлы как «Текстовый файл на основе строки», чтобы содержимое находилось в одном столбце.

2 ° В этом столбце определите строки, начинающиеся с ☻, используя текстовый фильтр на этот символ. Из отфильтрованного столбца создайте новый столбец с «Изменить столбец, добавить столбец на основе этого столбца». Назовите эту новую запись столбца и удалите текстовый фильтр. Переместите новый столбец в начало.

Результат должен выглядеть следующим образом:

enter image description here

Теперь примените «Редактировать ячейки, объединить многозначные ячейки» в столбце 1, используя пробел в качестве разделителя, чтобы получить следующее:

enter image description here

3 ° Вы можете затем начните извлекать информацию из ваших двух столбцов.

  • Из нового столбца «запись» можно извлечь даты с помощью этой формулы GREL в окне «Добавить столбец на основе этого столбца»:

    value.find(/\d+[\.\]]?$/)[0].replace(/\D/, '')

  • Из основного столбца 1 вы можете извлечь «Trefwoord» с помощью:

    value.find(/Trefwoord:.+?\./)[0].split(":")[1]

  • То же самое для ISBN , et c.

  • Извлекать заголовки будет сложнее, поскольку необходимо будет разделить те, которые помещаются в одну строку, и те, которые продолжаются на следующей строке. Это потребует более сложных формул GREL.

  • Существует несколько возможных стратегий извлечения имен фотографов.

  • Продолжайте чистить, пока не почувствуете качество правильное, зная, что оно не будет на 100% идеальным.

...