Запросы yandex: Подбор слов

«Яндекс» научился ловить «длинный хвост» поисковых запросов

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

Обработка поисковых запросов — это сложная и порой нетривиальная задача для решения которой, как правило, успешно используется машинное обучение. Однако оно имеет некоторые ограничения: дело в том, что для обучения искусственного интеллекта необходимо большое количество разнообразной пользовательской статистики. Эта статистика существует в большом объеме для популярных и среднечастотных запросов, но практически отсутствует для уникальных запросов — то есть тех, которые не повторяются хотя бы дважды в течение всего периода наблюдений. При этом, до 40 процентов поисковых запросов в Яндексе являются именно уникальными (их еще называют «длинным хвостом», так как они составляют существенную долю обращений к поиску): это могут быть запросы от детей, которые обращаются к системе, как к живому собеседнику («дорогой яндекс посоветуй пожалуйста новые интересные игры про фей для плантика»), или запросы от людей, которые хотят узнать название фильма или книги по эпизоду («фильм про человека который выращивал картошку на другой планете»).

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

Разработчики «Яндекса» запустили новый алгоритм, который позволяет справиться с этой проблемой. Он был назван «Палех» в честь Жар-птицы с длинным хвостом, которая часто появляется на палехской миниатюре. В основе «Палеха» лежит использование нейросети и метод семантических векторов.

Разработка и обучение нейросети происходили в несколько этапов. Сначала исследователи использовали модель разработчиков из Microsoft Research под названием Deep Structured Semantic Model. На ее вход подавались тексты запросов и заголовков, которые разбивались на буквенные триграммы (для запроса «палех» получаются триграммы «па», «але», «лех», «ех»). Так как словарь всех известных триграмм ограничен, то текст запроса можно представить в виде вектора размером в несколько десятков тысяч элементов, и отметить вхождение триграмм из запроса в словарь (совпадающие триграммы отмечаются единицей, остальные — нулем).

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

Однако определение семантической близости запроса и заголовка страницы было недостаточно эффективным, если нейросеть использовала только триграммы, поэтому разработчики увеличили размер входного слоя оригинальной модели, дополнительно включив в него около 2 миллионов слов и словосочетаний. После этого они создали набор из запросов и случайных заголовков страниц — например, для запроса «палех» случайным заголовком может быть «Правила дорожного движения 2016 РФ». Среди пар «запрос-случайный заголовок» нейросеть училась искать хорошие — то есть те, в которых слова совпадают (по сути дела, это поиск по ключевым словам). Затем исследователи использовали пары, которые система сочла плохими, для того, чтобы научить ее различать неочевидные закономерности. Они добавляли в названия страниц слова, которые соответствовали одному из слов запроса (для запроса «палехская роспись» заголовок страницы выглядел как «Правила дорожного движения 2016 РФ роспись»). В результате нейросеть научилась отличать естественные пары от составленных вручную, то есть не попадаться в ловушку программистов, но все еще не справлялась с главной задачей.

Тогда программисты заставили алгоритм «воевать» против самого себя. Среди сотен случайных заголовков исследователи выбирали такой, который нейросеть считала наилучшим. Так как этот заголовок все равно был случайным, и с высокой вероятностью не соответствовал запросу, то его стали использовать в качестве отрицательного примера. Другими словами, разработчики «показывали» нейросети лучшие из случайных заголовков, обучали ее, затем искали новые лучшие случайные заголовки, снова показывали системе и так далее. Раз за разом повторяя данную процедуру, исследователи улучшили качество модели, и самые удачные случайные пары стали похожи на настоящие положительные примеры. Использованная схема обучения называется hard negative mining.

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

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

Кристина Уласович

Нашли опечатку? Выделите фрагмент и нажмите Ctrl+Enter.

«Яндекс» представил подборку смешных поисковых запросов

Наука 24138

Поделиться

Компания «Яндекс» представила подборку поисковых запросов, попавшихся на глаза сотрудников компании и показавшиеся им наиболее оригинальными, нелепыми, смешными или попросту странными. Представители компании сохранили «авторские» орфографию и пунктуацию.

Во многих случаях запросы выглядят забавными из-за того, что их авторы не слишком представляли верное написание названия интересующей их темы. Так, одни пользователи пытались найти в интернете фильм «Мстители война без конечностей» (в действительности называвшийся в русскоязычном прокате «Мстители: война бесконечности»), а другие посчитали, что известного французского футболиста алжирского происхождения зовут «Зинаид Зидан» (видимо, имя «Зинедин» в мыслях авторов таких запросов преобразовалось под влиянием более привычного русскоязычным людям имени «Зинаида»).

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

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

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

Помимо этого, людей в 2018 году интересовало, «куда сходить где нет людей», «как отомстить мужчине рыбе» и «как нарисовать самый красивый рисунок на тему ах зимушка зима легко». Также люди искали «рэп для мамы на 8 марта» и, вероятно, всерьёз рассчитывали обнаружить «фото девушек древнего египта».

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

Читайте материал «Яндекс назвал «главные темы» 2018 года: спорт, смартфоны и Кобзон»

Подписаться

Авторы:

Что еще почитать

Что почитать:Ещё материалы

В регионах

  • В Ярославле избитые модели написали заявление в полицию

    Фото 48067

    Ярославль
  • Туристка рассказала о пробке перед Крымским мостом: досматривают даже детей

    29427

    Крым

    фото: МК в Крыму

  • ВСУ собираются перекрыть пути в Крым

    Фото 22417

    Крым

    фото: МК в Крыму

  • Крым удивит туристов Русскими Мальдивами в 2023 году

    Фото 18353

    Крым

    фото: МК в Крыму

  • Транспортный кризис в Полевском напоминает хорошо срежиссированный спектакль

    Фото 11737

    Екатеринбург

    Максим Бойков

  • 7 июля – день Ивана Купалы, что можно, а что строго запрещено делать в большой праздник

    Фото 6670

    Псков

В регионах:Ещё материалы

Получить токен.

API Яндекс Директа. Версия 5

Python 2 или 3 с библиотеками Flask и Requests

  1. Установка дополнительных библиотек
  2. URL обратного вызова
  3. Процедура
  4. Запуск скрипта
  5. Код скрипта

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

Можно использовать утилиту pip для установки библиотек (Flask, Requests, Suds, PyXB и др.):
 pip install %package_name% 

Утилита pip включена в Python 2, начиная с версии 2.7.9, и в Python 3, начиная с версии 3.4. Если вы используете более раннюю версию Python, вам необходимо установить pip. Например, вы можете использовать скрипт https://bootstrap.pypa.io/get-pip.py.

Для получения дополнительной информации см. https://packaging.python.org/tutorials/installing-packages.

При регистрации или редактировании параметров приложения на OAuth-сервисе Яндекса необходимо указать в качестве Callback URL URL скрипта, принимающего токен. Например:

 https://site.ru/get_token 

В запросе токена необходимо указать идентификатор приложения и пароль, которые были сгенерированы при регистрации на OAuth-сервисе Яндекса.

  1. Приложение переводит пользователя на страницу запроса доступа по ссылке в формате

     https://oauth.yandex.com/authorize?response_type=code&client_id=APPLICATION_ID 

    На открывшейся странице пользователь нажимает Позволять.

  2. Yandex OAuth выполняет редирект на адрес с Callback URL. Кроме того, 9К адресу добавляется параметр 0041 code . Например:

     http://site.ru/get_token?code=AUTHORIZATION_CODE 
  3. Скрипт отправляет POST запрос на https://oauth.yandex.com/token , передавая следующие параметры:

    • тип_гранта = код_авторизации

    • код = КОД_АВТОРИЗАЦИИ

    • идентификатор_клиента = ПРИЛОЖЕНИЕ_ ID

    • client_secret = ПАРОЛЬ_ПРИЛОЖЕНИЯ

  4. Yandex OAuth отправляет ответ в формате JSON. Ключ access_token содержит токен OAuth. Например:

     {"access_token": "0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f"} 

    Полученный токен необходимо сохранить и использовать в запросах к API Яндекс Директ.

Flask позволяет указать только IP-адрес и порт для запуска скрипта. Есть несколько вариантов запуска скрипта:

  • Запустите приложение на общедоступном IP-адресе (который могут видеть другие устройства в Интернете). Этот IP-адрес должен быть указан для вашего домена в DNS, а приложение должно работать на правильном порту (443 для HTTPS).

  • Использовать веб-сервер для проксирования запросов. Например, вы можете использовать Nginx со следующей конфигурацией:

     сервер {
        слушать 443;
        # Установите домен из поля Callback URL
        имя_сервера site.ru;
        журнал_доступа /var/log/nginx/access.log;
        журнал_ошибок /var/log/nginx/error. log;
        местоположение /get_token {
            прокси_пароль http://127.0.0.1:8000/;
            прокси_перенаправление выключено;
            proxy_set_header Хост $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $ схема;
        }
    } 

    Приведенный ниже код сценария определяет параметры запуска для этой конфигурации.

Для получения дополнительной информации см. http://flask.pocoo.org/docs/0.12/deploying.

Чтобы использовать этот пример, укажите идентификатор приложения и пароль.

# --*- кодировка: utf-8 --*-
из фляги импорт фляги, запрос, jsonify, перенаправление
из запросов импортировать пост
# Метод кодирования URL как в Python 3, так и в Python 2
импорт системы
если sys.version_info < (3, 0): # Pytohn2.x
    из urllib импортировать urlencode
еще: # Python3.x
    из urllib.parse импортировать urlencode
# Идентификатор приложения
client_id = 'ID_ПРИЛОЖЕНИЯ'
# Пароль приложения
client_secret = 'ПАРОЛЬ_ПРИЛОЖЕНИЯ'
# Адрес OAuth-сервера Яндекса
baseurl = 'https://oauth. yandex.ru/'
приложение = Фляга (__имя__)
@приложение. маршрут('/')
индекс защиты ():
 если request.args.get('код', False):
 #Если скрипт был вызван с параметром "код" в URL,
 #он выполняет запрос на получение токена
        печать (запрос.аргументы)
        печать (запрос.данные)
        данные = {
            'grant_type': 'код_авторизации',
            'код': request.args.get('код'),
            'client_id': client_id,
            'клиент_секрет': client_secret
        }
        данные = urlencode (данные)
        # Сохраняем токен для использования в запросах к API Яндекс Директ
        return jsonify (сообщение (baseurl + «токен», данные). json())
еще:
 # Если скрипт был вызван без параметра "code",
        # пользователь перенаправляется на страницу запроса доступа
        вернуть перенаправление (baseurl + "авторизовать? response_type = code & client_id = {}". формат (client_id))
если __name__ == '__main__':
    # Отладочная информация
    # app.debug = Истина
    # Запускаем веб-сервер с доступом на порт 8000
    app. run(хост='127.0.0.1', порт=8000) 

Коды ответов и коды ошибок. API Яндекс Директа. Версия 5

В таблице перечислены коды ответов HTTP.

90 132 502
Значение Описание
200 Отчет успешно создан в онлайн-режиме
201 Отчет успешно добавлен в автономную очередь
202 Отчет формируется в автономном режиме
400 Ошибка в запросе или превышен лимит запросов в очереди
500 Ошибка сервера при формировании отчета
Время обработки запроса истекло на сервере

При возникновении ошибки возвращается следующая структура:

 {
  "ошибка": {
    "request_id": (строка),
    "код_ошибки": (целое число),
    "error_string": (строка),
    "error_detail": (строка)
  }
} 
Параметр Тип Описание
request_id string Уникальный идентификатор запроса, присвоенный Яндексом Прямой сервер API. Он также передается в HTTP-заголовке Request-ID .
error_code целое число Числовой код ошибки.
error_string string Текстовое сообщение об ошибке.
error_detail string Подробное описание ошибки.
   

  <отчеты:ApiError>
    <Уникальный идентификатор запроса, присваиваемый сервером API Яндекс Директа. Он также прошел в  Request-ID  HTTP-заголовок."}}">>(string)
    <Числовой код ошибки."}}">>(int)
    <Текстовое сообщение об ошибке. "}}">>(string)
    <Подробное описание ошибки."}}">>(string)
  

 
Параметр Тип Описание
отчеты: объект ApiError
reports:requestId string Уникальный идентификатор запроса, присвоенный API Яндекс Директ сервер. Он также передается в HTTP-заголовке Request-ID .
отчеты: errorCode int Числовой код ошибки.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Copyright © 2025
Дропшиппинг в России.
Сообщество поставщиков дропшипперов и интернет предпринимателей.
Все права защищены.
ИП Калмыков Семен Алексеевич. ОГРНИП: 313695209500032.
Адрес: ООО «Борец», г. Москва, ул. Складочная 6 к.4.
E-mail: [email protected]. Телефон: +7 (499) 348-21-17