почтовый индекс электронной почты

Используем почтовые индексы в своём приложении во благо

почтовый индекс электронной почты. Смотреть фото почтовый индекс электронной почты. Смотреть картинку почтовый индекс электронной почты. Картинка про почтовый индекс электронной почты. Фото почтовый индекс электронной почтыЯ думаю, что на многих сайтах пользователя спросят его физический адрес. Для доставки ли, для отсылки бумажного спама уведомлений ли. И, в общем-то — это мелочь. Вбил индекс, Москва, область, район, село, улица, дом, квартира. Казалось бы, что тут упрощать, каждый вроде помнит свой адрес, трудно ли его вбить? Но дьявол, как всегда, кроется в мелочах: пользователь опечатывается в адресе, посылка уходит не туда, лучи «добра» идут вам в обратную связь и вообще жизнь плохеет.

И она есть! Всамделишняя, электронная и, главное, официальная база индексов от Почты России.

Встречайте: vinfo.russianpost.ru/database/ops.html

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

Конечно, по подробности эта база до ФИАС недотягивает, но, стоит отдать должное, она гораздо проще (всего одна таблица!), поэтому, если вам не нужна точность до улицы и дома, а хватит только населённого пункта — вам сюда.

Прикручиваем счастье к… ну, давайте к сайту.

Итак, радостно качаем базу и думаем, как же её впихнуть в используемый нами КакойТамУНасСовременныйSQL (а то и НеSQL).

Ищем в гугле, ищем в яндексе, ищем в apt-cache, последний нам радостно и выдаёт:

Здорово-то как! Я использую Postgres и конвертировать буду в него. В базе используется ещё досовская кодировка, так что призовём на помощь iconv. Кстати, самые свежие версии pgdbf (>= 0.6.2) сами шаманством владеют и iconv призывают, но до убунтовского репозитория они ещё не добрались.

Что же, теперь надо заставить это работать.

Я использую Ruby on Rails, на её примере и покажу. Кто рельсы не понимает, может пролистать.

Cоздаём модель, которая будет нашу информацию из базы данных и представлять в приложении

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

Слегка настраиваем модель:

Делаем простенький контроллер, который нам почтовый индекс в json-формате отдаст:

Прописываем в config/routes.rb маршрут, по которому приложение нам отдаст желанные индексы:

И, главное: html и javascript, которые и сделают всю магию для пользователя.

Javascript-код (очень подробный, с уведомлением пользователя, отловом ошибок и исправлением индекса)

И, вуаля, при вводе индекса нам автоматом подставляется область, город и так далее. Заодно, бонусом, мы можем исправлять устаревшие индексы на актуальные (очень часто у людей записаны адреса родственников с уже безнадёжно устаревшими индексами).

почтовый индекс электронной почты. Смотреть фото почтовый индекс электронной почты. Смотреть картинку почтовый индекс электронной почты. Картинка про почтовый индекс электронной почты. Фото почтовый индекс электронной почты

Резюме

Плюсы: простота внедрения, использования и поддержания в актуальном состоянии, малый вес
Минусы: невысокая подробность (только до населённого пункта), ВСЕ ГОРОДА КАПСОМ, ПОЧТА РОССИИ, ЗАЧЕМ?

Источник

Адрес электронной почты

почтовый индекс электронной почты. Смотреть фото почтовый индекс электронной почты. Смотреть картинку почтовый индекс электронной почты. Картинка про почтовый индекс электронной почты. Фото почтовый индекс электронной почты

Мария Смирнова-Матрос

Создайте рассылку в конструкторе за 15 минут. Отправляйте до 1500 писем в месяц бесплатно.

почтовый индекс электронной почты. Смотреть фото почтовый индекс электронной почты. Смотреть картинку почтовый индекс электронной почты. Картинка про почтовый индекс электронной почты. Фото почтовый индекс электронной почтыОтправить рассылку

почтовый индекс электронной почты. Смотреть фото почтовый индекс электронной почты. Смотреть картинку почтовый индекс электронной почты. Картинка про почтовый индекс электронной почты. Фото почтовый индекс электронной почты

Электронная почта — это такой же важный инструмент связи, как и телефон. Электронная почта используется для общения по работе, для регистрации в социальных сетях и мессенджерах, для покупок в интернет-магазинах, для официальных запросов в госорганы.

Всего в мире более 4 млрд почтовых аккаунтов на 7,9 миллиардов населения Земли. Конечно, не у каждого жителя есть электронная почта, зато у некоторых пользователей по 5 электронных ящиков для разных целей.

В почтовой системе каждому пользователю присваивается индивидуальный адрес — email, который состоит из уникального имени пользователя почты, значка «@», обозначающего, что это email-адрес, и доменного имени.

Например, вот из каких частей состоит адрес электронной почты maria.matros@gmail.com:

Популярные почтовые провайдеры

Почтовые провайдеры — это компании (сервисы), которые организуют доставку и хранение почты:

почтовый индекс электронной почты. Смотреть фото почтовый индекс электронной почты. Смотреть картинку почтовый индекс электронной почты. Картинка про почтовый индекс электронной почты. Фото почтовый индекс электронной почты

В каких почтовых программах читают почту в СНГ

Как правило, личную почту регистрируют на каком-то из этих провайдеров.

Как создать электронный ящик

Для создания электронной почты нужно уникальное имя пользователя, состоящее из латинских символов и пароль, защищающий почту. Уникальное имя пользователя + знак «@» + домен, к которому привязана почта — это и есть электронный адрес.

Все адреса электронной почты должны быть уникальными, чтобы точно идентифицировать получателя. Именно поэтому сейчас нельзя зарегистрировать почту, к примеру, ivan.ivanov@gmail.com — этот адрес уже занят каким-то пользователем. Но если ivan.ivanov удалит свой ящик на Gmail — имя снова будет свободно и вы сможете его занять.

На разных доменах может быть одинаковое имя пользователя. К примеру, mariia.matros@gmail.com и mariia.matros@unisender.com.

почтовый индекс электронной почты. Смотреть фото почтовый индекс электронной почты. Смотреть картинку почтовый индекс электронной почты. Картинка про почтовый индекс электронной почты. Фото почтовый индекс электронной почты

В почте можно использовать латинские буквы, символ нижнего подчеркивания «_», иногда точку. Символы, которые можно использовать, ограничены протоколами RFC, это общие правила использования символов в интернете. Почтовик, как правило, указывает, какие символы можно и нельзя использовать в логине. Недопустимые спец-символы почтовый сервис подчеркнет во время создания почтового ящика.

почтовый индекс электронной почты. Смотреть фото почтовый индекс электронной почты. Смотреть картинку почтовый индекс электронной почты. Картинка про почтовый индекс электронной почты. Фото почтовый индекс электронной почты

Вот ограничения по символам в Почте Mail.ru. У остальных провайдеров они примерно такие же.

Для примера создадим электронную почту на сайте Почта Mail.ru.
1. Заходим на главную Почта Mail.ru.
2. Выбираем «Создать ящик» возле окошка «Вход в почту».
3. Попадаем на главную страницу создания аккаунта в Почте Mail.ru.
4. Заполняем форму создания почтового ящика.

почтовый индекс электронной почты. Смотреть фото почтовый индекс электронной почты. Смотреть картинку почтовый индекс электронной почты. Картинка про почтовый индекс электронной почты. Фото почтовый индекс электронной почты

Форма регистрации Почты Mail.ru

5. Заходим в почту с помощью пары логин-пароль, которую ввели при регистрации.
6. Электронная почта готова. Вы можете указывать ее в формах регистрации, подписываться на рассылки — вам будут приходить письма.

Чтобы письма приходили, важно точно указывать адрес электронной почты. Если при заполнении почты опечататься хотя бы на один символ, почта придет другому человеку или вернется отправителю с сообщением «Не существует такого email-адреса».

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

Имя будет указано в поле «Отправитель». Если это поле не заполнено, в поле «Отправитель» будет дублироваться адрес электронной почты.

Советы по выбору адреса личной электронной почты

Почта Mail.ru составила памятку о том, как организовать почту и как ею пользоваться.

Советы по созданию пароля для электронной почты

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

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

При регистрации почтовый сервис сам покажет дополнительные требования к созданию пароля.

почтовый индекс электронной почты. Смотреть фото почтовый индекс электронной почты. Смотреть картинку почтовый индекс электронной почты. Картинка про почтовый индекс электронной почты. Фото почтовый индекс электронной почты

Вот что Почта Mail.ru думает о стандартном пароле qwert

Несколько советов от разработчиков из «Студии Касперского»:

Как узнать свой адрес электронной почты и пароль

Адрес электронной почты всегда можно посмотреть в личном кабинете почтового сервиса, а в «Настройках почты» изменить пароль. Как правило, пароль нельзя посмотреть, его можно только восстановить. Для этого нужно или ввести старый пароль, или ввести резервную электронную почту, или номер телефона. На почту или телефон придет временный пароль, с помощью которого можно зайти в аккаунт почты и в «Настройках» установить новый пароль.

При создании корпоративной электронной почты все эти задачи выполняет системный администратор, а сотрудник получает пару логин-пароль и может зайти в уже созданную почту. Читайте статью, о том, как сделать корпоративную почту на своем домене.

Как создать электронный ящик на Gmail

1.Зайти на главную страницу почтового сервиса Gmail.
2.Нажать на кнопку «Создать аккаунт».
3.Ввести имя, уникальный адрес почты и пароль.

почтовый индекс электронной почты. Смотреть фото почтовый индекс электронной почты. Смотреть картинку почтовый индекс электронной почты. Картинка про почтовый индекс электронной почты. Фото почтовый индекс электронной почты

Первый экран создания почты Gmail

4.Ввести номер телефона или резервную почту. Это не обязательно, но без них не получится восстановить доступ к почте.

почтовый индекс электронной почты. Смотреть фото почтовый индекс электронной почты. Смотреть картинку почтовый индекс электронной почты. Картинка про почтовый индекс электронной почты. Фото почтовый индекс электронной почты

Заполнение резервных способов восстановления пароля в Gmail

5.Принять правила Политики конфиденциальности Gmail (без этого создать почту не получится).

почтовый индекс электронной почты. Смотреть фото почтовый индекс электронной почты. Смотреть картинку почтовый индекс электронной почты. Картинка про почтовый индекс электронной почты. Фото почтовый индекс электронной почты

почтовый индекс электронной почты. Смотреть фото почтовый индекс электронной почты. Смотреть картинку почтовый индекс электронной почты. Картинка про почтовый индекс электронной почты. Фото почтовый индекс электронной почты

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

Источник

Всё что нужно знать о email и почтовом индексе в PayPal

почтовый индекс электронной почты. Смотреть фото почтовый индекс электронной почты. Смотреть картинку почтовый индекс электронной почты. Картинка про почтовый индекс электронной почты. Фото почтовый индекс электронной почты

Адрес электронной почты PayPal — данные, которые используются для регистрации и дальнейшего входа в платежную систему. Кроме того, e-mail в дальнейшем применяется в качестве номера счета для проведения операций по переводу или получению денежных средств, а также осуществления продаж.

Как узнать e-mail

Пользователи часто спрашивают, как узнать registered email address. Эти данные пользователь вносит при регистрации с последующим подтверждением электронного ящика. Для получения нужной информации сделайте следующее:

почтовый индекс электронной почты. Смотреть фото почтовый индекс электронной почты. Смотреть картинку почтовый индекс электронной почты. Картинка про почтовый индекс электронной почты. Фото почтовый индекс электронной почты

Здесь можно уточнить почту PayPal и в дальнейшем использовать данные для проведения транзакции. На этом же этапе можно посмотреть параметры счета, изменить (добавить) номер телефона, внести изменения в адрес прописки и т. д.

Как подтвердить почту

Выше мы рассмотрели, как узнать свой адрес электронной почты в PayPal и использовать его для проведения транзакций. При этом учтите, что введенный e-mail необходимо подтвердить сразу после регистрации.

почтовый индекс электронной почты. Смотреть фото почтовый индекс электронной почты. Смотреть картинку почтовый индекс электронной почты. Картинка про почтовый индекс электронной почты. Фото почтовый индекс электронной почты

почтовый индекс электронной почты. Смотреть фото почтовый индекс электронной почты. Смотреть картинку почтовый индекс электронной почты. Картинка про почтовый индекс электронной почты. Фото почтовый индекс электронной почты

Существует еще один способ, как подтвердить адрес электронной почты. Он актуален в случае, когда почтовый ящик не поддерживает гиперссылки. Если вы не видите e-mail, можно скопировать и вставит URL непосредственно в браузер. Также можно поставить e-mail путем входа в учетную запись ПейПал. Для этого сделайте следующее:

почтовый индекс электронной почты. Смотреть фото почтовый индекс электронной почты. Смотреть картинку почтовый индекс электронной почты. Картинка про почтовый индекс электронной почты. Фото почтовый индекс электронной почты

почтовый индекс электронной почты. Смотреть фото почтовый индекс электронной почты. Смотреть картинку почтовый индекс электронной почты. Картинка про почтовый индекс электронной почты. Фото почтовый индекс электронной почты

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

Ошибка «Недопустимый формат почтового индекса»: как решить

В процессе регистрации пользователи часто сталкиваются с ситуацией, когда при вводе цифр в поле «Почтовый индекс» появляется ошибка «Недопустимый формат почтового индекса PayPal» в виде красной надписи под интересующей графой. В таких обстоятельствах многие теряются, и не знают, как продолжить регистрацию. На самом деле решение лежит на поверхности — необходимо вернуться в начало регистрации и изменить страну на свою.

К примеру, если вы регистрируетесь в Украине, а в настройках стоит флаг России, вполне логично возникновение трудностей с созданием учетной записи.

Изменение страны возможно двумя способами:

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

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

Источник

О Яндекс.Почте

Яндекс.Почта — это бесплатный, надежный и удобный сервис электронной почты со встроенным переводчиком и защитой от спама и вирусов.

Создайте почтовый ящик и получите специальный адрес для регистрации на форумах или в интернет-магазинах.

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

Отправляйте и получайте письма, добавляйте файлы к письму, сортируйте письма по папкам и находите нужные.

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

Добавляйте контакты в адресную книгу вручную или загрузите список контактов из другого почтового сервиса. Сформируйте группу контактов.

Защитите почтовый ящик от взлома, кражи, спама и рассылок, управляйте белым и черным списками контактов.

Настройте почтовую программу на компьютере.

Читайте письма на мобильных устройствах.

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

Подключите и настройте корпоративные версии сервисов.

Создайте почтовый ящик и получите специальный адрес для регистрации на форумах или в интернет-магазинах.

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

Отправляйте и получайте письма, добавляйте файлы к письму, сортируйте письма по папкам и находите нужные.

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

Добавляйте контакты в адресную книгу вручную или загрузите список контактов из другого почтового сервиса. Сформируйте группу контактов.

Защитите почтовый ящик от взлома, кражи, спама и рассылок, управляйте белым и черным списками контактов.

Настройте почтовую программу на компьютере.

Читайте письма на мобильных устройствах.

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

Подключите и настройте корпоративные версии сервисов.

О Яндекс.Почте

Яндекс.Почта — это бесплатный, надежный и удобный сервис электронной почты со встроенным переводчиком и защитой от спама и вирусов.

Создайте почтовый ящик и получите специальный адрес для регистрации на форумах или в интернет-магазинах.

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

Отправляйте и получайте письма, добавляйте файлы к письму, сортируйте письма по папкам и находите нужные.

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

Добавляйте контакты в адресную книгу вручную или загрузите список контактов из другого почтового сервиса. Сформируйте группу контактов.

Защитите почтовый ящик от взлома, кражи, спама и рассылок, управляйте белым и черным списками контактов.

Настройте почтовую программу на компьютере.

Читайте письма на мобильных устройствах.

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

Подключите и настройте корпоративные версии сервисов.

Источник

Распознавание почтовых адресов

почтовый индекс электронной почты. Смотреть фото почтовый индекс электронной почты. Смотреть картинку почтовый индекс электронной почты. Картинка про почтовый индекс электронной почты. Фото почтовый индекс электронной почты Дело началось с того, что одна небольшая английская компания решила рассылать рекламные листовки своим существующим и потенциальным клиентам.
Обнаружилась проблема: есть отдельная внутренняя база клиентов, делавших заказы по телефону; отдельная база веб-клиентов, делавших заказы на сайте; и несколько баз «потенциальных клиентов» от разных информаторов.
Тысячи клиентов попали сразу в несколько баз, или даже несколько раз в одну базу.
Если клиент, «засветившийся» пять раз, получит пять одинаковых рекламных листовок с немного отличающимся написанием имени или адреса, то эффект от такой кампании получится противоположный — не говоря уже о бессмысленных расходах на лишние листовки.
Как же отсеять повторы в списке рассылки?

Среди всех данных о клиенте самое однозначное, что его определяет — это почтовый индекс (postcode). Этого мало, но это хорошая отправная точка.

Почтовые индексы

Мы решили, что пара «индес+DPS» устраивает нас как однозначный идентификатор адреса: хотя теоретически несколько клиентов могут иметь общий почтовый ящик (предположим, они снимают по полквартиры), а крупные клиенты могут иметь по нескольку корпусов и по отдельному почтовому ящику в каждом корпусе, — но принцип «один почтовый ящик — одна рекламная листовка» подкупает своей прозрачностью.

План действий был определён: для каждого адреса определим DPS, и если две записи совпадают по индексу и по DPS — значит, это один и тот же адрес.

Почтовые адреса

почтовый индекс электронной почты. Смотреть фото почтовый индекс электронной почты. Смотреть картинку почтовый индекс электронной почты. Картинка про почтовый индекс электронной почты. Фото почтовый индекс электронной почты Привыкшим к жёстко структурированным советским почтовым адресам «город-улица-дом-квартира» может быть непонятно: зачем заморачиваться с DPS? Почему бы не искать повторы непосредственно в адресах?

Почтовая база

Royal Mail официально (и незадёшево) предлагает базу всех существующих почтовых адресов — Postcode Address File (PAF). Для каждого адреса приведено «стандартное» написание, индекс и DPS. (Покупка PAF — единственный легальный способ определить DPS по адресу.) В виде заархивированного плейнтекста вся база занимает 300МБ.

«Стандартное» написание адреса поделено на логические поля: название организации, дома, улицы, населённого пункта.
Каждое из этих полей делится дальше: название организации может включать название отдела; название дома — номер или название квартиры; и так далее.
Для примера, вот три записи из PAF, относящиеся к адресам на одной улице:

почтовый индекс электронной почты. Смотреть фото почтовый индекс электронной почты. Смотреть картинку почтовый индекс электронной почты. Картинка про почтовый индекс электронной почты. Фото почтовый индекс электронной почты почтовый индекс электронной почты. Смотреть фото почтовый индекс электронной почты. Смотреть картинку почтовый индекс электронной почты. Картинка про почтовый индекс электронной почты. Фото почтовый индекс электронной почты
почтовый индекс электронной почты. Смотреть фото почтовый индекс электронной почты. Смотреть картинку почтовый индекс электронной почты. Картинка про почтовый индекс электронной почты. Фото почтовый индекс электронной почты почтовый индекс электронной почты. Смотреть фото почтовый индекс электронной почты. Смотреть картинку почтовый индекс электронной почты. Картинка про почтовый индекс электронной почты. Фото почтовый индекс электронной почты
почтовый индекс электронной почты. Смотреть фото почтовый индекс электронной почты. Смотреть картинку почтовый индекс электронной почты. Картинка про почтовый индекс электронной почты. Фото почтовый индекс электронной почты почтовый индекс электронной почты. Смотреть фото почтовый индекс электронной почты. Смотреть картинку почтовый индекс электронной почты. Картинка про почтовый индекс электронной почты. Фото почтовый индекс электронной почты
почтовый индекс электронной почты. Смотреть фото почтовый индекс электронной почты. Смотреть картинку почтовый индекс электронной почты. Картинка про почтовый индекс электронной почты. Фото почтовый индекс электронной почты почтовый индекс электронной почты. Смотреть фото почтовый индекс электронной почты. Смотреть картинку почтовый индекс электронной почты. Картинка про почтовый индекс электронной почты. Фото почтовый индекс электронной почты
почтовый индекс электронной почты. Смотреть фото почтовый индекс электронной почты. Смотреть картинку почтовый индекс электронной почты. Картинка про почтовый индекс электронной почты. Фото почтовый индекс электронной почты почтовый индекс электронной почты. Смотреть фото почтовый индекс электронной почты. Смотреть картинку почтовый индекс электронной почты. Картинка про почтовый индекс электронной почты. Фото почтовый индекс электронной почты

76A

Main
Street

Отдел
Организация
Microwhite
Часть дома
Номер дома
Название дома
Flat 3

Westwood Farm House

Flat
16
Название подулицы
Тип подулицы
Название улицы
Тип улицы
Подрайон
Район / пригород
Город
Keevil
Trowbridge
Keevil
Trowbridge
Keevil
Trowbridge
Индекс
DPS
BA14 6LU
2P
BA14 6LU
2W
BA14 6ND
1J

Этот пример дополнительно иллюстрирует иерархию почтовых индексов: почтовая область BA включает город Бат и часть графств Сомерсет и Уилтшир; округ BA14 — город Троубридж и окрестные посёлки; сектор BA14 6 — десяток деревень к востоку от Троубриджа, и в их числе Кивил.

Распознавание адресов

почтовый индекс электронной почты. Смотреть фото почтовый индекс электронной почты. Смотреть картинку почтовый индекс электронной почты. Картинка про почтовый индекс электронной почты. Фото почтовый индекс электронной почты Итак, у нас есть адрес клиента с индексом, и нам нужно определить его DPS. Лобовой подход — перечислить все адреса, соответствующие данному индексу, и выбрать «самый похожий» — был отвергнут из-за неизбежности «ложных срабатываний». Адреса, соответствующие одному индексу, различаются скорее всего номером или названием дома; а это именно та часть адреса, в которой альтернативные формы могут иметь мало общего одна с другой. Кроме того, нет никакой гарантии, что индекс в базе записан верно.

Я решил вместо этого анализировать адрес «снизу вверх», повторяя логику чтения адреса почтальоном: сначала распознать город, затем улицу, наконец дом, и в конце концов сравнить индекс с записанным. Если индекс совпал — это довольно убедительное свидетельство того, что адрес распознан правильно.

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

Другая сложность состояла в многочисленных опечатках и разночтениях в адресах. (Британская топонимика во многих вселяет ужас: «пишется Ливерпуль, а читается Манчестер»; едва ли вообще возможно записать адрес на слух по телефону без единой ошибки.) Чтобы учесть это, требовался алгоритм нечёткого сравнения строк. Гугль навёл меня на библиотеку SimMetrics для MS SQL, выпущенную Шеффилдским университетом. Испробовав несколько метрик на реальных примерах адресов, я остановил свой выбор на метрике Jaro-Winkler. Она похожа по своей идее на расстояние Левенштейна, но даёт больший вес символам в начале строк, чем в конце. Оказалось, что большинство опечаток действительно допускались во второй половине названия; в первых же двух буквах названий опечаток практически не было.

Общая архитектура моего распознавателя — каскад табличных UDF-функций, каждая из которых «откусывает» от конца адреса свой кусок, пытается его распознать, и фильтрует входные строки либо добавляет новые варианты их разбора. Первая функция рассматривает все подходящие графства, вторая — все подходящие города в этих графствах, и так далее. Получается, в ходе распознавания рассматриваются все (тысячи) возможные трактовки частично прочитанного адреса. Возможно, было бы эффективнее задействовать нечто вроде «метода ветвей и границ»: рассматривать каждый раз только самую вероятную частичную трактовку, и прекращать анализ, как только найдена подходящая полная трактовка. Я решил, что такая реализация не отвечала бы «духу» T-SQL, ориентированного на однообразную обработку массивов данных; кроме того, реализация в виде каскада независимых функций облегчает тестирование и повторное использование кода.

Распознавание графства

почтовый индекс электронной почты. Смотреть фото почтовый индекс электронной почты. Смотреть картинку почтовый индекс электронной почты. Картинка про почтовый индекс электронной почты. Фото почтовый индекс электронной почты Итак, начинаем с конца адреса, с названия графства. По почтовым правилам, указание графства в адресе необязательно, и его при распознавании адреса можно игнорировать. Ищем в поле «графство» название графства, если находим — откусываем и возвращаем остаток. Если не находим — возможны два варианта: либо графство не указано, и нужно вернуть всю строку в качестве остатка, чтобы следующая функция нашла в ней название города; либо указано название несуществующего графства (мне встречались «South Buckinghamshire», «Central London» и даже «England»), и тогда всю строку нужно откусить — город будем искать в следующей.
Пара дополнительных тонкостей — что встретиться может как полное, так и сокращённое название графства; и что если графство совпадает по названию с городом, то его не нужно откусывать — этот город нам потребуется на втором этапе.

Функция Generate(n) возвращает натуральные числа от 1 до N; возможно, в современных версиях MS SQL уже есть встроенный способ сгенерировать такую таблицу.
Порог 0.92 для подобия строки образцу выбран опытным путём. Важно, что выбирается не самый «точно подходящий» вариант, а самый длинный из всех «примерно подходящих». Например, хвост строчки «Souuth Gloucestershire» точно соответствует образцу «Gloucestershire», но нам нужно откусить не его, а более длинное и менее точное соответствие образцу — «South Gloucestershire».

Распознавание населённого пункта

почтовый индекс электронной почты. Смотреть фото почтовый индекс электронной почты. Смотреть картинку почтовый индекс электронной почты. Картинка про почтовый индекс электронной почты. Фото почтовый индекс электронной почты Второй этап — распознавание города в поле «город» и нераспознанном остатке поля «графство». Поскольку городов в Британии тысячи, то нечёткое сравнение каждого хвоста строки с каждым названием города занимает неоправданно долго. Чтобы оптимизировать поиск, мы сначала пытаемся найти точное соответствие (используя индекс), и только если точное соответствие не найдётся — выполняем нечёткий поиск. У такого подхода есть и недостаток — в случаях, подобных «Souuth Gloucestershire», найдено будет точное соответствие, а не желанное более длинное неточное.
Ещё пара тонкостей: могло оказаться, что графство указано дважды (например, в форме «West Yorkshire, Yorkshire») — такое бывало, когда адрес короткий, а вводившему его хотелось заполнить все строки. Поэтому распознавание адреса начинаем с того, что пытаемся откусить ещё одно название графства, если оно достаточно точно совпадает с образцом. Другая тонкость — кроме официального списка «почтовых городов», в адресах допускаются «псевдонимы»; их Royal Mail публикует в отдельной базе Alias, которую можно докупить впридачу к PAF. (Например, вместо нормативной формы «Baker Street, London» допустимо написать «Baker Street, Westminster».) Наконец, при сравнении названий городов за один символ считаем пробел и дефис: англичанин с равной вероятностью напишет «Bradford on Avon» или «Bradford-on-Avon», но лишь один вариант написания считается нормативным.

Следующая проблема, с которой я столкнулся, — в некоторых адресах указывалось сразу два почтовых города: более мелкий и более крупный; — хотя у обоих было по собственному почтовому округу: например, «Hessle, Hull». (Хессл относится к округу HU13, а к Халлу — округа от HU1 до HU12.) В этих случаях второй город надо просто игнорировать.
Иногда же почтовый город в адресе вовсе не указывался: только название района. Тогда возвращаем в качестве остатка весь переданный адрес.

Завершает распознавание населённого пункта поиск названия района/пригорода в поле «адрес» и остатке поля «город». Код там получился достаточно длинный, поэтому лишь перескажу его логику. Если почтовый город до сих пор неизвестен, пытаемся искать подходящий район во всей базе; если известен — только среди районов этого города. Если город найден по псевдониму, или у него есть безымянные районы — то имя района может быть и пустым: возвращаем весь полученный адрес в качестве остатка. Как и прежде, пришлось предусмотреть часто встречающуюся в адресах неточность — указание названия района там, где по почтовым правилам указывать его не нужно. Поэтому, если передан город с безымянными районами, и хвост адреса похож на один из его именованных районов — откусим от адреса название района, но вернём идентификатор безымянного. Признаюсь, что мой код совершенно игнорирует названия подрайонов: в реальных адресах они достаточно редки.

Распознавание улицы

почтовый индекс электронной почты. Смотреть фото почтовый индекс электронной почты. Смотреть картинку почтовый индекс электронной почты. Картинка про почтовый индекс электронной почты. Фото почтовый индекс электронной почты Следующий этап — распознавание улицы. Ищем среди всех улиц найденного населённого пункта сначала точно совпадающую с хвостом остатка адреса, затем — примерно совпадающую. Если не удалось найти даже примерно совпадающую, и поиск вёлся в безымянном районе — попробуем поискать во всех районах того же города: возможно, в адресе забыли указать район, который по почтовым правилам необходим. Если похожей улицы не нашлось ни в одном районе, проверим ещё одну возможность, прежде чем сдаться окончательно: возможно, в выбранном районе есть адреса без улицы. Такие адреса достаточно редки, поэтому проверяем их в последнюю очередь. Псевдонимы улиц из базы Alias не проверяем вовсе: они оказываются ещё более редки.

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

Важный дополнительный бонус от использования метрики Jaro-Winkler — то, что не потребовалось составлять список сокращений для названий типов улиц (Rd=Road, Ln=Lane, Ct=Court и т.д.): выбранная метрика очень слабо падает, когда буквы пропущены в самом конце названия.

Распознавание адресата

Заключительный этап — распознавание получателя почты, включая искомый DPS, в остатке поля «адрес». Для большинства компаний название компании — необходимый элемент почтового адреса, поэтому сейчас добавим его к адресу. Логика распознавания адресата — самая запутанная часть во всём коде. Первым делом, стираем из полученного адреса слова «the»: разница в их расстановке — самое часто встречающееся расхождение между названиями домов и компаний в PAF и в реальных адресах. Пробуем найти хвост адреса среди названий домов, а также среди их частей: если в PAF определён адрес «15-17 Railway Road», то будем сравнивать хвост со строками «15-17», «15», «17». При сравнении с названиями домов отбрасываем также начальное «Flat»: в PAF оно обычно прописано перед номером квартиры, в реальных адресах — зачастую нет.
Если ни на одно из названий домов хвост не похож, пробуем найти его среди названий компаний: довольно часто название компании является «неявным» названием дома. Для сравнения названий компаний порог метрики пришлось снизить до 0.85 — расхождения между написанием названия в PAF и в адресе оказывались настолько велики.
Последнее сравнение, на случай, если нет совпадения ни с названиями домов, ни с названиями компаний — с названиями частей дома: иногда, когда собственные названия есть и у дома, и у пристройки, — в адресе указывали только название пристройки.
И вновь признаюсь, что псевдонимы домов из базы Alias не рассматривались: оказалось, что в адресах практически всегда используются «основные» названия домов.

Объединяем написанные функции в один большой запрос:

По данным клиента он находит подходящие адреса в PAF, и возвращает найденные индексы, DPS, и названия компаний. Если для одного клиента найдётся несколько записей, то вызывающая сторона попытается отфильтровать их по имени компании. (Ведь если в адресе было и название дома, и название компании, то Address_GetBuilding сравнивала только название дома; а в том же доме могли располагаться и другие компании.)
select distinct в Address_MatchDPS необходим потому, что один и тот же почтовый ящик мог быть найден различными способами — например, отбрасывая разные элементы исходного адреса.

Получившаяся в итоге функция работала со скоростью порядка 500 адресов в час, причём основное время работы, по-видимому, относилось к вызовам функции JaroWinkler; на четырёхпроцессорном сервере запуск четырёх экземпляров скрипта позволил учетверить производительность. Успешно распознались около 60% адресов; среди оставшихся были как «слишком нестандартные» формы, так и просто неверные или неполные, либо с ошибочным индексом. Теперь сотрудникам небольшой английской компании предстоить просмотреть все нераспознанные адреса вручную, и исправить неточности: база точных адресов всех клиентов стоит затраченных усилий.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *