Проверка правописания названий городов?

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

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

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

Не могли бы вы опубликовать пример? Может быть, правильное название и образцы неправильного названия того же города?

shahkalpesh 05.11.2008 06:41
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
6
1
3 890
6
Перейти к ответу Данный вопрос помечен как решенный

Ответы 6

Ответ принят как подходящий

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

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

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

Да, я думаю, что идея расстояния редактирования - правильный подход для этого. Так или иначе, я начал это делать, когда начал.

Esteban Araya 05.11.2008 07:47

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

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

Esteban Araya 05.11.2008 06:43

... или написано с ошибками более одного раза.

Brad Gilbert 05.11.2008 07:53

Эстебан и Брэд: Конечно, вы правы, но если единственное, что вам нужно проверить, это файл, на который вы должны рассчитывать, чтобы рассчитать статистику.

Julien Grenier 11.11.2008 20:42

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

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

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

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

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

Вы правы, это обманчиво сложно. Теперь, когда я поигрался с этим, я также заметил, что люди иногда сокращают названия городов. Написание этого - отличное упражнение в DP; Я уверен, что можно добиться довольно приличных результатов без особых усилий.

Esteban Araya 05.11.2008 07:49

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

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

Другие вопросы по теме