Википедия:Вики-конференция 2012/Программа/Круглые столы/Википедия и базы данных: проблема актуализации статей

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

Ниже приведён примерный текст доклада участника Ivan A. Krestinin, с которого был начат круглый стол, выступлений других участников круглого стола здесь нет. Раздел «Выводы» также резюмирует только этот первый доклад, но не круглый стол в целом.

Введение

[править код]

Первые версии многих статей Википедии были созданы как стабы на основе сведений из различных баз данных, например, статьи о реках России создавались на основе данных Государственного водного реестра, о населённых пунктах — с использованием базы ОКАТО и т. д. То есть в определённый момент времени была взята актуальная на тот момент версия базы данных и на основе этой версии были созданы статьи.

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

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

Если говорить техническим языком, то проблема в отсутствии связи между статьёй и базой данных. Я с различным уровнем успеха работал над установлением подобных связей в нескольких группах статей, там были статьи о населённых пунктах России и базы ОКАТО, реки России и Государственный водный реестр, космические аппараты и базы NASA. Подробно я остановлюсь на двух примерах..

Курсы валют

[править код]

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

Сложность состоит в том, что число статей в которых нужно обновлять курсы не фиксировано, как и число мест в этих статьях. Решение такое — в статьи вставляется не сам курс, а шаблон. Таким образом все сведения подлежащие ежедневному обновлению оказываются сосредоточенными в единственном шаблоне. Шаблон имеет несколько параметров для выбора необходимых данных и формата их представления.

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

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

Список космических запусков

[править код]

В качестве базы данных здесь выступает список поддерживаемый Джоном Макдауэлом. В нём указана дата запуска, стартовая площадка, тип ракета-носителя, тип полезной нагрузки, её имя и международного идентификатора.

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

Статьи требующие обновления — это 56 статей-списков разбитые по годам. Здесь также было применено решение с отделением данных от оформления, однако в обратном порядке: всё форматирование было вынесено в два отдельных шаблона, а в самих статьях остались только данные.

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

Выводы

[править код]

Итак, суммируя свой опыт, могу отметить следующие решения, которые были удачными:

  1. Разнесение данных и отображения на отдельные страницы;
  2. Обработка данных из базы не роботом, а механизмом шаблонов Википедии, в идеале будет лучше, если робот будет просто копировать исходную базу без обработки;
  3. Разделение данных на основные (обновляемые автоматически) и поправки к ним (обновляемые вручную).

Остались нерешёнными такие проблемы:

  1. Сложность полученных механизмов, отсутствие стандартов реализации, индивидуальный подход к каждой задаче;
  2. Монополизация страниц ботом плохо согласуется с принципами Википедии;
  3. Неполная открытость схемы, в частности обычные участники не могут напрямую влиять на работу бота, обновляющего данные;
  4. Отсутствие заменимости автора такого решения, например, если у меня будут проблемы с каналом, свободным временем или ещё что-нибудь, то механизм обновления может сломаться. Из-за его сложности найти участника, который смог бы продолжить поддерживать механизм обновления проблематично.