Как обрабатывать названия городов с разными названиями - PullRequest
0 голосов
/ 04 июня 2018

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

  • простой случай: REYKJAV Í K или Reykjav i k.Может быть решен с помощью инвариантного сравнения без учета регистра.
  • более сложный случай: Львов или Львов - может быть решен с использованием расстояния Левенштейна.Для таких случаев, если города начинаются с одной и той же буквы и имеют расстояние, меньшее или равное 1 - мы можем это сделать.
  • еще более сложный случай: Брюссель против Брюсселя.
  • просто еще один: m.Вроцлав (читается как город Вроцлав)

В конце мне нужно сопоставить все эти «синонимы» этого города с некоторым общим знаменателем.

Поэтому мой вопрос - можете ли вы предложить способКак этого достичь?

Что я пробовал:

  1. сравнение без учета регистра + преобразование в инвариант - помогает в случае № 1.
  2. Расстояние Левенштейна доПосмотрите, как две строки отличаются.Не очень помогает.Расстояние 3 или больше может означать, что это синоним (например, Киев и м.Киев) или совершенно другой город (например, Рим и Римини, оба - Италия, один и тот же язык).Даже знание страны города не очень помогает.
  3. Пытался использовать словарь городов + поиск ближайшего термина (критерии: одинаковая длина и одинаковая первая буква, минимальное расстояние).Тем не менее, в 7% случаев у меня возникает ошибка.
  4. , использующая API Google Places для поиска города и его возврата в одной локали.По-прежнему не работает - Брюссель и Брюссель для Google кажутся разными, хотя оба расположены в Бельгии.

Любой совет будет оценен.

PS Как вы думаете, есть шанс исправитькартография города в 99% случаев?

1 Ответ

0 голосов
/ 04 июня 2018

метод старой школы для обработки этого был тем, что мы делали лет десять назад или около того - создавали таблицу базы данных с поисками.Предполагая, что мы можем идентифицировать возможные варианты (не всегда хорошее предположение, но лучшее, что у нас было в то время), мы могли бы выполнить поиск и сохранить только «правильный» вариант (как в наиболее распространенном и / или том, который мы хотели),Это включает в себя повторное изучение и работу ног впереди, но может привести к довольно хорошим результатам.И, если база данных настроена правильно, вы можете продолжать добавлять больше вариантов, когда они всплывают в данных.

99% будет сложно, так как варианты неизвестны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...