Сравнение массивов и оценки релевантности - PullRequest
1 голос
/ 26 октября 2010

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

Я знаю, что это очень размытый фон, но есть ли способ избежать алгоритма O (n ^ 2) (сравнение каждого элемента в одном массиве для каждого элемента в другом), или если есть более эффективные способы вычисления релевантности?

Ответы [ 2 ]

3 голосов
/ 27 октября 2010

Может быть, вы можете сгруппировать свои должности / вакансии в категории.

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

Я имею в виду, что нет необходимости сравнивать «программиста на Java» с «открытием работы на C ++», но среди ключевых слов «java» вы все равно можете сравнить «программиста» и «руководителя проекта».

Вы понимаете, о чем я?

Но, пожалуйста, приведите нам пример, на который легче ответить, когда мы знаем, о чем мы говорим.

1 голос
/ 27 октября 2010

Используйте инвертированный индекс (хэш-таблицу), чтобы получить значение O (n). Поместите все элементы первого списка в одну хеш-таблицу. Затем выполните итерацию по всем элементам второго списка, просматривая каждый элемент в хэш-таблице.

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

Если у вас есть один большой список, такой как список вакансий, и вы хотите запросить список кандидатов на квалификацию, вам действительно следует использовать поисковую систему. Поисковая система - это просто набор хеш-таблиц с ключевыми словами. Нет смысла перестраивать поисковую систему, если вы можете использовать уже созданную. Сначала вы индексируете все вакансии, а затем запрашиваете поисковую систему, используя слова из резюме кандидата. Популярная поисковая система с открытым исходным кодом, на которую вы, возможно, захотите взглянуть: Solr .

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