Эта статья возникла из личного публичного аккаунта:TechFlow
Когда дело доходит до машинного обучения, у всех должно быть множество ассоциаций, таких как недавний горячий искусственный интеллект и AlphaGo, победившая Ли Седоля, и даже некоторые люди думают о классических фильмах о роботах, таких как «Матрица» или «Враг общества».
Но на самом деле, хотя машинное обучение широко используется в настоящее время, среди крупных интернет-компаний наиболее важные сценарии применения практически не изменились. По сути, он продолжает предыдущую тройку — поиск, рекомендация и реклама. Сегодня поговорим о большом — поиске. Самый большой пользователь поисковых алгоритмов в интернет-компаниях — создание поисковых систем, а поисковые системы почти стандартны для крупных интернет-компаний.Будь то электронная коммерция, общественное или социальное программное обеспечение, поисковые системы неразделимы. Baidu, одна из трех компаний BAT, стала одной из крупнейших интернет-компаний Китая благодаря своей высококачественной китайской поисковой системе.
Хотя поисковые системы очень важны и тесно связаны с нашей жизнью, лишь немногие интернет-практики понимают их принцип и структуру. Прежде чем разбираться в конкретном алгоритме поиска, давайте сначала ознакомимся с архитектурой поисковой системы. Посмотрите, что сделали большие коровы в GitHub, которые в одиночку внедрили поисковую систему.
Это упрощенная версия архитектуры поисковой системы, простите меня за стиль. Функция поисковой системы в основном делится на две части: первая часть связана с поисковым роботом, а вторая часть — с поиском и сортировкой. Мы разделяем эти две части и вводим их отдельно.
Сканер, также известный в некоторых местах как паук, по сути представляет собой программу, автоматически подключающуюся к Интернету. Все мы знаем, что в Интернете тысячи веб-страниц, и собрать их вручную по одной нереально. Таким образом, краулер — это программа, которая заменяет ручной просмотр Интернета.Каждый раз, когда будет найден новый веб-сайт, он будет сканировать и сохранять содержимое веб-сайта.
Возникает вопрос, откуда краулер узнает адрес сайта в Интернете?
В основном это зависит от связи между веб-сайтами. Например, содержимое веб-сайта А имеет ссылку на веб-сайт Б. После сканирования веб-сайта А сканер будет следовать контенту для сканирования веб-сайта Б. Если веб-сайт B указывает на множество других веб-сайтов, краулер посетит их по очереди. Ссылки, хранящиеся в контенте, похожи на паутину, связывающую каждую веб-страницу, а сканер похож на паука, перемещающегося внутри.
Веб-сайты, которые мы видим каждый день, очень богаты содержанием, включая текст, изображения, видео и другие мультимедиа. Но все мы знаем, что основой современного веб-сайта является HTML, то есть язык гипертекстовой разметки.Например, если я открою Baidu и покажу исходный код веб-страницы, будет отображено следующее содержимое:
Другими словами, в глазах поискового робота все веб-страницы — это просто текст, и даже изображения или видео существуют только в виде тегов или ссылок в HTML. Мы также можем видеть, что этот абзац текста неорганизован, и человеческому глазу трудно увидеть, какая информация в нем содержится. Конечно, такой текст нельзя использовать напрямую, также требуется обработка текста.
Обработка здесь в основном включает два шага.Первый шаг — очистить HTML-теги и оставить только ключевую текстовую информацию. После этого шага содержимое текста будет сильно сжато. Например, если домашняя страница Baidu удалена, останется только «Baidu, узнай немедленно» и заголовки нескольких статей под строкой поиска.
Первый шаг обработки текста относительно прост, в Python есть очень зрелые инструменты анализа HTML, а второй шаг намного сложнее. Когда мы получим текст веб-страницы, следующий шаг, который нам нужно сделать, — это извлечь ключевые слова веб-страницы и обработать их в индекс для хранения.
Для его описания достаточно одного предложения, но на практике это непросто. Для китайского языка необходимо извлечь ключевые слова и сначала требуется сегментация слов. Например, «Baidu Yiyi», эти четыре слова фактически подразумевают два слова «Baidu» и «Daigai». Если мы не будем выполнять сегментацию слов, то только пользователь сможет искать веб-страницы Baidu, вводя слова «baidu click», что явно неразумно. Но китайский и английский разные, между словами нет пробела, поэтому нужны текстовые алгоритмы для сегментации слов. Эта проблема в настоящее время реализуется посредством машинного обучения, и идеального решения не существует.
После получения результатов сегментации текста для хранения остается только часть ключевых слов. При сохранении в дополнение к сохранению прямой информации ключевого слова веб-страницы также сохраняется обратная информация ключевого слова веб-страницы. В центре хранения веб-страницы агрегируются по ключевым словам. Каждому ключевому слову будет соответствовать список веб-сайтов, и все веб-сайты, содержащие это ключевое слово, будут храниться в этом списке. Таким образом, когда пользователи ищут ключевые слова, они могут напрямую найти соответствующий веб-сайт в соответствии с ключевыми словами.
Как показано на рисунке, в поисковой системе Пекин и университет — это два ключевых слова, которые соответствуют серии веб-сайтов, содержащих это ключевое слово. Предположим, в прежней системе не было официального сайта Пекинского университета, но недавно его отловил краулер. Так как на официальном сайте Пекинского университета есть два ключевых слова, Пекин и Университет, при сохранении система добавит сайт Пекинского университета в список, соответствующий двум ключевым словам Пекин и Университет. Таким образом, ищем ли мы Пекин или университеты, мы можем вспомнить веб-сайт Пекинского университета.
Конечно, независимо от того, ищем ли мы Пекин или университеты, возвращаемый контент очень велик, и мы не сможем вернуться к Пекинскому университету. Когда мы ищем Пекинский университет, поисковая система будет вспоминать веб-сайты с двумя ключевыми словами «Пекин» и «университет» одновременно, а затем сделает пересечение. Выберите веб-сайт, который содержит и Пекин, и университет, и верните его, чтобы вы точно могли вернуться на официальный сайт Пекинского университета.
Помимо сканеров, еще одной важной частью поисковой системы является служба на стороне пользователя, которая является правой частью диаграммы архитектуры.
После того, как мы поймем принцип центра хранения, весь процесс на самом деле станет очень ясным. Короче говоря, выполняются только две вещи: одна — отзыв, а другая — сортировка.
Напомним, как следует из названия, это перейти в центр хранения, чтобы найти соответствующие результаты поиска этих ключевых слов с помощью ключевых слов, введенных пользователем. Затем выполните пересечение этих результатов, чтобы найти контент с наивысшей степенью совпадения.
Поскольку объем хранимых данных очень велик, контента для обработки много, а требования к производительности системы очень высоки (терпение пользователя ограничено). Поэтому на этапе отзыва с ним нельзя обращаться очень внимательно, и он заключается в отсеивании контента, в основном отвечающего требованиям, на крупнозернистой основе.
Хотя каждый раз, когда мы ищем на Baidu, он сообщает нам, что есть миллионы или даже больше результатов, но на самом деле может быть только одна или две тысячи результатов, которые действительно вспоминаются через грубую сортировку. Поскольку есть грубые ряды, есть и тонкие ряды. На самом деле это тоже очень легко понять: после грубой сортировки данные сократились с десятков миллионов до одной-двух тысяч.
Следующее, что нужно сделать, это дополнительно отсортировать две тысячи фрагментов данных. Основным основанием для сортировки часто является более одного.Первый из них, конечно, степень соответствия.Если возвращенный веб-сайт не соответствует привлекательности пользователя, это, очевидно, повредит пользовательскому опыту и даже приведет к потере пользователей. Поэтому независимо от того, какая поисковая система, качество всегда на первом месте. После этого основа каждого движка отличается.Некоторые веб-сайты могут уделять больше внимания доходу, поэтому они будут ставить веб-сайты, которые получают больше денег, в то время как некоторые веб-сайты будут уделять больше внимания авторитету и будут размещать более популярные или больше официальных сайтов наверх. . После ряда корректировок и фильтрации результаты фактически возвращаются пользователю.
На этом этапе представлена архитектура всей поисковой системы. Что касается архитектуры, то система не сложна. Среди сайтов электронной коммерции есть много более сложных систем, чем эта. Однако, поскольку поисковая система является входом в Интернет, она несет огромный трафик и имеет чрезвычайно высокие требования к производительности, поэтому во всей системе много оптимизаций, а реальная система намного сложнее и труднее.
Давайте отбросим трудности и внимательно проанализируем эту архитектуру, и мы действительно найдем что-то интересное. Например, я иногда задаюсь вопросом, почему Baidu — лучшая китайская поисковая система?
Позже я узнал, что Ли Яньхун был родом из библиотековедения Пекинского университета.Когда я смотрю на структуру этой поисковой системы и структуру индекса, разве это не то же самое, что и управление библиотекой?
До появления поисковых систем книги в библиотеках также классифицировались и хранились в соответствии с категориями, ключевыми словами и авторами. Таким образом, при поиске можно быстро найти соответствующие книги. Эта идея была очень зрелой до появления компьютеров.Если мы изменим концепцию и будем рассматривать веб-страницы в Интернете как книги, то название веб-страницы — как название книги, а ключевые слова в тексте — как ключевые слова книги. Книга, а затем поиск Технология веб-страниц и поиска книг на самом деле одна и та же. Затем Ли Яньхун, родившийся в области библиотечного дела, после изучения компьютера задумался о применении технологии поиска книг в мире Интернета, и это пришло само собой.
Кажется, что то, чего человек может достичь, зависит от хода истории в дополнение к личной борьбе.
Добро пожаловать, чтобы отсканировать код и обратить внимание на: