простые решения сложных проблем

Итак, примерно год назад Google анонсировал и плавно запустил новый супер-пупер алгоритм под названием RankBrain - ну, типа искусственный интеллект к поиску прикрутили. Основной заявленной фишкой объявили поиск по фактам (смыслам), а не тупо по словам, как раньше. А в конце прошлого года с реализацией подобного алгоритма под названием "Палех" подтянулся и Яндекс.

Я не сомневаюсь, что хотели они, конечно, как лучше, но получилось, как всегда... И результат не заставил себя ждать - качество поиска (на практике) заметно ухудшилось. Но оно и понятно, почему. Не знаю, какова там реализация у Гугла, но Яндекс раскрыл некоторые подробности - они использовали нейронную сеть (см. статью на хабре). Пока вроде бы только для заголовков, но потом планируют анализировать и сами тексты. Честно говоря, не ожидал, что они рискнут использовать нейронные сети. Дело в том, что такие алгоритмы являются черным ящиком, так как тяжело понять (разобраться, проанализировать), почему нейронная сеть приняла то или иное решение, т.е. принятие решения непрозрачно - а это головная боль в дальнейшем при настройке.

В чем суть алгоритмов RankBrain (Гугла) и Палех (Яндекса)?

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

 Автоматически (или полуавтоматически) из текстов формируется набор фактов. Каждый факт представлен набором неких признаков (специфичных слов, терминов, имен, чисел и пр.). Главное, чтобы такой набор признаков с высокой долей вероятности определял факт (или явление). А затем всё просто: пробегаемся по корпусу текстов, по надежным признакам вычленяем факты, содержащиеся в каждом тексте и подсчитываем, как часто то или иное слово (из остальных слов текста) встречается вкупе с тем или иным фактом. Таким образом мы получим связи между каждым словом (корпуса текстов) и тем или иным фактом. Сила связи является  ни чем иным как вероятностью встретить такое то слово в статье с таким то фактом. Эти вероятностные связи можно вычислить например с помощью алгоритма LDA. В Яндексе использовали нейронную сеть. Суть в том, что практически между всеми словами и всеми фактами образуются связи с ненулевой вероятностью (пусть и очень маленькой).

Таким образом мы для каждого факта можем получить список слов, сильно связанных с данным фактом, а точнее - список слов, отсортированный по убыванию вероятности. Что нам это дает? А вот что: предположим с неким ФАКТом-1 сильно связаны два набора слов (СЛОВО1, СЛОВО2) и (СЛОВО3, СЛОВО4). И предположим, что эти наборы одновременно не встречаются (или редко встречаются в одной и той же статье). И если мы осуществим поиск по фразе из первого набора: (СЛОВО1, СЛОВО2), то мы найдем ФАКТ-1 и выведем список статей со словами, сильно связанными с этим фактом. Что интересно, в этом списке могут легко оказаться статьи, не содержащие ни одного слова из запроса (например, статья, которая связана с ФАКТом-1 через набор слов: (СЛОВО3, СЛОВО4)). Т.е. это и есть поиск по факту или смыслу, если хотите.

А что в результате то?

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

Недостатки алгоритмов поиска по фактам

1. Первое, что бросилось в глаза - это наличие в ТОПе выдачи совершенно левых результатов. Да, они не на первых местах, но всё же и на пятом-десятом местах режут глаз и вызывают сомнения в адекватности выдачи. Вот и в примере Яндекса происходит аналогичная вещь. По запросу "келлская книга" у них в выдаче оказывается совершенно левая страница: "икеа гипермаркеты товаров для дома и офиса ikea". Да, она не на первых местах, но и вес у нее не такой уж маленький. Т. е. такие страницы хорошо бы отсекать, но задача эта имхо не такая уж простоя... чтобы и отсечь мусор надежно и лишнего не отрезать.

2. Второе, что бросилось в глаза - это то, что выдача вроде бы и по теме, но какая то неконкретная, обобщенная, размытая. С одной стороны, она интересная, но с практической стороны - простой поиск по словам запроса оказывался полезнее, конкретнее.  И то же самое я вижу сейчас и у поисковиков.  Например, если у меня программа выдавала в логах ошибку, то раньше я тупо копировал её текст, вставлял в поисковую строку и практически всегда сразу получал в ТОП3 решение проблемы, именно моей конкретной проблемы, точно описываемой строкой ошибки из логов.

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

Кстати, вот недавно мне надо было узнать ответ на конкретный вопрос: какими именно саморезами и дюбелями лучше всего прикручивать пластиковый плинтус к бетонной стене. И... я не смог найти ответ ни в Гугле, ни в Яндексе. Мне предлагались десятки статей с общим описанием плинтусов, но конкретики не было. В итоге я нашел требуемую инфу, но не через поиск, а на одном форуме.

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

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

Ну, и как побочный эффект в ТОП массово полезли низкокачественные сайты. Но об этом в следующем материале...

Оставьте свой комментарий: