Проверка правописания названий городов? - PullRequest
6 голосов
/ 05 ноября 2008

Я полагаю, что эта проблема проще, чем обычная проверка орфографии, поскольку список городов США невелик по сравнению со всеми известными английскими словами.

Так или иначе, вот проблема: У меня есть текстовые файлы с полными названиями городов; некоторые из которых написаны правильно, а некоторые нет.

Какой алгоритм я могу использовать, чтобы исправить все ошибки в названиях городов?

Ответы [ 6 ]

7 голосов
/ 05 ноября 2008

Вам действительно нужно исправить орфографические ошибки или просто пометить их как с помощью обычной проверки орфографии? Если последнее, вам просто нужно получить список правильных написаний и убедиться, что каждое имя совпадает с именем в вашем списке.

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

Расстояние Левенштейна Статья в Википедии - еще один хороший ресурс.

3 голосов
/ 05 ноября 2008

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

2 голосов
/ 05 ноября 2008

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

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

Я должен сделать это для списков подписки на The Perl Review . Я хорошо знаком с веб-сервисами для различных почтовых отделений по всему миру. Вы можете часто заходить на сайт почтовой службы, чтобы получить каноническую форму адреса. Существуют инструменты геокодирования, которые могут получить те же данные.

0 голосов
/ 27 декабря 2009

Я сделал это. Подход к редактированию расстояния - это то, что я сделал, и он работает довольно хорошо, но слишком медленно, чтобы делать это в реальном времени.

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

0 голосов
/ 05 ноября 2008

В Интернете есть списки названий городов с ошибками (например, Питсбург h ) Кроме этого я с Джереми. Вам просто нужно найти набор данных названий городов, вы можете попробовать USGS. У Zillow есть данные о соседстве, которые вы могли бы использовать.

0 голосов
/ 05 ноября 2008

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

...