Às vezes, as pessoas recorrem ao Yandex para encontrar um filme cujo nome saiu de suas cabeças. Eles descrevem o enredo, cenas memoráveis, detalhes vívidos: por exemplo, [qual é o nome do filme em que um homem escolhe uma pílula vermelha ou azul]. Decidimos estudar as descrições de filmes esquecidos e descobrir o que é mais lembrado pelas pessoas nos filmes.
Hoje, não apenas compartilharemos um link para o nosso
estudo , mas também falaremos brevemente sobre como a pesquisa semântica do Yandex evoluiu. Você aprenderá quais tecnologias ajudam a pesquisa a encontrar a resposta, mesmo quando é simplesmente impossível formular a solicitação exata.
Também adicionamos controles deslizantes com exemplos de solicitações de pessoas reais - sinta-se como um mecanismo de pesquisa e tente adivinhar a resposta.
Todos os mecanismos de pesquisa começaram com uma pesquisa por palavra. O Yandex já no início conseguiu levar em conta a morfologia do idioma russo, mas ainda era a mesma pesquisa de palavras de uma consulta nas páginas da rede. Mantemos listas de todas as páginas conhecidas para cada palavra. Se a solicitação continha uma frase, bastava cruzar as listas de palavras - eis a resposta. Funcionou muito bem naqueles dias em que havia poucos sites, e a questão da classificação ainda não era tão aguda.
Runet desenvolvido, sites se tornaram mais e mais. Mais dois fatores foram adicionados ao fator de cruzamento de palavras. Por um lado, os próprios usuários nos ajudaram. Começamos a considerar quais sites e para quais consultas eles escolhem. Não há correspondência exata de palavras, mas o site resolve o problema humano? Este é um sinal útil. Por outro lado, os links entre sites que ajudaram a avaliar o significado das páginas foram úteis.
Três fatores são muito poucos. Especialmente quando são frequentemente experimentados pelos talentosos otimizadores de mecanismos de pesquisa. Mas digerir mais à mão era difícil. E aqui começou a era do aprendizado de máquina. Em 2009, apresentamos o Matrixnet com base no aumento de gradiente (mais tarde, essa tecnologia formou a base da mais avançada biblioteca de código aberto
CatBoost ).
Desde então, houve mais e mais fatores, porque não precisamos mais procurar relacionamentos entre eles manualmente. Um carro fez isso por nós.
Para a história de todas as alterações subseqüentes na Pesquisa, haverá não apenas uma postagem, mas também um livro; portanto, tentaremos focar nas mais reveladoras.
A classificação não é apenas uma comparação de palavras e páginas de consulta por um longo tempo. Dois exemplos
Em 2014, introduzimos a tecnologia de anotação de documentos com consultas características. Suponha que no passado houvesse um pedido [uma série do Brasil sobre o rei da carne], para o qual uma boa resposta já é conhecida. Em seguida, outro usuário entra em uma consulta [a série brasileira em que havia um rei da carne e um rei do leite], para a qual a máquina ainda não sabe a resposta. Mas essas consultas têm muitas palavras comuns. Este é um sinal de que a página encontrada na primeira solicitação pode ser relevante na segunda.
Outro exemplo Vamos fazer perguntas [a série brasileira em que havia um rei da carne e um rei do leite] e [uma herança fatal em série]. Do total, eles têm apenas uma palavra - "série", e isso não é suficiente para a correspondência explícita de solicitações. Nesse caso, começamos a levar em conta o histórico da pesquisa. Se houver duas solicitações diferentes nos mesmos sites da emissão, podemos assumir que as solicitações são intercambiáveis. Isso é útil porque agora usaremos o texto das duas consultas para pesquisar e encontrar páginas mais úteis. Mas isso só funciona para solicitações repetidas quando já há pelo menos algumas estatísticas. O que fazer com novos pedidos?
A falta de estatísticas pode ser compensada pela análise de conteúdo. E na análise de dados homogêneos (texto, voz, imagens), as redes neurais se mostram melhor. Em 2016, contamos à comunidade Habr sobre
a tecnologia Palekh , que se tornou o ponto de partida para o uso mais amplo de redes neurais na Pesquisa.
Começamos a treinar a rede neural para comparar a proximidade semântica (semântica) do texto da solicitação e o título da página. Dois textos são representados na forma de vetores no espaço multidimensional, de modo que o cosseno do ângulo entre eles prediz bem a probabilidade de uma pessoa escolher uma página e, portanto, a proximidade semântica. Isso permite avaliar a proximidade dos significados mesmo daqueles textos em que não há interseção de palavras.
Um exemplo de arquitetura de camada para os curiosos Da mesma forma, começamos a comparar os textos de consulta para identificar os links entre eles. Um exemplo real de um mecanismo de busca: para uma consulta [série americana sobre como a metanfetamina é fervida], é a rede neural que encontra as frases [significando mal] e [quebrando mal] como similares.
Pedidos e cabeçalhos já são bons, mas não perdemos a esperança de usar redes neurais no texto completo das páginas. Além disso, quando recebemos uma solicitação do usuário, começamos a selecionar as melhores páginas entre milhões de páginas de índice, mas em Palekh usamos modelos de redes neurais apenas nos estágios mais recentes do ranking (L3) - para cerca de 150 dos melhores documentos. Isso pode levar à perda de boas respostas.

O motivo é previsível - recursos limitados e altos requisitos de velocidade de resposta. As limitações estritas dos cálculos estão ligadas a um fato simples: você não pode forçar o usuário a esperar. Mas então criamos algo.
Em 2017, apresentamos a atualização de pesquisa Korolev, que incluía não apenas o uso expandido de redes neurais, mas também um trabalho sério em arquitetura para economizar recursos. Mais detalhadamente, com diagramas de camadas e outros detalhes que já contamos em outro post sobre Habré, mas agora vamos lembrar o principal.
Em vez de pegar o título do documento e calcular seu vetor semântico durante a execução da consulta, você pode pré-calcular esse vetor e salvá-lo no banco de dados de pesquisa. Em outras palavras, podemos fazer uma parte substancial do trabalho com antecedência. Obviamente, ao mesmo tempo, precisávamos de mais espaço para armazenar vetores, mas isso economizava tempo de processador. Mas isso não é tudo.
Outro esquema para os curiosos Criamos um índice adicional. É baseado na hipótese: se você fizer uma lista suficientemente grande dos documentos mais relevantes para cada palavra ou frase para uma consulta de várias palavras, entre eles, haverá documentos que são relevantes ao mesmo tempo para todas as palavras. Na prática, isso significa isso. Para todas as palavras e pares populares de palavras, um índice adicional é formado com uma lista de páginas e sua relevância preliminar para a consulta. Ou seja, transferimos parte do trabalho do estágio L0 para o estágio de indexação e, novamente, salvamos.
Como resultado, uma mudança na arquitetura e redistribuição de cargas nos permitiu usar redes neurais não apenas no estágio L3, mas também para L2 e L1. Além disso, a capacidade de formar um vetor antecipadamente e com requisitos de desempenho menos rigorosos nos permitiu usar não apenas o título da página, mas também o texto.
Mais é mais. Com o tempo, começamos a usar redes neurais no estágio inicial de classificação. Ensinamos redes neurais a identificar padrões implícitos na ordem das palavras e suas posições relativas. E até para revelar a semelhança semântica dos textos em diferentes idiomas. Cada uma dessas áreas é desenhada para um artigo separado, e tentaremos retornar com elas em um futuro próximo.
Hoje, lembramos mais uma vez como os mecanismos de pesquisa aprendem a encontrar a resposta nas condições de uma vaga consulta e falta de informações. A busca de filmes por sua descrição não é apenas um caso especial de tais solicitações, mas também um ótimo tópico para
pesquisa . Com isso, você aprenderá: o que é mais lembrado pelas pessoas no cinema, com o qual diferentes gêneros e cinematógrafos de diferentes países estão associados, quais movimentos na trama causam uma impressão especial.