Каков наилучший метод для устранения неоднозначности местоположения для данных геонамес? - PullRequest
5 голосов
/ 23 февраля 2012

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

Есть некоторый алгоритм оценки для поиска по геонам, но они не открывают его, и я не уверен, что они очень сложные. (то есть для soma, ca он возвращает Soma lake in Canada, в котором нет даже статьи в Википедии, вместо очень популярного Soma Neirbohood in san francisco)

Там также есть некоторые работы, которые я нашел в google scholar, но они кажутся очень поверхностными и похожими на мою эвристику, например, чем-то забил (log(population) + 1000*hasWikipedia(article)+ isCity100+isCapital(10)).

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

Знаете ли вы какую-нибудь важную статью в этой области или алгоритмы, используемые при создании карт Google, Yahoo, Bing или даже Geonames?

1 Ответ

3 голосов
/ 03 июля 2012

@ yura, это не то, что вы ищете, но я не думаю, что какой-нибудь умный алгоритм сможет постоянно устранять неоднозначность, ссылаются ли запросы типа "soma ca" на Soma в Сан-Франциско или Soma Lake в Канаде , Проблема не в том, что ваш алгоритм не достаточно сложен; проблема в том, что в запросе "soma ca" просто недостаточно информации.

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

Даже если человек будет интерпретировать ваши запросы вручную, он не обязательно поймет, что «сома ча» означает «сома» в SF. Может быть, для вас двухбуквенное сокращение, например, «ca», «естественно» относится к штату США, а не к иностранной стране, но в этом выборе нет ничего принципиально «правильного», и его нельзя получить, используя чистую логику. Это произвольное, специфичное для домена, специальное правило, точно так же как специальная эвристика log(population), на которую вы ссылались.

Некоторые возможные «решения» (помимо разработки телепатического компьютера, который может читать мысли пользователей):

  1. Предоставьте пользователям список возможных совпадений для каждого запроса. Следите за теми, которые они выбирают, и когда другие пользователи позже введут тот же запрос, упорядочьте результаты по популярности.
  2. ИЛИ, как только вы соберете много данных о популярности результатов запросов, вы даже сможете добывать данные с помощью алгоритмов машинного обучения и получать из этого лучшую эвристику.
  3. Или, прежде чем запускать приложение в производственную эксплуатацию, вы могли бы сначала скомпилировать тело поддельных запросов вместе с результатами, которые, по вашему мнению, должен выдавать ваш алгоритм для каждого такого запроса. Тогда используйте свои алгоритмы машинного обучения для этого.
  4. Скомпилируйте совокупность поддельных запросов и желаемых ответов ИЛИ получите данные от выбора реальных пользователей и используйте эти данные для оценки точности разработанной вручную и закодированной эвристики ранжирования. Продолжайте изобретать новую эвристику, пока не найдете ту, которая достигает высокой точности в вашем наборе тестовых данных.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...