Как стать автором
Обновить

Комментарии 16

Интересно. У вас там пример - "Вот такой адрес: в Москве на улице 16-й Парковой в доме номер 2, кв.3 произошло интересное событие". Если ввести эту же фразу в dadata - он разбирает тоже правильно. А какая у вас стоимость за "стандартизацию"? У dadata 10 копеек за запись. Первые 100 записей — бесплатно.

В отличие от DaData, здесь стоимость за всё SDK без ограничений, так как обработка производится локально, без обращения к внешним ресурсам. Цена - договорная.

Проверил, dadata.ru ошибается на фразе "664050, Жукова 11 365"

Геокоординаты: 52.3487025, 104.2296791 maps соответственно не верны.

В адресе индекс правильный и некорректное сокращение названия проспекта,.

В результате не тот район города, самоуверенно поставлен другой индекс.

Человек всегда может придумать пример (в области обработки текстов), который будет не по зубам самому лучшему алгоритму. Здесь всегда останется процент ошибок, для этого и используются разные метрики - полнота, точность и F-мера. Если сравнивать разные системы, то по этим метрикам на некотором количестве адресов (аналогично как проводят конкурсы по NER и т.п.). А так всегда можно найти пример адреса, понимаемый одной системой и не понимаемый другой.

«поселение Михайловский»

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

Банальное «возбуждено уголовное дело» хоть и отличается от общеязыкового «заведено уголовное дело», но хоть остается в рамках грамматики русского языка. Тут же какой-то грамматический трэш.

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

чувствительно к регистру:
«г. москва ул. кржижановского 15-2-1»
и к разделителям:
«г. москва ул. Кржижановского 15-2-1
г. москва ул. Кржижановского 15/2/1»

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

Насчёт разделителей - это вообще больная тема. 15-2-1 - это что? Тут даже человек не разберёт. Например, в Забайкальском крае 10/1 обычно обозначают дом 10 и квартиру 1. В других местах это просто номер через дробь. Часть неопределённости снимается при использовании информации из ГАР ФИАС. Но в общем случае неопределённость в таких случаях неразрешима.

в общем случае вообще ничего неразрешимо))
именно вот этот dadata эти два случая обрабатывает одинаково:
«г. москва ул. Кржижановского 15-2-1
г. москва ул. Кржижановского 15/2/1»
правильно или не правильно, это другой вопрос, но одинаково. и для человека это вобщем тоже, одно и тоже.
и насчет регистра:
вот если написано вот так — «г. москва ул. кржижановского» — то «кржижановского» это ну прям точно улица адреса (т.к. слово редкое и в словаре есть), если вот так — «московская область, деревня хуево-кукуево» или «деревня малые ямки» — тут уже вопрос адрес это или нет. вощем получается со словарным подходом надо ещё словарь доразмечать — что там ну прям точно адреса, а что не точно…

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

Немного запоздало, но всё-таки. В версии 4.14 это "побеждено" - теперь регистр символов не важен, также возможен пропуск ключевых слов. Варианты типа "г. москва кржижановского 15-2-1" теперь обрабатывает корректно.

А вы умеете (и позволяете) достраивать индексы? Ну т.е. вот в моем проекте одним из основных требований (которым, кстати, тогда не удовлетворял движок дадаты) было именно это умение. То есть, я прогнал через движок некоторое число адресов (обычно очень большое, порядка миллионов), получил кучку ответов, которые не были распознаны, сверил их ручками с чем-то (либо с реальностью, либо с другой картой типа Google/Yandex, убрал неопределенность — могу я все это достроить в ваш индекс, взятый из ФИАС, чтобы через неделю адрес уже распознался успешно, даже если завтра ФИАС обновится?

Индекс ГАР ФИАС достраивать нет смысла - он фиксирован и полностью перестраивается от версии к версии. Там объекты имеют вполне определённую структуру, уникальные GUID и пр. Но он - лишь вспомогательный инструмент при анализе адресов, который даёт возможность убедиться в существовании того или иного объекта, а также убрать неопределённость в ряде случаев.

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

Поясню на примере. В недавней загрузке было много вот так оформленных адресов: "196620,Санкт-Петербург г,Пушкин г,Анциферовская(Гуммолосары) ул", которые на самом деле "город Санкт-Петербург муниципальный округ город Пушкин территория Гуммолосары улица Анциферовская", то есть в скобках внутри улицы уровня 8 указывался объект уровня 7. После доработки алгоритма эти случаи стали обрабатываться корректно. Но без доработки алгоритма внешними настройками решить эту задачу проблематично.

Так алгоритм Pullenti совершенствуется от загрузки к загрузке.

Да, видел такие адреса — очень много проблем они вызывали.

Любопытно, спасибо. Кстати, вот здесь https://habr.com/ru/company/hflabs/blog/260601/ есть несколько примеров реально существующих, но необычных адресов. Почти все из них разбираются на сайте правильно, кроме одного - "Бывают адреса без улицы. И даже без дома.", например: Звенигород, Супонево, корп 1.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации