Как извлечь сущности из HTML, используя обработку естественного языка или другую технику
Я пытаюсь разобрать сущности с веб-страниц, которые содержат время, место и имя. Я немного читал об обработке естественного языка и извлечении сущностей, но я не уверен, что иду по неверному пути, поэтому я спрашиваю здесь.
Я еще ничего не начал реализовывать, поэтому, если определенные библиотеки с открытым исходным кодом подходят только для определенного языка, это нормально.
Много раз данные не будут найдены в предложениях, а вместо этого в HTML-структурах, таких как списки (например,
- 2013-02-01 - Название мероприятия - Название арены
Структура веб-страниц будет сильно отличаться (некоторые могут использовать списки, некоторые могут поместить их в таблицу и т. Д.).
Какие темы я могу исследовать, чтобы узнать больше о том, как этого добиться? Существуют ли библиотеки с открытым исходным кодом, которые учитывают структуру html при извлечении сущностей? Было бы лучше (или даже возможно) извлечь эти (имя, время, место) сущности из html с помощью машинного зрения, где стилизация CSS могла бы облегчить разграничение важных частей (имени, времени, местоположения) неструктурированного текста?
Любое руководство по темам / проектам с открытым исходным кодом, которые я могу исследовать, помогло бы мне подумать.
1 ответ
Многие языки программирования имеют внешние библиотеки, которые генерируют канонические отметки даты из различных форматов (например, в Java, используя SimpleDateFormat
). Как вы говорите, структура веб-страниц будет сильно отличаться, но дату можно выразить, используя только небольшое количество вариаций, поэтому запись регулярных выражений для нескольких (скажем, полдюжины) форматов будет включить извлечение дат из большинства, если не всех, HTML-страниц.
Однако добыча мест и названий сложнее. Вот тут-то и придётся обрабатывать естественный язык. Вам нужна система распознавания именованных сущностей. Одна из лучших систем NER с открытым исходным кодом - NER Standford. Перед использованием вы должны проверить их онлайн-демо. Демо имеет три классификатора (для английского), которые вы можете выбрать. Для большинства моих задач я нахожу их english.all.3class.distsim
Классификатор будет достаточно точным.
Обратите внимание, что NER работает хорошо, когда места и имена, которые вы извлекаете, встречаются в предложениях. Если они встречаются в HTML-метках, этот подход, вероятно, не будет очень полезным.