НЛП SBert (Берт) для сравнения ответов СТС
Я искал хороший способ автоматизировать оценку коротких ответов. По сути, учитель дает тест с такими вопросами, как:
Вопрос: почему Колумб отплыл на запад, чтобы найти Азию?
Ответ: чтобы он смог найти новый торговый путь в Азию через океан. Три цели испанцев в Северной и Южной Америке заключались в желании разбогатеть, заявить права на как можно большую территорию и как можно больше колонизировать.
Таким образом, у нас есть правильный ответ, и мы хотели бы сравнить его с ответом учащихся и выставить оценку, основанную на сходстве. Я знаю, что это ненадежная замена человеческому оцениванию, но для примера.
Я наткнулся на этот документ и кодовую базу: https://arxiv.org/pdf/1908.10084.pdf
https://github.com/UKPLab/sentence-transformers
Это кажется идеальным методом для решения этой проблемы, но большинство примеров основаны на оценке / ранжировании семантического поиска. Я сомневаюсь, что я на правильном пути, учитывая, что я просто сравниваю два ответа, а не кластер. Кто-нибудь с большим опытом, возможно, может дать совет?
Ответы
Я использовал сиамский берт, и могу сказать, что он неплохо справляется. Однако проблема в том, что данные, которые были точно настроены поверх Берта, не обязательно полностью представляют то же семантическое расстояние, что и в случае ответов между истинным и ответом ученика. Например, если есть вопрос о технике, где небольшое изменение слова может означать совершенно другое; SBert все равно нашел бы их очень похожими, потому что они связаны с темой. Если только он не настроен до мелочей.
Более того, вы не сможете интерпретировать сходство. Если студент спросит вас, почему ответ моего сверстника лучше, вы не сможете объяснить.
Мое мнение: я считаю, что вы могли бы использовать этот инструмент как способ сократить количество абсолютно непоследовательных ответов, но в какой-то момент потребуется человеческая оценка. И, возможно, использовать интерпретируемые метрики, такие как ROUGE или BLEU. Я также знаю, что эта тема очень популярна в НЛП, я не удивлюсь, если для этого есть или будет хороший готовый инструмент, но я не знаю ни одного в настоящее время.
@b_the_builder Хорошие находки! Первое кажется мне увеличением дистанции Word Mower за счет использования сходства между каждым словом. Полагаю, еще может не хватать адаптации домена. В то время как вторая ссылка, которую вы предоставили, выполняет предварительную подготовку по этой конкретной причине. В общем, какой бы метод вы ни использовали, я считаю, что вам нужно будет выбрать несколько репрезентативных предложений с жестким соответствием и посмотреть, как они работают на них, после предварительной тренировки на вашем корпусе. Если хочешь быть уверенным. Для вдохновения, вы можете посмотреть в здесь семантических задачах подобия между предложениями.
Я попробовал GPT-2 с вашей подсказкой, но мне это не удалось:
Также я думаю, что он не будет рассматривать и отрицания. Сначала вы хотите установить порог правильных или частично правильных и неправильных ответов. Но это сложная задача, потому что она плохо учитывает отрицательные утверждения. например: если вы дадите два утверждения, например, Тони Старк - железный человек, а Тони Старк - не железный человек, что является чисто противоречивым утверждением, косинусное сходство скажет, что эти утверждения в чем-то похожи (даже с STS robera large, эталонной моделью), что показывает это не может использоваться для оценки ответов. Я не знаю, есть ли другие способы решить эту проблему, но это из моего опыта.