Доработка парсера естественного языка (NLP, NER) на базе Python

55 555 руб. за проект
24 сентября 2021, 11:45 • 4 отклика • 56 просмотров
Принцип работы парсера:
Парсер должен уметь обрабатывать сообщения риелторов о продаже/аренде недвижимости и извлекать из сообщений информацию, параметры. Должен выделять в каждом сообщении разные предложения объектов недвижимости и выделять среди предложений следующие параметры: адрес объекта или название ЖК, тип предложения (аренда/продажа), тип сделки (квартира, дом, земля), площадь, этаж/этажность, цена, комиссия, форма оплаты (ипотека/наличные) и другие. После обработки, должен возвращать результат в виде объекта.

В одном сообщении могут упоминаться объекты только на аренду или только на продажу. Нас интересует только продажа. Все сообщения с арендой исключаются из обработки.

В 1 сообщении часто указываются несколько объектов. Перед парсингом параметров объекта необходимо разделить сообщение на объекты.

Разделение сообщения на разные объекты:
1) Присутствуют явные разделители между сообщениями
2) Упоминание рядом (в одной строке) сочетаний сущностей объект (ЖК/дом/земля) + адрес + цена

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

Сообщение является обработанным, если выполнены следующие условия:
1) Определен тип объекта:
1.1) Тип "КВАРТИРА":
- Идентификация по: ЖК или адрес или слова "квартира, ...")
- Обязательные параметры для распознавания: ЖК или адрес
1.2) Тип "ЗЕМЛЯ":
- Идентификация по: слова "сотка, земля, ..."
- Обязательные параметры для распознавания: адрес
1.2) Тип "ДОМ":
- Идентификация по: слова "дом, земля, сотка, ..." + этажность или отделка или слова "дом, ..."
- Обязательные параметры для распознавания: адрес

2) Определение типа сделки:
2.1) Продажа
- Идентификация по: слова "продам" или цена в млн.р
2.2) Аренда
- Идентификация по: слова "сдам" или цена в тыс.р

Если распознаны пункты 1 + 2 - объект считается распознанным.

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

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

Парсер разработан на базе Python (структура во вложении). Веб-интерфейс разметки реализован на node.js (React, Meteor.js) (пример разметки во вложении).

Модули:
pytest
pymorphy2
pyyaml>=3.13
sklearn
sklearn-crfsuite
symspellpy>=6.7.0
dbf

Задачи:
1) Разобраться в текущей системе парсера на Python
2) Выполнить доработки парсера согласно ТЗ
3) Добавить качества распознавания не ниже 50% от общего числа корректных сообщений

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