Фреймворк для извлечения Dbpedia - как убрать разметку в MediaWiki

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

Я могу потратить некоторое время на написание своего собственного кода, чтобы избавиться от этого, но я предполагаю, что нечто подобное будет полезно для dbpedia - и что оно существует где-то в библиотеке. Я прав? И если так - где дополнительная функциональность для обнажения текста?

В противном случае - кто-нибудь знает какие-либо другие (предпочтительно scala) пакеты для разметки MediaWiki?

редактировать

В ответ на запрос о более подробной информации. Следующая разметка:

''An italicised '''bit''' of text'', <b>Some markup</b>

Проходит через dbpedia как содержимое TextNode, но не тронутое. Я хотел бы иметь возможность раздеть это до:

 An italicised bit of text, Some markup

Или, возможно, к более структурированному AST с дополнительными узлами, представляющими каждый раздел необработанного текста, возможно аннотированным (на каждом узле) типом применяемого форматирования (например, курсивом, полужирным шрифтом и т. Д.).

Таким образом, конечный результат анализа dbpedia по-прежнему довольно полон разметки.

Надеюсь, это поможет.

3 ответа

Решение

Итак, быстрый взгляд на SimpleWikiParser Исходный код на sourceforge предполагает, что с 29.01.2011 анализатор обрабатывает следующие объекты:

  • Комментарии
  • Рекомендации
  • кодовые блоки
  • внутренние ссылки и внешние ссылки
  • свойства
  • столы.

Предположительно весь вики-контент заканчивается TextNode объекты. Глядя на набор функций разметки вики, было бы нетривиально много работы по извлечению элементов синтаксиса вики, не говоря уже о преобразовании их далее в структурированные элементы.

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

Для автономного, но несовершенного решения вы можете выполнить несколько регулярных выражений замены на node.text,

Проект gwtwiki (bliki) обрабатывает форматирование медиа-вики -> pdf/html/etc. Это довольно полная структура для разбора и переформатирования текста в медиа-вики.

Вы можете начать этот процесс, используя WikiUtil.removeWikiEmphasis и добавив несколько дополнительных правил.

В моем случае я сопоставляю текст с toWikiText и связываю узлы с их целевым именем.

case text:TextNode => text.toWikiText
case link:LinkNode => {
link match {
   case external:ExternalLinkNode =>  (external.destination.toString)
   case internal:InternalLinkNode =>  (internal.destination.decodedWithNamespace)
   case inter:InterWikiLinkNode   =>  (inter.destination.decodedWithNamespace)
}
Другие вопросы по тегам