какой алгоритм использует freebase для сопоставления по имени? - PullRequest
2 голосов
/ 26 марта 2012

Я пытаюсь построить локальную версию API поиска FreeBase, используя их четырехсторонние дампы. Мне интересно, какой алгоритм они используют для сопоставления имен? Например, если вы зайдете на freebase.com и введете «Поход», вы получите

  • "Апо Туризм Общество"
  • "Туризм"
  • "Поход по Грузии"
  • "Походы по национальным лесам Вирджинии"
  • "Походная тропа"

Ответы [ 4 ]

7 голосов
/ 27 марта 2012

Ух ты, много догадок! Надеюсь, я не слишком мутлю воду, не догадываясь.

Ящик для автозаполнения в основном работает на Freebase Suggest , который, в свою очередь, работает на сервисе Freebase Search . Строки, которые индексируются поисковой службой для поиска соответствия, включают в себя: 1) имя, 2) все псевдонимы на данном языке, 3) текст ссылки на якорь из соответствующих статей Википедии и 4) идентификаторы (называемые ключами в Freebase), которые включают в себя элементы как заголовки статей в Википедии (и перенаправления).

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

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

Кстати, перед Google поисковая реализация Metaweb была основана на топе Lucene, так что вы можете определенно добиться большего, чем использовать это в качестве отправной точки. Некоторые подробности можно прочитать в архиве списка рассылки

2 голосов
/ 26 марта 2012

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

Что касается алгоритма, я нахожу следующую статью хорошим обзором

Zobel and Moffat (2006): "Перевернутые файлы для систем текстового поиска" .

1 голос
/ 26 марта 2012

Доступно несколько алгоритмов: Бойер-Мур , Смит-Уотерман-Гото, Кнут Моррисс-Пратт и т. Д. Вы также можете проверить алгоритмы редактирования расстояния. такие как Левенштейн. Вам нужно будет поиграть, чтобы увидеть, что лучше всего подходит для ваших целей.

Реализация таких алгоритмов - библиотека Simmetrics Университета Шеффилда.

1 голос
/ 26 марта 2012

Скорее всего, это три с лексикографическим порядком.

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