Интеллектуальные веб-функции, алгоритмы (люди, которым вы можете следовать, похожи на вас ...) - PullRequest
4 голосов
/ 14 декабря 2010

У меня есть 3 основных вопроса об алгоритмах в интеллектуальном вебе (web 2.0)

Здесь я читаю книгу http://www.amazon.com/Algorithms-Intelligent-Web-Haralambos-Marmanis/dp/1933988665 и хочу изучить алгоритмыглубже

1. Люди Вы можете следить (Twitter)

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

2. Как вы подключили функцию (Linkedin)

Просто алгоритм работает так.Он рисует путь между двумя узлами, скажем, между Me и другим человеком C . Me -> A, B -> A соединения -> C .Это не какие-либо алгоритмы перебора или другие алгоритмы, подобные графу:)

3. Похож на вас (Twitter, Facebook) Эти алгоритмы похожи на 1. Работает ли он просто с максимальным (кол-во) другом (Facebook) или с максимальным (кол-во) в Твиттере?или любые другие алгоритмы, которые они реализуют?Я думаю, что вторая часть верна, потому что запуск цикла

 dict{count, person}
 for person in contacts:
        dict.add(count(common(person)))
 return dict(max)

- глупый поступок на каждой странице обновления.

4. Вы имели в виду (Google) Iзнаю, что они могут реализовать его с помощью фонетического алгоритма http://en.wikipedia.org/wiki/Phonetic_algorithm просто soundex http://en.wikipedia.org/wiki/Soundex и вот вице-президент Google по проектированию и ИТ-директор Дуглас Меррилл говорит http://www.youtube.com/watch?v=syKY8CrHkck#t=22m03s

А как насчет первых 3 вопросов?Любые идеи приветствуются!

Спасибо

Ответы [ 4 ]

7 голосов
/ 02 января 2011

Люди, за которыми вы можете следить

Вы можете использовать расчеты на основе факторов:

factorA = getFactorA(); // say double(0.3)
factorB = getFactorB(); // say double(0.6)
factorC = getFactorC(); // say double(0.8)

result = (factorA+factorB+factorC) / 3 // double(0.5666666666666667)
// if result is more than 0.5, you show this person

Так, в случае с Twitter, «Люди, за которыми вы можете следить», могут основываться наСледующие факторы (пользователь A - это пользователь, просматривающий эту функцию «Люди, за которыми вы можете следить», может быть больше или меньше факторов):

  • Относительность между частыми ключевыми словами, найденными в твитах пользователей A и B1009 *
  • Относительность между описанием профиля обоих пользователей
  • Относительность между местоположением пользователя A и B
  • Является ли человек, которым следует пользователь A, следующим пользователем B?

Так где они сравнивают "людей, за которыми вы можете следовать"?Список, вероятно, был составлен из людей с большим количеством подписчиков (вероятно, это знаменитости, альфа-гики, известные продукты / услуги и т. Д.) И [люди, за которыми следит пользователь А].

В основномздесь есть определенный уровень интеллектуального анализа данных: чтение твитов и биографий, расчеты.Это может быть выполнено на ежедневной или еженедельной работе cron, когда загрузка сервера минимальна за день (или может быть сделана 24/7 на отдельном сервере).

Как вы подключены

Это, вероятно, умная работа, чтобы вы почувствовали, что грубо сила была проделана для определения пути.Однако после некоторого поверхностного исследования я обнаружил, что это просто:

Скажите, что вы - пользователь A;Пользователь B - ваше соединение;Пользователь C является подключением пользователя B.

Для того, чтобы вы могли посетить пользователя C, вам необходимо сначала посетить профиль пользователя B.Посещая профиль пользователя B, веб-сайт уже сохраняет информацию, указывающую, что пользователь A находится в профиле пользователя B.Поэтому, когда вы посещаете пользователя C от пользователя B, веб-сайт немедленно сообщает вам, что «пользователь A -> пользователь B -> пользователь C», игнорируя все другие возможные пути.

Это максимальный уровень, как у пользователя C, Пользователь не может продолжать просматривать свои соединения, пока пользователь С не станет соединением пользователя А.

Источник: наблюдение LinkedIN

Похож на вас

Это то же самое, что и #1 (Люди, за которыми вы можете следить), за исключением того, что алгоритм читает в другом списке людей.Список людей, которые читает алгоритм, это те люди, за которыми вы следите.

Вы имели в виду

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

Если мы немного больше изучим инфраструктуру Google, мы обнаружим, что у Google есть серверы, предназначенные дляУслуги по орфографии и переводу.Более подробную информацию о платформе Google можно получить по адресу http://en.wikipedia.org/wiki/Google_platform.

Заключение

Ключом к высокоинтенсивным алгоритмам является кэширование.Как только вы кешируете результат, вам не нужно загружать его каждую страницу.Google это делает, Stack Overflow делает это (на большинстве страниц со списком вопросов) и Twitter тоже не удивительно!

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

2 голосов
/ 31 декабря 2010

Люди, за которыми вы можете следить

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

Как вы подключены

Это просто алгоритм кратчайшего пути в социальном графе. Предполагая, что для соединений нет веса, он просто использует в ширину .

похож на тебя

Просто перестановка набора данных с использованием того же алгоритма, что и Люди, за которыми вы можете следить .

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

1 голос
/ 31 декабря 2010

я не пользуюсь твиттером;но с учетом этого:

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

Вы можете сделать это немного дальше, если вы также можете эффективноизвлеките обратное: для тех, за кем я следую, кто также следует за ними?

В обоих случаях, что не сказано, так это способ взвешивания твитеров, чтобы узнать, действительно ли они те, за кем я действительно хочу следовать: либералПоследователь может также следовать за консервативным твитером, но это не значит, что я бы хотел следовать за консервативным (см. # 3).

2).Не уверен, думая об этом ...

3).Предполагая, что био и твиты - это единственное, что нужно сделать, сложные части:

  • Определение того, какие атрибуты должны существовать (политическая принадлежность, типы тем и т.140 символов в data-mine.

Когда у вас есть правильный набор атрибутов, на ум приходят два разных алгоритма:

  • K означает кластеризацию, чтобы решить, какие атрибутыЯ склонен различать.
  • N-ближайший сосед, чтобы найти N наиболее похожих твитеров с учетом атрибутов, которым я склонен придавать вес.
  • РЕДАКТИРОВАТЬ: На самом деле, дерево решенийВероятно, гораздо лучший способ сделать все это ...

Это все умозрительно, но звучит забавно, если за это платят.

1 голос
/ 31 декабря 2010
  1. Люди, за которыми вы можете следить Из блога Twitter - «предложения основаны на нескольких факторах, включая людей, на которых вы подписаны, и людей, на которых они подписаны» http://blog.twitter.com/2010/07/discovering-who-to-follow.html Так что, если вы будете следовать A иB и они оба следуют C, тогда Twitter предложит вам C ...
  2. Как вы подключились Я думаю, что вы ответили на этот вопрос.
  3. Как и вы Как и выше, и как вы говорите, хотя результаты, вероятно, кэшируются - поэтому это делается только один раз за сеанс или, может быть, даже реже ...

Надеюсь, что это поможет,Chris

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