метрическое обучение для поиска информации в полуструктурированном тексте?

Меня интересует парсинг полуструктурированного текста. Предположим, у меня есть текст с такими метками: year_field, year_value, identity_field, identity_value, ..., address_field, address_value и так далее.

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

Количество разного формата может доходить до нескольких десятков, и оно не такое уж жесткое (не считая пробелов, тем более что некоторая информация может добавляться и удаляться).

Я ищу методы машинного обучения, чтобы извлечь все интересующие (поле, значение).

Я думаю, что метрическое обучение и / или условные случайные поля (CRF) могут быть очень полезными, но у меня нет практического опыта работы с ними.

Кто-нибудь уже сталкивался с подобной проблемой?

Есть предложения или литература по этой теме?


person slowlearner    schedule 12.06.2015    source источник
comment
1. Это, вероятно, лучше для stats.stackexchange.com 2. От слишком широкого и основанного на мнениях 3. Рекомендации внешних ресурсов отключены -тема. Пожалуйста, проверьте Какие темы я могу задать здесь? и Каких типов вопросов мне не следует задавать? перед публикацией.   -  person zero323    schedule 12.06.2015
comment
Спасибо, действительно, stats.stackexchange.com - лучшее место для моделирования. Однако я просил здесь программную часть, которая, как я признаю, неочевидна в моем запросе.   -  person slowlearner    schedule 12.06.2015


Ответы (1)


Ваша задача, если я правильно понимаю, - извлечь из текста все предопределенные сущности. Здесь вы описываете в точности распознавание именованных сущностей.

В Стэнфорде есть Stanford Named Entity Recognizer, который вы можете загрузить и использовать (python / java и более)

Что касается моделей, которые вы рассматриваете (например, CRF) - здесь сложнее получить обучающие данные - предложения с уже помеченными сущностями. Вот почему вам следует подумать о получении обученной модели или использовать чужие данные для обучения вашей модели (опять же, модель будет распознавать только те объекты, которые она видела в обучающей части).

Отличным выбором для уже обученной модели на Python является модуль извлечения информации от nltk.

Надеюсь, это подводит итог

person omerbp    schedule 12.06.2015
comment
Спасибо. Но моя проблема немного в другом. В зависимости от источника данных одно и то же слово, скажем Количество, может иметь разные значения, например количество элементов или цена, и следующее значение может не помочь в различении. Однако я могу рассчитывать примерно на такую ​​же структуру текста, поэтому я подумал, что CRF или метрическое обучение подойдут: зная, что до количества я был в состоянии X, количество здесь означает цену. - person slowlearner; 12.06.2015
comment
Хорошо, но с какими (помеченными) данными вы собираетесь его тренировать? - person omerbp; 12.06.2015
comment
Я уже написал полууниверсальный синтаксический анализатор на основе словарей, который извлекает эти пары, и я могу использовать его для аннотаций. НО из-за упомянутой проблемы все еще есть небольшие ошибки, которые я мог бы исправить с помощью регулярного выражения. Тем не менее, я хотел бы более общий подход (чтобы иметь дело с новыми форматами, в конечном итоге). Таким образом, я могу рассчитывать на некоторые аннотации, которые я могу создать (с менее общими подходами). - person slowlearner; 12.06.2015