Каков наилучший способ расширить викитексты полного дампа Википедии?

Легко скачать дампы Википедии в формате XML. Однако содержание статей пишется в викитексте, который имеет систему шаблонов. Чтобы извлечь из этих дампов чистые полные тексты, необходимо расширить эти шаблоны. Википедия предоставляет для этого API, но он не подходит для расширения всего дампа. Можно найти несколько скриптов для работы с викитекстом, например, этот написан на python, но они все кажется устаревшим или просто не имеет дело с шаблонами. Другой способ решить эту проблему — запустить Wikimedia на компьютере и использовать API:Expandtemplates, но это кажется довольно громоздким решением. Наконец, HTML-дампы также существуют, но я предпочитаю работать с расширенными вики-текстами, так как это упрощает работу с вики-ссылками, таблицами, разделами и т. д.

Моя цель здесь — извлечь чистые тексты, сохранив вики-ссылки и отказавшись от сложных шаблонов, таких как информационные окна. Есть ли у вас какие-либо идеи, как решить эту проблему расширения шаблона?


person Robin    schedule 10.03.2021    source источник
comment
Это в значительной степени безнадежно, шаблоны — это собственный язык программирования, а не хорошо документированный. Если простого отбрасывания шаблонов недостаточно (это может сделать mwparserfromhell), лучше всего сделать или найти дамп вывода HTML с помощью новый синтаксический анализатор и полагаться на закодированную в нем семантическую информацию для преобразования ее обратно в обычный текст с аннотациями ссылок.   -  person Tgr    schedule 11.03.2021
comment
Это может быть хорошим вариантом, спасибо за ссылку на спецификации. У вас есть идеи, как я могу найти дамп HTML? Последние дампы относятся к 2008 году...   -  person Robin    schedule 11.03.2021
comment
Кроме того, знаете ли вы хорошую документацию по языку программирования, используемому для шаблонов?   -  person Robin    schedule 11.03.2021
comment
Теоретически дампы HTML будут доступны в ближайшее время. Сейчас вам придется просканировать сайт, я думаю. Шаблоны задокументированы здесь, но это всего лишь структура, они могут содержать что угодно, от специальных команды, извлекающие содержимое из другой вики во встроенный код Lua. Как я уже сказал, переделывать практически безнадежно.   -  person Tgr    schedule 11.03.2021


Ответы (2)


Я сделал решение, которое использует Kiwix для получения чистых текстов из Википедии. HTML, созданный Kiwix, кажется, легко анализируется для моей цели. Вы можете проверить код здесь, но имейте в виду, что в настоящее время он ненадежен.

Также вы можете скачать дамп (английский и французский), созданный этим решением.

person Robin    schedule 25.03.2021
comment
Это так здорово!! - person Akira; 05.04.2021

Я считаю, что https://github.com/tatuylonen/wikitextprocessor/ делает то, что вам нужно:

Это пакет Python для обработки файлов дампа WikiMedia для Викисловаря, Википедии и т. д., для извлечения данных, проверки ошибок, автономного преобразования в HTML или другие форматы и других целей. Ключевые особенности включают в себя:

  • Разбор файлов дампа, включая встроенную поддержку параллельной обработки страниц
  • Синтаксический анализатор викитекста, который преобразует всю страницу в дерево разбора
  • Извлечение определений шаблонов и определений модулей Scribunto Lua из файлов дампа
  • Расширение выбранных шаблонов или всех шаблонов, а также эвристическая идентификация шаблонов, которые необходимо расширить перед синтаксическим анализом (например, шаблоны, которые выдают начальные и конечные теги таблицы).
  • Обработка и расширение функций парсера викитекста
  • Обработка, выполнение и расширение модулей Scribunto Lua (они очень широко используются, например, в Викисловаре, например, для генерации строк IPA для многих языков)
  • Контролируемое расширение частей страниц для приложений, которые перед анализом анализируют общую структуру страницы, а затем расширяют шаблоны в определенных разделах страницы.
  • Сбор информации из аргументов шаблона при их расширении, поскольку аргументы шаблона часто содержат полезную информацию, недоступную в расширенном содержимом.
person Palmik    schedule 16.04.2021