Как оценить поисковик? - PullRequest
       27

Как оценить поисковик?

8 голосов
/ 01 октября 2009

Я студент, проводящий исследование для улучшения существующего алгоритма поисковой системы.

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

Как мне сравнить старые и новые алгоритмы?

Спасибо

Ответы [ 10 ]

11 голосов
/ 01 октября 2009

Обычно это делается путем создания тестового набора вопросов, а затем оценки того, насколько хорошо ответ поиска отвечает на эти вопросы. В некоторых случаях ответы должны быть однозначными (если вы наберете slashdot в поисковой системе, вы ожидаете получить slashdot.org в качестве вашего главного хита), так что вы можете рассматривать их как класс сложных запросов с «правильными» ответами.

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

http://www.cs.uic.edu/~liub/searchEval/SearchEngineEvaluation.htm

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

Эвристика для релевантности - также полезная проверка. Например, когда кто-то использует поисковые термины, которые, вероятно, «связаны с программированием», стремитесь ли вы получить больше результатов от stackoverflow.com? Ваши результаты поиска были бы лучше, если бы вы сделали? Если вы предоставляете набор весов доверия для определенных сайтов или доменов (например, рейтинг .edu или .ac.uk доменов как более надежных для технических результатов), то вам необходимо проверить эффективность этих весов.

10 голосов
/ 08 октября 2009

Во-первых, позвольте мне вначале сказать, слава вам, что вы пытаетесь применить традиционные методы исследования к результатам поисковых систем. Многие SEO сделали это перед вами, и, как правило, оставляют это для себя, поскольку делятся «удивительными находками», как правило, означает, что вы больше не можете эксплуатировать или иметь превосходство, это говорит, что я поделюсь, как могу, некоторыми указателями и вещами, которые нужно искать ,

  1. Определите какую часть алгоритма вы пытаетесь улучшить?

Различные поиски выполняют разные алгоритмы.

Обширный поиск

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

  1. Ленты новостей
  2. Продукты
  3. Изображения
  4. Сообщения блога
  5. Локальные результаты (основаны на поиске Geo IP).

Какой из этих типов результатов выбрасывается в микс, может варьироваться в зависимости от слова.

Пример: Кошки возвращает изображения кошек и новости, Обувь возвращает локальные покупки обуви. (это основано на моем IP в Чикаго 6 октября)

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

Региональные модификаторы

Как правило, каждый раз, когда к поиску присоединяется региональный термин, он значительно изменяет результаты. Если вы ищете «Чикагский веб-дизайн», потому что слово «Чикаго» приложено, результаты начнутся с 10 лучших региональных результатов. (это те вкладки, которые расположены справа от карты), после 10 списков будет отображаться в общем «моде результата».

Результаты в «десятке местных», как правило, кардинально отличаются от результатов, приведенных ниже в органическом списке. Это потому, что локальные результаты (из карт Google) основаны на совершенно разных данных для ранжирования.

Пример. Наличие телефонного номера на вашем веб-сайте с кодом города Чикаго поможет в местных результатах ... но НЕ в общих результатах. То же самое с адресом, желтой книгой и т. Д.

Результаты Скорость

В настоящее время (по состоянию на 10/06/09) Google проводит бета-тестирование "кофеина". Основным моментом этой сборки движка является то, что он возвращает результаты почти в два раза быстрее. Хотя вы можете и не считать, что Google работает медленно ... ускорение алгоритма важно, когда миллионы поисков происходят каждый час.

Сокращение количества спам-сообщений

Мы все нашли опыт поиска, который был пронизан спамом. Новая версия Google Caffeine http://www2.sandbox.google.com/ является хорошим примером. За последние 10+ одно из крупнейших сражений в сети происходило между поисковыми оптимизаторами и поисковыми системами. Игры в Google (и другие движки) очень прибыльны, и с этим Google тратит большую часть своего времени.

Хороший пример - снова новый выпуск Google Caffeine. До сих пор мое исследование, а также некоторые другие в области SEO обнаружили, что это первая сборка за последние 5 лет, которая придает больший вес элементам Onsite (таким как ключевые слова, внутренние ссылки на сайт и т. Д.), Чем предыдущие сборки. До этого каждый «релиз», казалось, все больше отдавал предпочтение входящим ссылкам ... это первый шаг к «контенту».

Способы проверки алгоритма.

  1. Сравните две сборки одного и того же двигателя. В настоящее время это возможно путем сравнения кофеина (см. Ссылку выше или Google, Google Caffeine) и текущего Google.

  2. Сравните локальные результаты в разных регионах. Попробуйте найти поисковые термины, такие как веб-дизайн, которые возвращают локальные результаты без модификатора локального ключевого слова. Затем используйте прокси (найден через Google) для поиска в разных местах. Вы хотите убедиться, что знаете местоположение прокси (найдите в Google сайт, на котором будет указан ваш IP-адрес, географический IP-адрес или город). Затем вы можете увидеть, как разные регионы дают разные результаты.

Предупреждение ... НЕ выбирайте термин слесарь ... и будьте осторожны с любыми терминами, которые при возврате результата, имеют много спам-списков. Google local довольно легко спамить, особенно на конкурентных рынках.

  1. Сделайте, как уже упоминалось в предыдущем ответе, сравните, сколько «кликов назад» требуется пользователям, чтобы найти результат. Вы должны знать, что в настоящее время ни один из основных движков не использует «показатели отказов» в качестве индикаторов точности сайтов. Это ВЕРОЯТНО, потому что было бы ЛЕГКО сделать так, чтобы у вашего результата был показатель отказов в диапазоне 4-8%, но при этом не было бы такого низкого уровня ... другими словами, было бы легко играть.

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

** Отказ от ответственности. Эти взгляды основаны на моем опыте работы в отрасли на 6 октября 2009 года. Одна вещь о SEO и движках заключается в том, что они меняются КАЖДЫЙ ДЕНЬ. Google может выпустить кофеин завтра, и это сильно изменится ... но это удовольствие от исследований SEO!

Приветствия

2 голосов
/ 08 октября 2009

Специалисты по информации обычно используют точность и отзыв в качестве двух конкурирующих показателей качества для информационно-поисковой системы (например, поисковой системы).

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

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

Статья Википедии о точности и отзыве довольно хороша (и определяет F-меру , которая учитывает оба).

2 голосов
/ 06 октября 2009

Не думаю, что вы найдете окончательное математическое решение, если это ваша цель. Чтобы оценить данный алгоритм, вам нужны стандарты и цели, которые должны быть достигнуты.

  • Какова ваша базовая линия для сравнения?
  • Что вы классифицируете как «улучшенный»?
  • Что вы считаете "успешным поиском"?
  • Насколько велика ваша тестовая группа?
  • Какие у вас тесты?

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

Если ваша цель - повысить точность, вам нужно определить, что является «неточным». Если вы ищете «Кубок», вы можете только сказать, что первый предоставленный сайт является «лучшим», если вы сами можете точно определить, какой ответ лучше подходит для «Кубка».

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

2 голосов
/ 01 октября 2009

Чтобы что-то оценить, вы должны определить, что вы ожидаете от этого. Это поможет определить, как его измерить.
Тогда вы сможете измерить улучшение.

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

1 голос
/ 08 октября 2009

В комментариях вы сказали: «Я слышал о способе измерения качества поисковых систем, подсчитывая, сколько раз пользователю нужно нажать кнопку« Назад », прежде чем найти нужную ему ссылку, но я могу использовать это» техника, потому что вам нужны пользователи, чтобы проверить вашу поисковую систему, и это сама головная боль ". Что ж, если вы разместите свой движок в сети бесплатно на несколько дней и немного прорекламируете, вы, вероятно, получите как минимум пару десятков попыток. Предоставьте этим пользователям случайную старую или новую версию и оцените эти клики.

Другая возможность: предположим, что Google по определению идеален, и сравните свой ответ с ответом на некоторые вопросы. (Может быть, сумма расстояний между вашими лучшими десятью ссылками и их аналогами в Google, например: если ваша вторая ссылка - двенадцатая ссылка Google, то это расстояние 10). Это огромное предположение, но гораздо проще для реализации.

0 голосов
/ 13 октября 2009

Мне пришлось профессионально протестировать поисковик. Это то, что я сделал.

Поиск включал нечеткую логику. Пользователь будет вводить на веб-странице «Kari Trigger», и поисковая система будет получать записи, такие как «Gary Trager», «Trager, C», «Corey Trager» и т. Д., Каждая из которых имеет счет от 0 до> 100, так что Я мог бы ранжировать их от наиболее вероятных до наименее вероятных.

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

С тех пор каждый раз, когда я изменял логику поиска, я снова запускал пакет, а затем сравнивал новые результаты с базовой линией. Я также написал инструменты, чтобы было легче увидеть интересные части различий. Например, мне было все равно, если старая логика вернула «Corey Trager» как 82, а новая логика вернула его как 83, так что мои инструменты отфильтровали бы их.

Я не смог бы достичь такого же результата с помощью ручных тестов. У меня просто не было бы воображения и понимания, чтобы создать хорошие тестовые данные. Данные в реальном мире были намного богаче.

Итак, резюмируем:

1) Создайте механизм, который позволит вам отличать результаты запуска новой логики от результатов предыдущей логики. 2) Тест с большим количеством реалистичных данных.
3) Создайте инструменты, которые помогут вам работать с разницей, отфильтровывая шум, усиливая сигнал.

0 голосов
/ 12 октября 2009

http://www.bingandgoogle.com/

Создайте такое приложение, которое сравнивает и извлекает данные. Затем запустите тест с 50 различными вещами, которые вам нужно найти, и сравните с результатами, которые вы хотите.

0 голосов
/ 11 октября 2009

Примите во внимание тот факт, что качество результатов поиска в конечном итоге субъективно. Для сравнения у вас должно быть несколько алгоритмов оценки: старая, новая и несколько контрольных групп (например, оценка по длине URI или размеру страницы или какой-либо аналогично намеренно нарушенной концепции). Теперь выберите группу запросов, которые используют ваши алгоритмы, скажем, сто или около того. Допустим, в итоге вы получите всего 4 алгоритма. Составьте таблицу 4x5, отображающую первые 5 результатов запроса по каждому алгоритму. (Вы можете сделать десятку, но первые пять гораздо важнее.) Обязательно рандомизируйте, какой алгоритм появляется в каждом столбце. Затем поставьте человека перед этой вещью и попросите его выбрать, какой из 4 наборов результатов ему нравится больше всего. Повторите для всего набора запросов. Повторите для всех людей, сколько вы можете стоять. Это должно дать вам справедливое сравнение на основе общего выигрыша для каждого алгоритма.

0 голосов
/ 01 октября 2009

Вы должны четко определить положительные и отрицательные качества, например, как быстро человек получает ответ, который он ищет, или сколько «неправильных» ответов он получает по пути туда. Это улучшение, если правильный ответ # 5, но результаты возвращаются в 20 раз быстрее? Такие вещи будут разными для каждого приложения. Правильный ответ может быть важнее при поиске в корпоративной базе знаний, но для приложения поддержки по телефону может потребоваться быстрый ответ.

Без параметров ни одно испытание не может считаться победой.

...