Как поисковые системы находят подходящий контент?

Как Google находит соответствующий контент при разборе веб-страниц?

Скажем, например, Google использует встроенную библиотеку DOM для анализа содержимого. Какими методами они могли бы найти наиболее релевантный контент на веб-странице?

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

Предположим, у нас был этот URL:

http://domain.tld/posts/stackoverflow-dominates-the-world-wide-web.html 

Теперь из этого URL-адреса я бы выяснил, что имя файла HTML будет иметь большое значение, поэтому я увижу, насколько близко эта строка сравнивается со всеми параграфами на странице!

Хорошим примером этого может быть доля Facebook, когда вы делитесь страницей. Facebook быстро переводит ссылку и возвращает изображения, контент и т. Д. И т. Д.

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

Существуют ли какие-либо книги / информация о лучших методах анализа контента, которые охватывают как получить лучший контент с сайта, любые алгоритмы, о которых можно поговорить, или какой-либо подробный ответ?


Некоторые идеи, которые я имею в виду:

  • Найти все абзацы и ордера по длине простого текста
  • Как-то найти ширину и высоту контейнеров div и порядок (W + H) – @Benoit
  • Проверить ключевые слова, заголовок, описание и проверить релевантность в параграфах
  • Найти все теги изображений и порядок по наибольшему, а также длину узлов вдали от основного абзаца
  • Проверьте данные объекта, такие как видео, и подсчитайте узлы из самого большого абзаца / содержимого div
  • Изучите сходство с предыдущими страницами

Причина, по которой мне нужна эта информация:

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

  • Изображение (если применимо)
  • A <255 абзацев из лучшего фрагмента текста
  • Ключевые слова, которые будут использоваться для нашей поисковой системы, (стиль переполнения стека)
  • Мета-данные Ключевые слова, описание, все изображения, журнал изменений (для модерации и администрирования)

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

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

    Это очень общий вопрос, но очень хорошая тема! Определенно поддерживается 🙂 Однако я не доволен ответами, предоставленными до сих пор, поэтому я решил написать довольно длинный ответ на это.

    Причина, по которой я не удовлетворен, состоит в том, что ответы в основном все истинны (мне особенно нравится ответ kovshenin (+1), который очень связан с теорией графика …), но все они либо слишком специфичны для определенных факторов, либо слишком Генеральная.

    Это как просить, как испечь пирог, и вы получите следующие ответы:

    • Вы делаете торт, и вы кладете его в духовку.
    • Вам определенно нужен сахар!
    • Что такое пирог?
    • Торт ложь!

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

    Конечно, Google является самым важным игроком, но, в зависимости от варианта использования, поисковая система может включать в себя очень разные факторы или весить их по-разному.

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

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

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

    Но в самом борадском и абстрактном терминах оптимизации SEO вы обычно можете разделить важные на две группы:

    1. Насколько хорошо ответ отвечает на вопрос? Или: Насколько хорошо содержание страниц соответствует условиям поиска?

    2. Насколько популярным / хорошим является ответ? Или: Что такое пейджер?

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

    Также важно, чтобы pagerank не представлял все факторы, а только те, которые Google классифицирует как популярность. И хорошим я имею в виду другие факторы, которые не имеют ничего общего с популярностью.

    В случае с Google официальное заявление состоит в том, что они хотят дать соответствующие результаты пользователю. Это означает, что все алгоритмы будут оптимизированы в соответствии с потребностями пользователя.

    Итак, после этого длительного введения (рад, что вы все еще со мной …) Я дам вам список факторов, которые я считаю очень важными (на данный момент):

    Категория 1 (насколько хорошо ответ отвечает на вопрос?

    Вы заметите, что многое зависит от структуры документа!

    • Страница в первую очередь касается точного вопроса.

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

    • Весь сайт посвящен теме (ключевые слова отображаются в домене / поддомене)

    • Слова являются важной темой на этой странице (внутренние ссылки якорных текстов переходят на позиции ключевого слова или якорные тексты / тексты ссылок содержат ключевое слово).

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

    Категория 2 (насколько важна / популярна страница?)

    Вы заметите, что не все факторы указывают на эту точную цель. Некоторые из них включены (особенно Google), чтобы дать страницы толчок, который … ну … это просто заслужило / заработало.

    • Контент – это король!

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

    • Лучшее – лучше новое

    • Историческое изменение (как часто страница обновлялась в прошлом. Изменение хорошее.)

    • Популярность внешних ссылок (сколько ссылок в?)

    Если страница ссылается на другую страницу, ссылка стоит больше, если сама страница имеет высокий пейджер.

    • Разнообразие внешних ссылок

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

    • Уровень доверия

    Например, если для вас установлены большие, надежные, созданные сайты с ссылкой на редакционный контент, вы получаете рейтинг доверия. Вот почему ссылка из The New York Times стоит гораздо больше, чем какой-то странный новый сайт, даже если это PageRank выше!

    • Домен доверия

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

    • Тематические ссылки в.

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

    • Распределение ссылок в течение времени.

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

    • Ссылки из рестримированных доменов

    Ссылка из домена .gov стоит много.

    • Поведение пользователя

    Каков клик в результатах поиска?

    • Время, проведенное на сайте

    Отслеживание Google Analytics и т. Д. Он также отслеживается, если пользователь щелкает назад или нажимает на другой результат после открытия вашего.

    • Собранные пользовательские данные

    Голоса, рейтинг и т. Д., Ссылки в Gmail и т. Д.

    Теперь я представлю третью категорию, и одна или две точки сверху войдут в эту категорию, но я не думал об этом … Категория:

    ** Насколько важен / полезен ваш сайт в целом **

    Все ваши страницы будут ранжированы немного в зависимости от качества ваших сайтов

    К факторам относятся:

    • Хорошая архитектура сайта (простая в навигации, структурированная. Sitemaps и т. Д.)

    • Как установлено (давно существующие домены стоят больше).

    • Информация о хостерах (какие другие сайты размещены рядом с вами?

    • Частота поиска вашего точного имени.

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

    Например, кто-то может искать «Титаник», и у вас есть сайт об айсбергах … который может быть установлен в корреляцию, которая может быть отражена.

    Новые введенные семантические идентификаторы. Например, теги OWL могут иметь огромное влияние в будущем.

    Например, блог о фильме «Титаник» может поставить на этой странице знак, что это тот же контент, что и в статье Википедии о том же фильме.

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

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

    Google даже применяет факторы, различающиеся по релевантности, в зависимости от темы вашего поискового запроса!

    Трудно, но я возьму удар:

    Изображение (если применимо)

    • Первое изображение на странице
    • изображение с именем, которое содержит буквы «логотип»,
    • изображение, которое будет располагаться ближе всего к верхнему левому (или верхнему правому)
    • изображение, которое чаще всего появляется на других страницах сайта
    • изображение меньше, чем некоторые максимальные размеры

    A <255 абзацев из лучшего фрагмента текста

    • содержимое тега title
    • содержимое тега описания мета-контента
    • содержимое первого тега h1
    • содержимое первого тега p

    Ключевые слова, которые будут использоваться для нашей поисковой системы, (стиль переполнения стека)

    • подстрока имени домена
    • подстрока URL-адреса
    • подстрока тега заголовка
    • близость между термином и самым распространенным словом на странице и верхней частью страницы

    Мета-данные Ключевые слова, описание, все изображения, журнал изменений (для модерации и администрирования)

    • ак! кляп! Ошибка синтаксиса.

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

    Что такое релевантность и как вы ее вычисляете? Есть несколько алгоритмов, и я уверен, что у Google есть свои собственные, но я знаю, что это Pearson Correlation и Euclidean Distance .

    Хорошая книга, которую я предлагаю по этой теме (не обязательно поисковые системы), – это программирование коллективного интеллекта Тоби Сегарана (O'Reilly). Несколько примеров из книги показывают, как извлекать данные с сторонних веб-сайтов с помощью API-интерфейсов или скринировать экран и находить похожие записи, что довольно приятно.

    В любом случае, вернемся к Google. Другие методы релевантности – это, конечно, полнотекстовый поиск, и вы можете, например, получить хорошую книгу о MySQL или Sphinx. Предложенная @Chaoley была TSEP, что тоже довольно интересно.

    Но на самом деле, я знаю людей из российской поисковой системы под названием «Яндекс», и все, что они делают, находится под NDA, поэтому, я думаю, вы можете приблизиться, но вы не можете добиться совершенства, если вы не работаете в Google;)

    Приветствия.

    Фактически отвечая на ваш вопрос (а не только в целом о поисковых системах):

    Я считаю, что бит, как Instapaper, будет лучшим вариантом.

    Логика позади instapaper (я не создавал ее, поэтому я, конечно, не знаю, что происходит внутри, но довольно легко предсказать, как она работает):

    1. Найти большую кучу текста в текстовых элементах (полагаясь на теги абзаца, будучи очень элегантными, не будет работать с этими дрянными сайтами, которые используют div вместо p). В принципе, вам нужно найти хороший баланс между элементами блока (divs, ps и т. Д.) И количеством текста. Придумайте некоторый порог: если X количество слов остается разделенным разметкой, этот текст принадлежит основному тексту тела. Затем развернитесь до братьев и сестер, сохранив порог текста / разметки.

    2. Как только вы сделаете самую сложную часть – найдите текст, который принадлежит фактической статье – это становится довольно легко. Вы можете найти первое изображение вокруг этого текста и использовать его в качестве миниатюры. Таким образом, вы избежите рекламы, потому что они не будут близки к текстовому разметке.

    3. Наконец, придумывание ключевых слов – забавная часть. Вы можете делать множество вещей: заказывать слова по частоте, удалять шум (и т.д., ors и т. Д.), И у вас есть что-то приятное. Смешайте это с «заметным коротким текстовым элементом над обнаруженной областью текста тела» (т. Е. Заголовок вашей статьи), названием страницы, мета и у вас есть что-то очень вкусное.

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

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

    Совет. Для крупномасштабных веб-сайтов, с которыми люди очень часто связаны, вы можете установить HTML-элемент, который содержит основной текст (который я описывал в пункте № 1) вручную. Это обеспечит правильность и ускорит работу.

    Надеюсь это немного поможет.

    Большинство поисковых систем ищут название и мета-описание в начале документа, затем заголовок и текстовое содержимое в теле. Также рассматриваются теги alt alt и заголовки ссылок. В последнее время я читал, что Yahoo использует тег meta keyword, но большинство из них этого не делают.

    Вы можете загрузить файлы с открытым исходным кодом из проекта поисковой системы (TSEP) на Sourceforge https://sourceforge.net/projects/tsep/ и посмотреть, как они это делают.

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

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

    И я тоже сделал это сам: суть моего комментария кратко изложена в первом абзаце. Остальное – это просто примеры и разработки. Если вы не уверены, взгляните на несколько недавних статей, которые я полу-случайно выбрал из Google News. Хорошо, что последний не был полуслучайным, я признаю;)

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

    Надеюсь это поможет.

    Существует множество очень сложных алгоритмов для извлечения соответствующего контента из супа-тега. Если вы хотите создать что-то полезное для себя, вы можете взглянуть на исходный код для удобства чтения и передать его на php. Я сделал что-то подобное недавно (не могу поделиться этим кодом, к сожалению).

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

    Это не пуленепробиваемый, но в большинстве случаев он хорошо работает.

    Я бы подумал, что они строят код

    • Проверьте синонимы и акронимы
    • применение OCR на изображениях для поиска в виде текста (Abby Fine Reader и Recostar хороши, Tesseract является бесплатным и прекрасным (не так хорошо, как прекрасный читатель :))
    • вес шрифтов (размер, смелость, подчеркивание, цвет)
    • весовое содержание в зависимости от его места на странице (например, содержание на верхней стороне страницы более актуально)

    Также:

    • Оптический текст, заданный веб-мастером для определения страницы

    Вы также можете проверить, можете ли вы найти что-нибудь полезное в API поиска Google: http://code.google.com/intl/tr/apis/ajaxsearch/

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

    • взять все html
    • удалить теги сценария и стиля внутри тела С ИХ СОДЕРЖАНИЕМ (важно)
    • удалите ненужные пробелы, вкладки, новые строки.
    • теперь переходите через DOM, чтобы поймать div, p, article, td (другие?) и, для каждого. возьмите html текущего элемента. взять «текстовую» версию содержимого элемента. присвойте этому элементу оценку: текст длина * длина текста / длина html
    • теперь отсортируйте все оценки, возьмите наибольшее количество.

    Это быстрый (и грязный) способ идентифицировать самые длинные тексты с относительно низким балансом разметки, например, что происходит при нормальном содержании. В моих тестах это кажется действительно хорошим. Просто добавь воды 😉

    В дополнение к этому вы можете искать мета-теги «og:», название и описание, h1 и множество других второстепенных методов.

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

    • Веб-сканер
    • Агенты пользователя
    • Боты
    • Скребок данных / экрана

    Я думаю, что вы ищете Screen Scraping (с DOM), в котором у Stack есть тонна вопросов и ответов .

    Google также использует систему под названием «Ранг страницы», где он анализирует, сколько ссылок на сайт есть. Предположим, что вы ищете учебник на C ++, и вы ищете Google для одного. Вы считаете, что это лучший результат, это отличный учебник. Google знает об этом, потому что он просматривал свой кеш в Интернете и видел, что все связывают этот учебник, раздумывая, насколько он хорош. Google обманывает, что это хороший учебник, и ставит его в качестве главного результата.

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

    Надеюсь это поможет!

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

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

    Короткая книга, всего 200 страниц. Содержит «вспомогательные средства», которые отличаются от основного потока текста, а также исторической перспективы. Также указывает на другие недавние системы ранжирования.

    Здесь есть несколько хороших ответов, но похоже, что они не отвечают на ваш вопрос. Возможно, этот будет.

    То, что вы ищете, называется Информационный поиск

    Обычно используется модель Bag Of Words

    Скажем, у вас есть два документа:

     DOCUMENT A Seize the time, Meribor. Live now; make now always the most precious time. Now will never come again 

    и этот

     DOCUMENT B Worf, it was what it was glorious and wonderful and all that, but it doesn't mean anything 

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

     QUERY aka DOCUMENT C precious wonderful life 

    В любом случае, как вы рассчитываете наиболее «релевантные» из двух документов? Вот как:

    1. tokenize каждого документа (перерыв на слова, удаление всех не букв)
    2. все в нижнем регистре
    3. удалить стоп-слова (и, и т.д)
    4. рассмотрите вопрос о сокращении (удаление суффикса, см. алгоритмы сокращения портера или снега)
    5. рассмотрим использование n-граммов

    Вы можете подсчитать частоту слов, чтобы получить «ключевые слова».

    Затем вы создаете одну колонку для каждого слова и вычисляете значение слова для документа в отношении его важности во всех документах. Это называется метрикой TF-IDF.

    Теперь у вас есть это:

     Doc precious worf life... A 0.5 0.0 0.2 B 0.0 0.9 0.0 C 0.7 0.0 0.9 

    Затем вы вычисляете сходство между документами, используя меру сходства Косинус. Документ с наивысшим сходством с DOCUMENT C является наиболее актуальным.

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

    Вы можете посмотреть мое видео здесь. Он использует графический инструмент Java, но объясняет понятия:

    http://vancouverdata.blogspot.com/2010/11/text-analytics-with-rapidminer-part-4.html

    вот достойная книга IR:

    http://nlp.stanford.edu/IR-book/pdf/irbookonlinereading.pdf