Я считаю, что эта проблема проще, чем обычная проверка орфографии, поскольку список городов США невелик по сравнению со всеми известными английскими словами.
Во всяком случае, вот в чем проблема: У меня есть текстовые файлы с названиями городов; некоторые из них написаны правильно, а некоторые - нет.
Какой алгоритм можно использовать для исправления всех орфографических ошибок в названиях городов?





Вам действительно нужно исправить орфографические ошибки или просто пометить их как обычную проверку орфографии? В последнем случае вам просто нужно получить список правильных написаний и убедиться, что каждое имя совпадает с именем в вашем списке.
Если вы действительно хотите их исправить, вы, вероятно, захотите использовать концепцию редактировать расстояние для сравнения схожести строк с ошибками со строками в вашем списке ссылок. Затем вы можете заменить слово с ошибкой на ближайшее совпадение. Вы также можете учесть возможность того, что предполагаемый город отсутствует в вашем списке.
Статья в Википедии Расстояние Левенштейна - еще один хороший ресурс.
Да, я думаю, что идея расстояния редактирования - правильный подход для этого. Так или иначе, я начал это делать, когда начал.
Если одно и то же название города встречается в файле более одного раза, вы можете использовать количество вхождений каждого названия города и отметить тот, который встречается только один раз.
Вполне возможно, что город появляется только один раз и правильно написан.
... или написано с ошибками более одного раза.
Эстебан и Брэд: Конечно, вы правы, но если единственное, что вам нужно проверить, это файл, на который вы должны рассчитывать, чтобы рассчитать статистику.
Сначала загрузите правильные названия городов в массив, затем прокрутите названия городов в вашем файле. Убедитесь, что название текущего города написано правильно, посмотрев, есть ли оно в массиве правильных названий. Если его нет в массиве, попробуйте сравнить значение Soundex или Метафон слова с ошибкой со словами в массиве правильных имен, чтобы найти правильный способ его написания.
В сети есть списки названий городов, которые обычно пишутся с ошибками (например, Pittsburgчас). В остальном я с Джереми. Вам просто нужно найти набор данных с названиями городов, возможно, вы захотите попробовать USGS. У Zillow есть данные о районе, которые вы могли бы использовать.
Хитрость заключается в том, чтобы знать, к какому городу на самом деле относится название и как правильно пишется название города который. Это не то же самое, что просто проверять английские слова.
Какую реальную задачу вы пытаетесь решить? Вы обрабатываете списки адресов? Вам не следует писать для этого свои собственные инструменты: существует целая индустрия, посвященная этой обманчиво простой задаче. :)
Я должен сделать это для списков подписки на Обзор Perl. Я хорошо знаком с веб-сервисами для различных почтовых отделений по всему миру. Часто вы можете зайти на сайт почтовой службы, чтобы получить адрес в канонической форме. Существуют инструменты геокодирования, с помощью которых можно получить те же данные.
Вы правы, это обманчиво сложно. Теперь, когда я поигрался с этим, я также заметил, что люди иногда сокращают названия городов. Написание этого - отличное упражнение в DP; Я уверен, что можно добиться довольно приличных результатов без особых усилий.
Я сделал это. Я использовал метод расстояния редактирования, и он работает довольно хорошо, но слишком медленно, чтобы делать это в реальном времени.
Одна из проблем, с которой вы столкнетесь, заключается в том, что есть несколько городов, которые находятся на расстоянии 1 редактирования от других названий городов. Вы не сказали, откуда взялись имена в текстовом файле, и это имеет большое значение. Когда В моем случае это были случайные люди, которые вводили названия городов для поиска, и они время от времени ошибались в написании города, который они намеревались, но их неправильное написание было настоящим названием города. В этом случае вам нужно сделать некоторые предположения о намерениях пользователей, и один из простых способов сделать это - рассмотреть состояние, если оно предусмотрено.
Не могли бы вы опубликовать пример? Может быть, правильное название и образцы неправильного названия того же города?