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

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

Введение

править

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

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

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

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

Курсы валют

править

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

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

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

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

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

править

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

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

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

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

Выводы

править

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

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

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

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