Фреймворк для извлечения 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)
}