Проекты с открытым исходным кодом для очистки электронной почты, генерирующие структурированные данные из неструктурированного источника?

Не знаю, с чего начать, так что, надеюсь, вы, ребята, сможете прояснить мой вопрос. У меня есть проект, где по электронной почте будут искать конкретные слова / шаблоны и хранить в структурированном виде. Что-то, что сделано с Trip it.

В статье говорится, что они разработали DataMapper

DataMapper отвечает за прием входящих сообщений электронной почты, адресованных планам [at] tripit.com, и преобразование их из полуструктурированного формата, который вы видите в своем почтовом ридере, в высокоструктурированный XML-документ.

Есть комментарий, в котором также говорится

Если вы хотите построить это самостоятельно, полезно прочитать немного о Wrappers и Wrapper Induction.

Я гуглил и читал об индукции обертки, но это было слишком широкое определение и не помогло мне понять, как можно решить эту проблему.

Есть ли какой-нибудь проект с открытым исходным кодом, который делает подобные вещи?

2 ответа

Действительно очень широкий вопрос, но я могу попытаться дать вам несколько общих идей, которых может быть достаточно для начала. По сути, это звучит так, как будто вы говорите о сложной проблеме синтаксического анализа - сканировании текста и поиске смысла для определенных фрагментов. В зависимости от того, что именно вы ищете, вы можете получить хорошие результаты из нескольких регулярных выражений - такие вещи, как номера телефонов, адреса электронной почты и даты, имеют довольно стандартные структуры, которые должны соответствовать друг другу. Для других точек данных могут быть полезны некоторые индикаторные слова - фраза "отход от" может указывать на то, что ниже следует адрес. Сообщество по обработке естественного языка также имеет большой набор инструментов, доступных для обработки текста - проверьте такие элементы, как речевые теги и семантические анализаторы, если они соответствуют тому, что вы пытаетесь сделать.

Вооружившись этими приемами, вы можете следовать базовому итеративному процессу разработки: для каждой точки данных в ожидаемой структуре вывода определите несколько простых правил для ее сбора. Затем запустите приложение для пакета тестовых данных и посмотрите, какие образцы не захватили эту информацию. Посмотрите на образцы и пересмотрите свои правила, чтобы поймать эти образцы. Повторяйте, пока экстрактор не достигнет приемлемого уровня точности.

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

Есть несколько разных способов и способов сделать это.

Первая часть, которая включает в себя получение доступа к содержанию электронной почты, я не буду здесь отвечать. По сути, я предполагаю, что у вас есть доступ к тексту электронных писем, и если вы этого не сделаете, есть несколько библиотек, которые позволяют подключить Java к почтовому ящику, например, Camel ( http://camel.apache.org/mail.html).

Итак, теперь у вас есть электронная почта, и что тогда?

Удобная вещь, которая может помочь, состоит в том, что в lingpipe ( http://alias-i.com/lingpipe/) есть распознаватель сущностей, который вы можете заполнить своими собственными терминами. В частности, посмотрите на некоторые из их учебников по извлечению и их экстрактор словаря ( http://alias-i.com/lingpipe/demos/tutorial/ne/read-me.html) Так внутри экстрактора словаря lingpipe ( http://alias-i.com/lingpipe/docs/api/com/aliasi/dict/ExactDictionaryChunker.html) вы просто импортируете интересующие вас термины и используете их, чтобы связать ярлыки с электронной почтой.

Вам также может пригодиться следующий вопрос: Распознавание именованных объектов на основе словаря с нулевым расстоянием редактирования: LingPipe, Lucene или что?

Другие вопросы по тегам