Как поисковые системы нас понимают. Основы текстового анализа

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

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

Казалось, прежде чем Google представил RankBrain, а Яндекс — Королев, SEO продвижение и жизнь SEO специалистов были намного проще. Теперь мы подвержены потоку противоречивой информации от влиятельных лиц отрасли. Ситуация усугубляется тем, что представители Яндекс и Google дают малопонятную информацию о качественных сигналах и в голос твердят одно и то же: «Делайте сайты для людей».

Как отличить бесполезные советы и предположения о работе алгоритмов от реальных действующих методов? Ниже вы найдете ответы на вопросы, которые помогут понять, как устроены поисковые системы и суть работы SEO оптимизатора. Читайте и становитесь настоящим гуру поисковой оптимизации…

 

Слово для поисковой системы

Слово — это самая маленькая смысловая единица речи, которая служит для выражения отдельного понятия. Для начала выясним, как слова представлены в компьютерных программах, и выявим сильные и слабые стороны данных подходов.

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

 

«Программы программиста были запрограммированы».

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

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

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

 

Программы программиста были запрограммированы.

Слова могут иметь разные формы. Например, слово «программы» является формой существительного множественного числа от «программа». «Запрограммированный» — это причастие прошедшего времени, образованное от глагола «программировать». Неизмененная, исходная форма слова называется лемма. Для существительных это именительный падеж и единственное число, для глаголов — форма слова, отвечающая на вопрос «что делать?» Первый логический шаг в обработке запроса – преобразовать слова в их соответствующие леммы.

Программа программиста должна быть программной.

Поисковые системы используют стоп-слова для предварительной обработки вводимых запросов. Список стоп-слов – это набор символов, которые удаляются из текста. Стоп-слова могут включать функциональные слова и знаки препинания. Функциональные слова — это слова, которые не имеют самостоятельного значения, например, вспомогательные глаголы или местоимения.

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

программист программа программа

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

Теперь посмотрим на преобразованный запрос при замене всех слов на их леммы.

программа программа программа

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

Существует три способа представления слов:

  • символ;
  • лемма;
  • корень.

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

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

Что нужно знать SEO-специалисту
  • Важно понимать, зачем необходимо разбивать предложения на лингвистические составляющие. Эти единицы являются частью метрики, которую знают и используют оптимизаторы. Они составляют такой показатель, как плотность ключевых слов. Хотя многие SEO-оптимизаторы выступают против этого показателя и утверждают, что плотность ключевых слов ни на что не влияет. В качестве альтернативы они предлагают использовать показатель TF-IDF, поскольку он связан с семантическим поиском. Далее мы увидим, что как необработанные, так и взвешенные количества слов могут использоваться и для лексического и для семантического поисков.
  • Плотность ключевых слов — это удобная и простая метрика, которая имеет право на существование. Однако не стоит зацикливаться на ней.
  • Также имейте ввиду, что грамматические формы рассматриваются поисковыми системами как один и тот же тип слова, поэтому не имеет смысла оптимизировать веб-страницу, например, для единственного и множественного числа одного ключевого слова.

 

 

Мешок слов

Мешок слов (bag-of-words) – это модель, которая используется при обработке естественного языка для представления текста (от поискового запроса до полномасштабной книги). Хотя эта концепция восходит к 1950-м годам, она все еще используется для классификации текста и поиска информации.

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

В результате теряется вся информация о текстовой структуре, синтаксисе и грамматике текста.

программы программиста были запрограммированы
{: 1, программист: 1, s: 1, программы: 1, имели: 1, были: 1, запрограммированы: 1} или
[1, 1, 1, 1, 1, 1, 1]
programmer program program
{программист: 1, программа: 2} или
[1, 2]

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

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

Значение в пересечении каждой строки и столбца — это количество раз, когда соответствующее слово появляется в соответствующем тексте. В таблице ниже изображена векторная модель для пьес Шекспира. Для простоты восприятия мы используем всего четыре слова.

 Как вам это понравится
Двенадцатая ночь, или Что угодноЮлий ЦезарьГенрих V
Битва1

0713
Отличный114

806289
Дурачить36

5814
Остроумие20

1523

Как мы уже говорили ранее, мешок слов на самом деле является вектором. Преимущество векторов в том, что мы можем измерить расстояние или угол между ними. Чем меньше расстояние или угол — тем больше «похожих» векторов и документов, которым они соответствуют. Это осуществляется с помощью показателя косинусного сходства. Результат варьируется от 0 до 1. Чем выше значение, тем больше похожих документов.

 

 

Поиск соответствующего документа

Допустим, пользователь вводит запрос «битва при Азенкуре». Это небольшой документ, который может быть встроен в векторное пространство, как в примере выше. Соответствующий вектор равен [1, 0, 0, 0]. «Отличный», «дурачить» и «остроумие» имеют нулевое число. Затем мы можем вычислить сходство поискового запроса с каждым документом в списке. Результаты приведены в таблице ниже. Видно, что Генрих V лучше всего соответствует запросу. Это неудивительно, поскольку слово «битва» встречается в этом тексте чаще. Этот документ можно считать более релевантным запросу. Также совсем необязательно, чтобы все слова в поисковом запросе присутствовали в тексте.

ПьесаСходство
Как вам это понравится

0,008249825
Двенадцатая ночь, или Что угодно

0
Юлий Цезарь

0.11211846
Генрих V

0,144310885

У такого подхода есть несколько очевидных недостатков:

  1. Уязвимый показатель плотности ключевых слов. Можно существенно повысить релевантность документа поисковому запросу, просто повторяя требуемое слово столько раз, сколько необходимо, чтобы превзойти конкурирующие документы в коллекции. Именно так работали поисковые системы на старте, в конце 1990-х. Достаточно было перенасытить текст ключевыми словами и первое место в выдаче гарантированно.
  2. Подбор документов для мешков слов типа
    Меня впечатлило, это было неплохо! и
    Я не был впечатлен, это было плохо! будет абсолютно одинаковым, хотя они имеют разные значения. Помните, что модель мешка слов не различает всю структуру, лежащую в основе документа.
  3. Модель мешка слов с частотой встречаемости слова — не лучшая мера. Результаты поиска искажаются документами с высокой плотностью вводимых ключевых слов, хотя по факту эти документы могут не содержать нужной в себе информации.

 

В следующей части статьи мы подробно рассмотрим пункты:

  • Проверка по закону Ципфа и метод TF-IDF.
  • Как осуществляется семантический поиск.

 

Следите за нашими публикациями в VK и FB.

Поделиться:

You may also like...