Выбор детского сада в Москве

В Москве больше 2000 детских садов. В очередь на зачисление можно встать в несколько. Какие садики выбрать и какой указать приоритетным? На днях я сделал попытку дать ответ на этот вопрос.
7266b9eb3bd349e18c14afabc69adaf1
Хотел бы рассказать про некоторых технические детали решения. В ходе работы со школьными данными я заметил, что на сайтах школ публикуется много отзывов. У этих данных есть 4 особенности:

  1. Отзывов много. Около 40 000 штук на 700 школ за 2015, 2016 годы. Это больше, чем на специальных сайтах про школьные отзывы типа www.schoolotzyv.ru и schools.mel.fm.
  2. 90% отзывов — про детские сады. Почему-то про садики пишут чаще и больше. Даже на obr.msk.ru оставляют отзывы про сады, хотя явно указано, что нужны впечатления о школах.
  3. 99.9% отзывов положительные. Это печально, потому что читать только положительные отзывы неинтересно.
  4. В 95% отзывов родители персонально благодарят воспитателей. Например, «Инна Юрьевна находит подход к каждому, может унять любой утренний каприз ребенка и помочь родителям».


Поэтому появилась идея сделать вот что:
Тексты отзывов сами по себе не интересны, но интересны упоминания воспитателей. Можно попробовать узнать, каких сотрудников чаще всего благодарят и на основе этого делать свой выбор.

Чтобы выделить имена, я использовал яндексовый Томита-парсер. Три раза прочитал документацию, ничего не понял. К счастью, в их репозитории нашёлся пример, который делает ровно то, что нужно. Чуть-чуть модифицировал код, чтобы находились не только ФИО, но и мена без фамилия. Воспитателей часто упоминают по имени отчеству. Грамматика получается такая:

PersonName -> Word | Word;

Person -> PersonName interp (Person.Name);


Вы можете запалить код для запуска Томиты и парсинга результатов его работы. На сколько я понимаю, это, более или менее, единственное доступное решение для выделения имён из русскоязычных текстов. На отзывах точность получается около 95%.

88e2303a2ad247bba9972ba5a226de45

Отдельный квест — это объединить имена в отзывах и анкеты воспитателей со школьных сайтов. Имя и отчество Томита нормализует автоматически, а фамилию оставляет как есть. Поэтому убираем окончания самостоятельно с помощью snowball-стеммера. На сайтах школ ФИО учителей заполнены почти всегда хорошо. Остаётся только привести к общему виду написания типа «Наталья» и «Наталия». В отзывах в половине случаев на воспитателя ссылаются по ФИО, а в половине — по имени отчеству. В 90% случаев в рамках школы сотрудники не дублируются по имена отчеству, поэтому адресата благодарности почти всегда можно определить однозначно. Самая большая проблема заключается в том, что списки сотрудников на сайтах школ неполные и устаревшие. Из-за этого удаётся провязать только 70% имён.

Ещё хотел бы упомянуть инструмент, который меня выручает уже не первый раз. Это детектор лиц из opencv. С его помощью лица воспитателей можно модно поместить в центр кружочков:
4ffb27933b3b459c989cd0a1336976ec

Вы можете запалить соответствующий кусочек кода в репозитории obr.msk.ru. Да, этот детектор плохо работает на людях в очках, да, наверняка есть более продвинутые решения. Но на фотках учителей в 90% случаев результат получается хороший.

Наверное, единственный более важный фактор, чем воспитатели — это расположение детского сада. На сайтах школ адреса садов можно найти в соответствующем меню:
abce6fcc1d8a4331852f3f4a4562cca2

Чтобы нанести в это дело на карту используется ещё один инструмент, который выручал меня бесчисленное количество раз — это яндексовый геокодер. Небольшой хак — когда не удаётся геокодировать адрес однозначно, можно добавить к адресу слово «Москва». Например, не «Улица Ленина, 15», а «Москва Улица Ленина, 15».
4a83013ba6cb48ba8fea80a22a4e2cc9

На всякий случай ссылка на код с вызовом геокодера и на на разбор результатов его работы.

© Habrahabr.ru