Я пытаюсь разобрать конкретный контент Википедии в структурированном виде. Вот пример страницы:
http://en.wikipedia.org/wiki/Polar_bear
У меня есть некоторый успех. Я могу определить, что эта страница является «специальной» страницей, и я также могу разобрать информацию о Taxobox (справа) в структуру. Пока все хорошо.
Однако я также пытаюсь разобрать текстовые абзацы. Они возвращаются API в формате Wiki или HTML, в настоящее время я работаю с форматом Wiki.
Я могу прочитать эти абзацы, но я бы хотел «почистить» их особым образом, потому что в конечном итоге мне придется отображать его в моем приложении, и оно не имеет смысла в разметке вики. Например, я хотел бы удалить все изображения. Это довольно просто, отфильтровывая блоки [[Image:]]. Тем не менее, есть также блоки, которые я просто не могу удалить, например:
{{конвертировать | 350 | - | 680 | кг | сокр = на}}
Удаление всего этого блока нарушило бы предложение. И есть десятки подобных обозначений, которые имеют особое значение. Я хотел бы избежать написания 100 регулярных выражений для обработки всего этого и посмотреть, как я могу разобрать это более разумным способом.
Моя дилемма заключается в следующем:
- Я мог бы продолжить свой текущий путь полуструктурированного анализа, где я бы
есть много работы по удалению нежелательных элементов, а также "подражание"
шаблоны, которые нужно визуализировать.
- Или, я мог бы начать с вывода рендеринга HTML и разобрать его, но меня беспокоит то, что такой же хрупкий и сложный синтаксический анализ структурированным образом
В идеале, должна быть библиотека для решения этой проблемы, но я еще не нашел ни одной, подходящей для этой работы. Я также взглянул на структурированные базы данных Википедии, такие как DBPedia, но они имеют ту же структурированную базу данных, что и я, они не предоставляют никакой структуры в самом тексте Вики.