Как извлечь данные из файлов электронной почты в формате HTML через OpenNLP?

Я работаю над проектом, в котором я отправил по электронной почте квитанции от различных курьерских агентов. Электронные письма имеют формат HTML.

Но не все они образуют определенную структуру. Каждое письмо имеет разный формат. Я попробовал jsoup для извлечения данных, но сложно написать извлечение для каждого конкретного типа html. Мне нужно извлечь имя, из местоположения, в местоположение, организацию и несколько других деталей из почты. Я пробовал openNLP, но он не распознает все местоположения и имена. Он улавливает некоторые местоположения, если они представлены в форме предложения.

Могу ли я создать свои собственные тренировочные данные с содержимым html, аннотировать их и обучить их обнаруживать местоположения и имена на основе html-структуры, имеющейся у меня в тренировочных данных?


person rag muk    schedule 02.01.2016    source источник
comment
Ни один распознаватель сущностей не может работать идеально. Вероятно, вам следует использовать другой токенизатор, чем по умолчанию. Обучение модели распознавателя на данных HTML не поможет. Я также не понимаю, почему вы должны писать извлечение для разных HTML с помощью Jsoup. В вопросе слишком много аспектов, пожалуйста, сделайте его более сфокусированным.   -  person Vihari Piratla    schedule 04.01.2016
comment
Распознаватель сущностей НЕ изучит структурную информацию из HTML. От местоположения и до местоположения всегда будут местоположения и однозначно идентифицируются как местоположения. Вы вполне можете инвестировать в написание регулярных выражений или правил jsoup для каждого типа курьера.   -  person Josep Valls    schedule 26.01.2016


Ответы (1)


Я думаю, что ваш первоначальный подход стоит продолжить. Я вижу вариант для 2 шагов здесь:

  1. Получите «текстовое» содержимое почты с помощью Jsoup. Пример этого здесь: Получить текст из html Использование Jsoup.

  2. Используйте OpenNLP или StanfordNLP NER для извлечения именованных сущностей. Места, имена и т. д.

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

Что касается получения from location и to location, вы можете попытаться создать дерево синтаксического анализа для предложений, здесь есть отличный пример: Извлечь именное словосочетание из предложений OpenNLP. Просто измените код, чтобы получить PP (предложная фраза) в line 65, поскольку в настоящее время он получает NP (именная фраза).

Вы заметите, что from location и to location являются предложными фразами (от и до являются предлогами). Как только вы получите предложные фразы из предложений, вы можете попытаться извлечь компонент существительного (после предлога) и использовать другие эвристики, чтобы определить, являются ли они местоположениями.

Что-то, что также может быть очень полезным, это если у вас есть лексикон возможных местоположений. Если есть лексикон, то ваше «пространство поиска» меньше, вы можете проверить свои предложные фразы, чтобы увидеть, являются ли они известными местоположениями.

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

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

person pelumi    schedule 19.03.2016