Как извлечь объекты из HTML с помощью обработки естественного языка или другой техники

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

Я еще ничего не начал реализовывать, поэтому, если определенные библиотеки с открытым исходным кодом подходят только для определенного языка, это нормально.

A lot of times the data would not be found in sentences, but instead in html structures like lists (e.g.

  • 2013-02-01 - Название события - Название арены
).

Структура веб-страниц будет сильно отличаться (некоторые могут использовать списки, некоторые могут помещать их в таблицу и т. Д.).

Какие темы я могу изучить, чтобы узнать больше о том, как этого добиться? Существуют ли какие-либо библиотеки с открытым исходным кодом, которые учитывают структуру html при извлечении сущностей? Будет ли извлечение этих (имя, время, место) сущностей из html лучше (или даже возможно) с помощью машинного зрения, где стили CSS могут облегчить различение важных частей (имя, время, местоположение) неструктурированного текста?

Думаю, поможет любое руководство по темам / проектам с открытым исходным кодом, которые я могу исследовать.


person B.McCarthy    schedule 21.11.2013    source источник


Ответы (1)


Многие языки программирования имеют внешние библиотеки, которые генерируют канонические метки даты из различных форматов (например, в Java, используя SimpleDateFormat). Как вы говорите, структура веб-страниц будет сильно отличаться, но дату можно выразить, используя лишь небольшое количество вариантов, поэтому запись регулярных выражений для нескольких (скажем, полдюжины) форматов будет включить извлечение дат с большинства, если не всех, HTML-страниц.

Однако извлечение мест и названий сложнее. Вот где вам понадобится обработка естественного языка. То, что вы ищете, - это Система распознавания именованных сущностей. Одной из лучших систем NER с открытым исходным кодом является Standford NER. Перед использованием вам следует ознакомиться с их онлайн-демонстрацией. В демоверсии есть три классификатора (для английского языка), из которых вы можете выбирать. Для большинства своих задач я считаю их english.all.3class.distsim классификатор достаточно точным.

Обратите внимание, что NER хорошо работает, когда места и имена, которые вы извлекаете, встречаются в предложениях. Если они будут встречаться в HTML-метках, этот подход, вероятно, не будет очень полезным.

person Chthonic Project    schedule 22.11.2013
comment
Я думаю, что общий сценарий будет заключаться в том, что веб-страница будет структурирована, где имя / место / дата не будет в предложениях, поэтому я думаю, что ищу другие идеи. Кроме того, для даты может потребоваться настраиваемая логика, поскольку месяц (например, год) может быть в заголовке страницы, а день - в теле элемента списка. Я начал читать о компьютерном зрении и о том, как его можно использовать для сегментации веб-страницы, которая может быть полезна. Он может учитывать более крупные / полужирные шрифты, чтобы помочь выбрать имена / даты. Пытаюсь найти больше информации об этом. - person B.McCarthy; 23.11.2013