Вопрос или проблема
Для моей задачи мне нужна модель, которая может различать должности, содержащие одни и те же слова. Модель BERT “msmarco-MiniLM-L-12-v3” демонстрирует высокую косинусную схожесть для позиций: “Data customer” и “Data provider”. Значение этих двух позиций очень различно, и мне нужно, чтобы моя модель показывала низкую косинусную схожесть для этих двух позиций.
Однако в этом случае косинусная схожесть должна быть высокой: “Data customer” и “Data consumer”.
Какую модель мне следует использовать? Должен ли я обучить классификатор вместо модели NLU? Почему ChatGPT понимает разницу между этими текстами, а модели на основе BERT показывают высокую косинусную схожесть?
Используя хостинг для вывода здесь: https://huggingface.co/sentence-transformers/msmarco-MiniLM-L-12-v3, я получаю схожесть предложений 0.58 между data customer и data provider, и 0.86 между data customer и data consumer, что мне кажется вполне разумным.
Если вы готовы обучить модель с нуля, вы могли бы рассмотреть отрицательное выборочное обучение https://www.baeldung.com/cs/nlps-word2vec-negative-sampling.
Использование алгоритма классификатора (SVM или k-ближайших соседей) для ограниченного числа должностей, вероятно, будет разумной отправной точкой, и вы можете использовать свои эмбеддинги как отправную точку. Надеюсь, это поможет.
Ответ или решение
Для решения задачи различения названий должностей, содержащих одинаковые слова, важно выбрать подходящую модель, которая сможет учесть контекст и значения отдельных слов в фразах. Обсуждаемая вами проблема заключается в том, что модель BERT, такая как "msmarco-MiniLM-L-12-v3", показывает высокую косинусную схожесть между должностями "Data customer" и "Data provider", хотя их значения значительно различаются. В то же время модель выдает меньшую схожесть для "Data customer" и "Data consumer", что является ожидаемым результатом.
Модель и подходы
-
Переобучение BERT:
Вы можете рассмотреть возможность дообучения BERT на специализированном наборе данных, представленного должностями. Чтобы улучшить результаты, стоит использовать технику негативного выбора (negative sampling). Это позволит модели лучше различать контексты, путем введения пар, которые должны показать низкую схожесть. -
Классификатор:
Если ваша задача насчитывает конечное количество должностей, применение алгоритмов классификации, таких как SVM (методы опорных векторов) или k-ближайших соседей, может быть разумным подходом. Вы можете использовать векторы-эмбеддинги, полученные от BERT, в качестве признаков для классификатора. Это даст возможность четче разделять различные должности, учитывая контекст. -
Другие модели NLU:
Обратите внимание на модели, специально обученные для задач различия значений, такие как RoBERTa или другие трансформеры, обученные на более широких контекстах. Возможно, они смогут более адекватно отражать смысл фраз.
Понимание контекста
Что касается вашего вопроса о том, почему ChatGPT может различать текстовые фразы, а модели на основе BERT показывают высокую косинусную схожесть, это связано с тем, что ChatGPT использует подход, основанный на больших языковых моделях, которые обучены на более разнообразных наборах данных и способны понимать контекст на более глубоком уровне. Это позволяет эффективно различать различные значения слов в зависимости от их окружения.
Заключение
Ваша задача требует глубокого понимания контекста названий должностей. В зависимости от ваших ресурсов и временных рамок, вы можете выбрать дообучение существующей модели, использование классификаторов на основе эмбеддингов или применение других методов NLU. Рассматривая разные подходы, вы сможете достичь более высокой точности в различении близких по написанию, но различных по своему значению названий.