Привет, я Азат Хакимов, аналитик данных команды «ИИ для ИТ Поддержки» в Т1 Иннотех. Мы разрабатываем интеллектуальные системы помощи и роботизации для команд поддержки. В этой статье я расскажу про одну из задач анализа текстов, с которой столкнулась команда в ходе разработки продукта.

Приход LLM в ИТ-мир создал возможности для разработки новых интеллектуальных систем. Одним из самых ярких примеров является RAG (Retrieval-Augmented Generation — генерация, дополненная извлеченным знанием) — довольно хитрый концепт, позволяющий обойти недостатки современных LLM для использования с текстами, не вмещающимися в контекст модели.

Что такое RAG

RAG — это методика, позволяющая научить LLM определённому контексту, поддерживать актуальность знания и отвечать на запросы согласно этому знанию. Концепция RAG проста: так как добавление большого корпуса документов в контекст модели либо невозможно, либо стоит неприемлемых ресурсов, то легче создать и поддерживать базу с документами и добавлять необходимые из них в промпт модели при обработке запросов.

В качестве одного из наиболее популярных применений RAG в ITSM-сфере (IT Service Management) выступает создание систем для помощи службе поддержки. А трендом, использующим интеллектуальные способности LLM (Large Language Model — большая языковая модель), является создание нулевой линии поддержки: системы, позволяющей решить проблему пользователя без привлечения специалиста, но используя накопленные компанией знания. В качестве запроса для LLM здесь выступает обращение пользователя, а в качестве одного из источников знаний — решения по закрытым обращениям. Однако не все решения полезны. Дело в том, что в корпоративной системе решением для закрытого обращения может быть:

  • Отписка — ответ поддержки заявляющий, что обращение должно быть обработано кем-то или чем-то другим, или подано в иной форме, например:

    • «Обращения по тематике «xxx» принимаются только с корпоративного web-ресурса»;

    • «Ваш запрос относится к функциям департамента «ххх», подайте обращение туда»;

    • «По каждой проблеме, программе, системе необходимо выслать отдельное обращение»;

  • Сообщение от поддержки без решения:

    • «Не получен ответ на уточняющий вопрос. Обращение отклонено»;

    • «Вам было организовано удаленное рабочее место. Обращение закрыто»;

    • «Обращение закрыто автоматически»;

    • «Проводятся работы в рамках аварии №XXX»;

  • Отчет о проделанной работе:

    • «Принтер перезагрузили, проверяйте»;

    • «Новые данные внесены, решилась ли ваша проблема?»;

    • «Доступ к ПО предоставлен, перезагрузите компьютер»;

    • «Ошибки исправлены».

Однако, для нулевой линии поддержки важно, чтобы решение описывало способ решения проблемы пользователя. Таким образом, чтобы улучшить качество работы RAG-системы рациональным является фильтрация решений. В этой статье рассмотрим подходы, позволяющие решить данную задачу.

Данные

Изначальный датасет закрытых обращений имел более 2,4 млн записей и не имел разметки на подходящие и неподходящие решения. Обработка такого объёма данных была бы слишком ресурсоёмка. Тем не менее, взять малый сэмпл тоже нельзя, так как в нашем датасете достаточно много категориальных полей и некоторые из них хорошо разделяют множество обращений семантически. В общем, это не сильно мешало бы дальнейшему анализу, однако было бы здорово оставить обращения разных категорий. Мы пошли простым путём: отобрали 100 тысяч записей из соображения того, что взять достаточно малый сэмпл для ручной разметки всё равно не выйдет, а порядка 100 тыс. строк можно успеть проанализировать в пределах спринта.

После предобработки и очистки данных осталось ≈93 тыс. записей. Потеря порядка 7 тыс. записей вызвана тем, что в них поля с текстовыми описаниями обращений и/или решений были пустыми. Именно на этом множестве данных мы оценивали дальнейшие показатели.

Постановка задачи

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

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

Возможно ли вообще решить задачу?

Так как разрабатываемая RAG-система должна находить решение для произвольного обращения пользователя, то для начала необходимо просто понять, а насколько это вообще возможно на имеющихся данных. Вызвано это тем, что связь между обращением и решением в реальном мире, в первую очередь, логическая, в то время как из данных, без использования ресурсоёмких LLM, мы можем извлечь семантическую или лексическую связь.

Возможность решения задачи мы оценивали следующим образом. Решили, что, формально, нам необходимо понять, насколько описание обращения определяет решение. Для такой оценки подходит эвристика: «Если похожие обращения соответствуют похожим решениям, значит обращение определяет решение». Этой эвристике соответствует такой численный показатель как взаимная информация между кластерами описаний обращений и решений (MI — Mutual Information).

Что такое Mutual Information

(более подробно рассматривается в статье)

MI — это показатель характеризующий сколько информации содержится в связях между распределениями.

Взаимная информация тесно связана с энтропией. Энтропия — величина, в некотором роде, обратная вероятности, и характеризует неизвестность, неопределённость случайной величины:

H\left(X\right)=\sum\frac{1}{log\left(p\left(x\right)\right)}

где:

H(X) — энтропия величины X;

p(x) — вероятность того, что случайная величина X примет значение x.

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

MI\left(X,Y\right)=H\left(X\right)+H\left(Y\right)-H\left(X,Y\right)

где:

MI(X, Y) — взаимная информация случайных величин X и Y;

H(X) — энтропия величины X;

H(Y) — энтропия величины Y.

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

Таким образом, независимые величины имеют MI = 0, а абсолютно зависимые (например, x и y в уравнении прямой) имеют MI = H(x) + H(y).

MI отражает любой вид связи, в отличие от корреляции и принимает значения от 0 и до +∞.

Для лучшей интерпретируемости этот показатель мы поделили на энтропию кластеров решений, после чего итоговый показатель отражает, какую долю информации, хранящихся в кластерах решений, разделяют между собой кластеры решений и описаний — этот показатель будем называть нормализованной взаимной информацией (NMI — normalized mutual information).

NMI=\frac{MI\left(solutions,tickets\right)}{H\left(solutions\right)}

где:

MI(solutions, tickets) — взаимная информация между кластерами описаний обращений и кластерами решений;

H(solutions)  — энтропия кластеров решений.

Как рассчитывали NMI:

  1. С помощью эмбеддера, в качестве которого выступала доработанная модель LaBSE‑ru‑turbo, получили эмбединги для описаний обращений и решений.

  2. С помощью UMAP снизили размерность до 50, использовали метрику «cosine», n_neighbours=1024, а параметр min_dist=0.01.

  3. Кластеризовали каждое поле отдельно алгоритмом HDBSCAN, но с одинаковыми параметрами.

  4. Рассчитывали NMI, для которого в роли носителей распределений выступали метки кластеров решений и метки кластеров обращений.

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

  • какого максимального NMI мы можем добиться при кластеризации;

  • существуют ли относительно стабильные зоны высокого NMI.

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

Визуальная оценка NMI для разных кластеризации показывает следующее. По всем данным наблюдается самый высокий NMI у начала координат и есть зона высокого NMI в окрестности точки (60; 60). Если отбросить выбросы (не попавшие в кластеры решения и описания), то зоны высокого NMI сохраняются в тех же местах, но значения выше.

Визуализация NMI - насколько хорошо кластеры описаний обращений и решений определяют друг друга
Визуализация NMI — насколько хорошо кластеры описаний обращений и решений определяют друг друга

Исходя из визуальной оценки мы считаем, что на данных можно уловить связь между описанием и соответствующим ему решением.

Разметка данных для оценки методов классификации

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

Делали это следующим образом:

1) Решения разделили на 4 непересекающихся категории:

  • короткие решения — до 6 слов;

  • решения длиной (в словах) не более 25-го перцентиля;

  • решения длиной (в словах) не более 75-го перцентиля;

  • решения длиной (в словах) более 75-го перцентиля.

Распределение длин текстов решений в словах. Qxx - квантиль распределения, число под ним - значение квантиля
Распределение длин текстов решений в словах. Qxx — квантиль распределения, число под ним — значение квантиля
  1. Для каждой категории собрали топ-30 наиболее частых решений.

  2. Рассчитали попарные расстояния между решениями в датасете.

  3. Из каждого топ-30 вручную выбирали неподходящие решения и из датасета удаляли все решения, в радиусе 1 перцентиля от каждого выбранного решения.

  4. Пункты 2 и 3 повторяли, пока топы не перестали содержать неподходящие решения.

Подходящих решений оказалось ≈31,6 %.

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

В итоге осталось ≈68 тыс. строк. Из них 56,7 % решений признаны неподходящими, 43,3 % — подходящими. На этом датасете были осуществлены все дальнейшие расчеты, если не указано иное.

Эвристики для классификации

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

  • TPS (True Positive Rate) — доля истинно-положительных классов от положительных классов, распознанных эвристикой;

  • FPS (False Positive Rate) — доля ложно-положительных классов от положительных классов, распознанных эвристикой;

  • Accuracy — точность распознавания классов, то есть доля верно распознанных эвристикой классов от всех записей.

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

Разработанные эвристики

Эвристика на основе схожести по мере Жаккара

Гипотеза: если решение содержит много слов, которые содержало и обращение, то такое решение подходящее.

  • Достоинства:

    • быстро рассчитывается, независимо от объема датасета;

    • легко интерпретируется.

  • Недостатки:

    • требует лемматизации;

    • не учитывает семантические связи.

Под этой эвристикой лежит следующая идея: если текст решения сильно совпадает с текстом запроса, то, скорее всего, это решение релевантное запросу. Соответственно, оно решает проблему пользователя.

Для этой эвристики придумали два варианта метрики:

  • на основе количества слов;

  • на основе TF-IDF.

Что показывает мера Жаккара

Мера Жаккара показывает, насколько два множества имеют что-то общее между собой:

\frac{\left|A\bigcap B\right|}{\left|A\bigcup B\right|}

Мера Жаккара — отношение общих элементов двух множеств ко всем уникальным элементам двух множеств

Метрика на основе количества слов подсчитывала отношение совпавших лемм в решении и описании к количеству уникальных лемм обоих текстов.

Метрика на основе TF-IDF подсчитывала отношение суммы TF-IDF для совпавших лемм к сумме TF-IDF уникальных лемм обоих текстов.

Как строили график:

  1. Рассчитывали значение метрики для каждого решения.

  2. Создавали метки того, подходит решение или нет согласно правилу: если значение метрики для решения < {значение квантиля метрики (ось X на диаграммах)}, то решение считается неподходящим.

  3. Для 100 значений квантилей метрики замеряли три оценивающих показателя. Результаты замеров наносили на диаграмму.

Диаграмма для расчёта на основе частот слов:

Выбрали оптимальное значение в 0,06-квантиль

На диаграмме мы видим, что:

  • При росте порогового значения Accuracy достаточно быстро выходит на максимальное значение в 56,7 %, что равно доле неподходящих решений, то есть при высоких порогах эвристика скатывается к банальному правилу «Давайте всё признаем неподходящим».

  • До квантиля 0,06 значение FPR, в среднем, снижается, а значение Accuracy растёт. То есть прирост качества происходит не за счёт ложно-положительных решений.

Результаты классификации этой эвристикой нельзя назвать хорошими, но, возможно, эвристика поможет при агрегации классификаторов.

Диаграмма для расчёта на основе TF-IDF:

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

Этот вариант эвристики даёт немного более качественную классификацию: TPR падает медленнее, а FPR также растёт медленнее. Тем не менее классификатор остаётся слабым с большой долей ложно-положительных классов.

Эвристика на основе регулярных выражений

Гипотеза: если решение содержит регулярное выражение, полученное из текстов неподходящих решений, то и это решение неподходящее.

Достоинства:

  • теоретически, позволяет точно находить конструкции только неподходящих решений;

  • легка для понимания.

Недостатки:

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

  • С ростом кардинальности данных растёт и требуемое количество регулярных выражений.

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

  • Если регулярных выражений очень много, то требуются особые подходы для обеспечения быстродействия.

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

Для эвристики на основе регулярных выражений использовали такой алгоритм:

  1. Для каждого решения получили n-граммы.

  2. Для каждой n-граммы рассчитали долю встречаемости среди подходящих и неподходящих решений.

  3. Для каждой n-граммы рассчитали показатели частоты встречаемости и TF-IDF.

  4. Для n-грамм, которые:

    • встречаются не реже, чем в 80 % случаев только в неподходящих решениях;

    • частота встречаемости которых не меньше 75 перцентиля;

    • (во втором варианте расчёта) метрика TF-IDF которых не меньше 75 перцентиля;

    создали регулярные выражения, позволяющие находить эти n-граммы в тексте.

    Вид регулярного выражения (Python): {r"\b" + r'\b.{0,6}\s*\b'.join(txt_list) + r"\b"}, где txt_list — это список n-грамм.

  5. Оба варианта регулярок рассчитывали на 1-, 2-, 3-, 4-граммах.

  6. Оценивали оптимальный размер n-граммы.

n-граммы строили и оценивали на лемматизированном тексте.

Отбор из п.4 был необходим, так как количество регулярных выражений иначе, получалось бы чрезмерно большим. Даже при указанном отборе количество регулярных выражений, с которым сравнивали каждое решение, равнялось ≈200 тыс.

Как строили график:

  1. Для каждого варианта отбора n-грамм (частота или TF-IDF) и для каждого варианта длины n-граммы решения размечали по принципу: если текст решения соответствует регулярному выражению, то оно неподходящее.

  2. Рассчитывали три оценивающих показателя.

Диаграмма для регулярных выражений, построенных на основе n-грамм, отобранных на основе частот встречаемости:

Диаграмма для регулярных выражений, построенных на основе n-грамм, отобранных с помощью TF-IDF:

Видно, что эвристика даёт много ложно-положительных срабатываний и низкий accuracy. Тем не менее, есть точка, где одновременно TPR максимален и FPR минимален — регулярные выражения, построенные на 3-граммах, которые отбирали на основе встречаемости слов. Эту комбинацию и выбрали оптимальной.

Эвристика на основе кластеризации решений и описаний вместе

Гипотеза: если решение в одном кластере с описанием, то оно подходящее.

Достоинства:

  • проста для понимания;

  • учитывает семантическую связь;

  • менее чувствительна к шумам, так как оценка строится на основе кластеров, а не отдельных значений.

Недостатки:

  • требует кластеризации: выбор метода, подбор параметров;

  • вычисление ресурсоёмкое на больших датасетах.

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

Как строили график:

  1. Для описаний и решений создавали 10D-эмбединги с помощью UMAP (n_neighbours=1024, min_dist=0.01, metric=“cosine”).

  2. Эти эмбединги кластеризовали с помощью HDBSCAN. Всего 200 вариантов кластеризации.

  3. Для каждого варианта кластеризации решения размечали согласно правилу: если решение и описание обращения в одном кластере, значит решение подходящее.

  4. Рассчитывали три оценивающих показателя.

Результат на диаграммах:

  • оранжевая поверхность — FPR;

  • зелёная поверхность — TPR;

  • серая поверхность — Accuracy.

Эта эвристика имеет зоны, где Accuracy выше, чем доля неподходящих решений. TPR слабее реагирует на изменение параметров кластеризации, чем FPR и Accuracy (исключая зону с одновременно наибольшими значениями параметров кластеризации). Выбор конкретной точки на основе визуальной оценки на трёхмерной диаграмме — задача сложная, здесь было много претендентов. Тем не менее мы выбрали параметры min samples = 5 и min cluster size = 60.

Так как TPR один из самых высоких, FPR ниже среднего, а Accuracy выше среднего. При этом размеры кластеров обещают быть больше, чем при значениях в начале координат, что даёт большую устойчивость к шумам.

Эвристика на основе косинусного расстояния между решениями и описаниями

Гипотеза: решения, релевантные обращению, находятся в пределах определённого косинусного расстояния (угла) от описания обращения.

Достоинства:

  • проста для понимания;

  • учитывает семантическую связь;

  • требует расчёта только парных расстояний решение-описание в рамках одного обращения.

Недостатки:

  • Слишком наивная, так как подразумевает, что есть некий общий порог для всех обращений.

Пытаясь оценить решения с точки зрения косинусного расстояния до соответствующего описания обращения, мы преследовали ту же идею, что и в предыдущей эвристике, но более упрощенно, предполагая, что «кластер», в котором стоит искать решение, имеет форму многомерного конуса вокруг вектора описания (некий аналог кластера по K-means, где метрикой являются косинусные расстояния).

Как строили график:

  1. Для этой эвристики рассчитали все парные расстояния от решений до описаний.

  2. Итеративно проверили 100 пороговых значений. Порогами являлись квантили расстояний от 0 до 1 с равным шагом.

  3. Для каждого порога классификация следовала правилу: «Если расстояние между описанием и решением больше, чем {значение, соответствующее квантилю}, то решение считается неподходящим».

TPR почти линейно и пропорционально прирастает вместе с порогом, FPR выходит на линейный прирост после квантиля 0,2, а Accuracy имеет значения в пределах от доли отрицательных классов до доли положительных.

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

Эвристика на основе оценки расстояния от кластеров решений до кластеров описаний

Гипотеза: если кластер решения сильно и равномерно удалён от кластеров описаний, при этом является компактным облаком, то такой кластер содержит только неподходящие решения.

Достоинства:

  • учитывает семантическую связь;

  • менее чувствительна к шумам, оценивая кластеры, а не отдельные решения.

Недостатки:

  • Если эвристику просто объяснить, то сложнее определить, какие метрики должны оценивать равномерность удаления от описаний и компактность кластеров решений.

  • Требует расчёта всех расстояний от решений до описаний обращений в рамках каждого кластера решений. С увеличением размеров кластеров решений, быстро растет и ресурсоёмкость расчётов.

  • Требует кластеризации: выбор метода, подбор параметров.

  • Вычисление ресурсоёмко на больших датасетах.

Мы создали две метрики для каждого кластера решений:

  1. Outer score — медиана расстояний от всех решений в кластере до всех описаний, поделённая на стандартное отклонение тех же расстояний. Показывает насколько стабильно далеко текущий кластер от описаний.


    \mathrm{Outer\ score}=\frac{\mathrm{median}\left(\mathrm{\{}d\left(x,y\right)|x\in C,y\in D\mathrm{\}} \right)}{\sigma\left(\mathrm{\{}d\left(x,y\right)|x\in C,y\in D\mathrm{\}} \right)}

    где:

    • C — множество решений в кластере;

    • D — множество описаний обращений;

    • d(x,y) — расстояние между решением x и описанием y;

    • median — медиана;

    • σ — стандартное отклонение.

  2. Inner score — медиана всех расстояний внутри кластера решений. Показывает, насколько кластер решений плотный. Так как для эвристики чем плотнее кластер, тем он более «неподходящий», то значение помножено на -1:

    Inner\ score=\mathrm{-median}\left(\mathrm{\{}d\left(x,y\right)|x,y\in C,x\neq y\mathrm{\}} \right)

Таким образом, есть две метрики, подчиняющиеся правилу: «Чем больше значение, тем более кластер решений неподходящий».

Как строили график:

  1. Использовали кластеры решений и описаний, рассчитанные для оценки NMI. Для кластеров решений рассчитывали inner score и outer score.

  2. Для разметки решений перебирали комбинации метрик: по 100 пороговых значений на каждую метрику с шагом в квантиль 0,01 (всего 10000 комбинаций).

  3. Каждое решение размечали согласно правилу: если значение метрик для кластера решений больше, чем {значение текущей комбинация порогов}, то решение считается неподходящим.

Силу классификатора здесь хорошо иллюстрирует ранний выход FPК на плато — эвристика достаточно быстро пометила почти все негативные классы как положительные — классификатор выглядит слабым.

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

  • Inner score = 0,36;

  • Outer score= 0,01.

В этой точке высокий Accuracy, FPR уже на плато, а производная TPR относительно outer score, визуально, близка к максимальной.

Также мы использовали простые методы агрегации результатов эвристик:

  1. Мода классов эвристик.

  2. Агрегирование согласием всех эвристик: если все эвристики считают решение подходящим, то такое решение подходящее.

  3. Агрегирование «Все против одного»: для признания подходящим хватает n-1 голоса эвристик, где n — количество эвристик.

  4. Агрегирование «Все против двух»: для признания подходящим хватает n-2 голоса эвристик, где n — количество эвристик.

Классификация с помощью LLM

В качестве дополнительных средств классификации решений мы также решили попробовать классифицировать решения с помощью LLM. Здесь сэмпл сократили до 1000 записей, а в качестве модели выступала «Vikhr-Nemo-12B-Instruct-R-21-09-24».

Использовали два подхода:

  1. Few-shot prompting: системный промпт содержал инструкции и восемь примеров разметки. Далее подавали модели на вход системный и пользовательский промпты. В пользовательском промпте содержалось решение, а системный промпт указывал, что необходимо его классифицировать. Опробовали два немного различающихся системных промта:

    • Первый назначал роль классификатора и просил определить, можно ли решение использовать сразу как инструкцию.

    • Второй дополнительно уточнял, что классификация нужна для наполнения базы решений, к которой будут обращаться сотрудники.

  2. Retriever + LLM: вариант RAG-системы.

    1) В векторную БД загружали тексты решений

    2) С помощью уже существующего ретривера, используемого в другом проекте, подобрали список из 10 наиболее релевантных решений.

    3) В промпт для LLM отправляли текст обращения и соответствующие варианты релевантных решений. Промпт просил LLM выбрать наиболее подходящее решение для описания обращения. Такое решение отмечали как подходящее.

Выводы об эвристиках

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

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

Act - actual, то есть фактическое значение, pred - predicted, то есть предсказанное значение
Act - actual, то есть фактическое значение, pred - predicted, то есть предсказанное значение
  1. Эвристика на основе схожести по мере Жаккара.

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

    Если заменить подсчёт слов на подсчёт TF‑IDF, то точность увеличивается, но классификатор получается чрезмерно строгим, выдавая много ложноотрицательных классов и заметно меньше истинно‑положительных. F1-метрика хуже. А распределение меток классов в матрице ошибок говорит, что эвристика напоминает случайное разбиение на классы в соотношении 3 к 7.

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

  2. Эвристика на основе кластеризации решений и описаний вместе.

    Она выглядит наиболее многообещающей:

    • самая низкая доля ложно‑положительных предсказаний;

    • наибольшая точность;

    • f1-score входит в тройку лучших;

    • отношение истинно‑положительных к ложно‑положительным самое высокое.

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

  3. Эвристика на основе косинусного расстояния между решениями и описаниями.

    Эта эвристика показала себя слабо ещё на этапе потбора параметров. Поэтому она выступает худшим классификатором: предсказания недалеко ушли от простого случайного разбиения на подходящие и неподходящие решения в соотношении 1 к 9.

    Достоинства: доля истинно‑положительных больше, чем доля ложно‑положительных. Возможно, это внесло бы вклад в агрегированные эвристики.

    В целом, эвристика максимально слабая, лучше воздержаться от её использования

  4. Эвристика на основе регулярных выражений.

    Эвристика показала очень плохой результат: почти 95 % ложно‑положительных классов, при этом почти 66 % — ложноотрицательных, что вылилось в самый большой Error Rate среди всех эвристик. Но этот результат объясняется природой эвристики:

    • чем более уникальны тексты в корпусе, тем больше регулярных выражений требуется;

    • чем больше лексически похожи подходящие и неподходящие решения, тем больше должен быть размер n‑грамм для составления регулярных выражений.

    Потенциал у эвристики есть, но она явно не подходит для текстов с высокой кардинальностью и для больших корпусов.

  5. Эвристика на основе оценки расстояния от кластеров решений до кластеров описаний.

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

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

  6. Агрегирование эвристик.

    Агрегация не применялась к LLM‑классификации. Ожидалось что агрегирование результатов эвристик даст более хорошие результаты, однако, лучше не стало:

    • Усреднение оценок эвристик привело к тому, что разделение стало похоже на случайное, с соотношением положительных к отрицательным равным 2 к 8, выдавая примерно равное количество как ложно‑положительных, так и истинно‑положительных.

    • Агрегации по правилам «все верные», «все кроме одного» и «все кроме двух» являются крайне строгими, иллюстрируя несогласованность оценок эвристик друг от друга, из‑за чего одно решение классифицируется по‑разному, но чаще как неподходящее.

  7. Классификация на основе LLM.

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

    Также было интересно посмотреть на результаты RAG + LLM. Ожидалось, что именно этот вариант выдаст наилучшую классификацию. Однако результаты этого подхода ничем не выделялись от результатов агрегации простых эвристик.

  8. Общие выводы про эвристики.

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

Выводы

Для решения не самой простой задачи можно придумать несколько достаточно простых подходов. Некоторые мы рассмотрели в статье. Конкретно для нашего случая хорошей простой эвристики найти не удалось. Из чего не следует что для ваших задач эти подходы могут не подойти.

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

  • соответствие текста эталонному варианту;

  • поиск плагиата;

  • соответствие вакансии резюме.

Более того, рассмотренные подходы можно улучшить, используя более интересные техники агрегации (последовательное использование эвристик, использовать разные веса для эвристик и т. п.). Например, в процессе работы, ради интереса, мы рассчитали логистическую регрессию на метках эвристик, и удалось добиться f1-score, превышающего 0,7 — то есть потенциал в агрегации есть.

Можно рассмотреть дополнительные более сложные эвристики, например на основе тематического моделирования или детекции аномалий.

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

Мы, в свою очередь, сосредоточились на доработке ретривера под задачу нулевой линии поддержки.

Буду рад ответить на вопросы и замечания в комментариях.

Комментарии (0)