Если вам не хватает информации, указанной на данной странице, советуем вам ознакомиться с соответствующей секцией на нашей wiki-странице.
После того, как вы разметили значительное количество данных, качество вашего поиска должно было улучшиться, и в результатах должны чаще появляться релевантные фразы. Но со временем, есть смысл взять большое количество результатов поиска и разметить для необходимой задачи. Это эффективно, потому что обученный на ваших данных поиск сможет доставать данные, которые часто нужны именно вам и вы можете получать больше необходимой разметки, тратя на это меньшее количество денег.
Здесь собран небольшой интерфейс, который позволит вам запустить процесс разметки и отправить результаты в необходимое вам место на YT.
В случае бинарной классификации, контроль честности и эффективности пользователей Толоки будет осуществлен с помощью уже размеченных вами данных (только положительные и отрицательные), поэтому важно отнестись к их разметке серьезно. Размеченные данные на Толоке называются honeypots и используются для контроля пользователей, чтобы качество разметки было на желаемом уровне.
Весь процесс разметки состоит из следующих верхнеуровневых этапов:
Инструмент, который позволяет быстро искать в больших количествах коротких текстов и размечать полученные результаты. Базовое использование описано в официальной документации сценариев.
Наиболее полное описание того, что из себя представляет этот инструмент, можно почитать на нашей wiki-странице.
Наиболее эффективный способ поиска логов отличается от случая к случаю, но мы можем попытаться описать базовую стратегию того, как делать это довольно эффективно:
По нашему опыту, в среднем лучше всего работают индексы "DSSM + KNN with Logistic Regression" и "DSSM + KNN with Logistic Regression + CatBoost". Оба алгоритма хорошо учитывают как позитивные, так и негативные запросы. Однако, если необходимо иметь наиболее разнообразную выдачу, то может помочь индекс с надписью "[Active Learning]". Если же вам важно иметь поиск, который находит определенные слова, не обращая внимания на семантику, то используйте "BM25".
Так как наши алгоритмы были сделаны так, чтобы выдавать наиболее релевантную выдачу, то часто может быть ситуация, когда выдача слишком релевантна и представлять одну и ту же фразу, просто сказанную чуть-чуть по-другому. Чтобы решить эту проблему, мы добавили индексы с ["Active Learning"], которые позволяют находить менее уверенные примеры, что значительно повышает разнообразие. После использования этих индексов, можно разнообразить свою выдачу и вернуться к другим индексам, чтобы находить самые уверенные примеры, которые теперь будут более разнообразны.
DSSM - библиотека для нейронных сетей, написанная в Яндексе. Мы используем предобученную нейронную сеть на огромном количестве текстов, чтобы превратить запросы в векторные представления в многомерном пространстве. Обучение осуществлялось таким образом, чтобы векторы, соответствующие текстам с похожим смыслом оказались рядом друг с другом. Таким образом, мы ищем самые ближайшие векторы в другом пространстве, которые соответствуют фразам из нашего индекса.
Мы используем алгоритм логистической регрессии, на фразах, которые содержатся в запросе. Логистическая регрессия - алгоритм бинарной классификации. На каждый ваш запрос мы учим новый классификатор, который использует позитивные и негативные примеры в качестве обучающих данных. После мы используем этот классификатор, чтобы найти наиболее релевантные фразы из нашего индекса, то есть те, которые классификатор наиболее уверенно классифицирует как позитивные.
Когда выдача становится слишком однообразной, бывает полезно размечать наименее уверенные примеры, чтобы улучшить качество классификатора. Когда выделается опция "Active Learning" мы возвращаем не самые уверенные позитивные фразы, а те фразы, в которых поиск менее уверен. Как правило, в такой выдаче много и позитивных, и негативных примеров, размечая которые, вы добавляете большое количество полезной информации, чтобы классификатор принимал более верные решения. Помимо этого, с "Active Learning" сильно улучшается разнообразность выдачи, а это часто необходимо для поиска релевантных фраз.
Мы реализовали вариацию алгоритма текстового поиска BM25, который ищет фразы по лемматизированным словам из ваших запросов. Алгоритм учитывает статистики слов в индексе и ваших запросах, и может быть полезен в ряде случаев, когда необходимо найти запросы с определенными словами в разных формах.
CatBoost это метод градиентного бустинга, разработанный внутри Яндекса. Мы его используем, чтобы строить классификатор хороших и плохих фраз в вашем поиске и использовать этот классификатор как ранжировщик фраз индекса. Если CatBoost указан вместе с другими индексами, как правило это означает, что он участвует во второй фазе поиска, где первые гипотезы поиска были сделаны одним индексом, а CatBoost ранжирует эти гипотезы для улучшения качества. Причина, по которой CatBoost используется именно как ранжировщик как правило в том, что его невозможно достаточно быстро применить ко всему индексу, чтобы выдать ранжированную выдачу, поэтому мы оперируем на подвыборке кандидатов, созданной другим индексом.
Этот индекс является композитным, он совмещает два алгоритма одновременно. На данный момент реализация возвращает две выдачи от двух индексов независимо в режиме round-robin, при этом мы фильтруем дубликаты, чтобы не возвращать одинаковые фразы.
Данные, которые вы набрали в качестве запросов или данные, которые у вас в выдаче, можно отправить на Толоку для разметки на несколько сценариев (бинарная классификация, тэггинг, классификация на интенты). Подробнее об этом можно почитать в закладке Data Markup.
Если вам встретятся какие-либо ошибки, или вы просто считаете нужным высказаться, обращайтесь в чат поддержки NLU.