Продолжая разговор об изучении ответов в чатах. Сейчас я делаю бенчмарк для замера моделей. Несмотря на то, что ответы можно вытянуть из телеги напрямую, я решил привлечь людей, чтобы удостовериться возможно ли вообще пару классифицировать как ответ. Потому что иногда, например, пара "сообщение-ответ" могут стоять в середине разговора и без контекста невозможно понять, что между этими текстами есть связь.
Подумалось, что эта задача достаточно простая и решил дать Толоке еще один шанс. Надергал по нескольку десятков пар из разных чатов разных доменов и отправил на разметку, при этом не скупился на перекрытие.
В целом, результатом я остался доволен. Из 490 примеров 350 ответов получили метку "да". Для агрегации использовалась модель Девида-Скини, которую Толока предлагает из коробки. В добавок к агрегации модель еще дает оценку уверенности. Распределение смотрите постом ниже. Как видите, оценки довольно уверенные. Если посмотреть количество пар, уверенность которых ниже 80 процентов, что я принял, как неуверенность, то там по 25 примеров на "да" и "нет".
Интересный вопрос, почему же люди ставили "нет", если эти пары сформированы от действий пользователей. Вот причины, которые я выделил:
1. Иностранный язык.
2. Недопонимание домена.
3. Частный случай второго, не знание мемов. Из чата по игре Terraria "Приклеить скотчем большую петарду к монитору." - "У меня так друг умер 🪦". Данная пара вполне себе валидный ответ.
4. Малоинформативные сообщения.
5. Просто явные ошибки тоже встречаются.
Еще что я хотел сказать про Толоку. К сожалению, Толока не гарантирует сохранность порядка исходных данных, а также не сохраняет поля, которые не используются непосредственно в задании. Это накладывает сложности при проведении операции с исходным датасетом, чтобы, например, случайно не включить размеченные примеры повторно. Чтобы обойти это, создайте дополнительное поле с id и включите его в интерфейс. Его даже можно не отображать, достаточно чтобы оно значилось в интерфейсе Толоки как INPUT.
Подумалось, что эта задача достаточно простая и решил дать Толоке еще один шанс. Надергал по нескольку десятков пар из разных чатов разных доменов и отправил на разметку, при этом не скупился на перекрытие.
В целом, результатом я остался доволен. Из 490 примеров 350 ответов получили метку "да". Для агрегации использовалась модель Девида-Скини, которую Толока предлагает из коробки. В добавок к агрегации модель еще дает оценку уверенности. Распределение смотрите постом ниже. Как видите, оценки довольно уверенные. Если посмотреть количество пар, уверенность которых ниже 80 процентов, что я принял, как неуверенность, то там по 25 примеров на "да" и "нет".
Интересный вопрос, почему же люди ставили "нет", если эти пары сформированы от действий пользователей. Вот причины, которые я выделил:
1. Иностранный язык.
2. Недопонимание домена.
3. Частный случай второго, не знание мемов. Из чата по игре Terraria "Приклеить скотчем большую петарду к монитору." - "У меня так друг умер 🪦". Данная пара вполне себе валидный ответ.
4. Малоинформативные сообщения.
5. Просто явные ошибки тоже встречаются.
Еще что я хотел сказать про Толоку. К сожалению, Толока не гарантирует сохранность порядка исходных данных, а также не сохраняет поля, которые не используются непосредственно в задании. Это накладывает сложности при проведении операции с исходным датасетом, чтобы, например, случайно не включить размеченные примеры повторно. Чтобы обойти это, создайте дополнительное поле с id и включите его в интерфейс. Его даже можно не отображать, достаточно чтобы оно значилось в интерфейсе Толоки как INPUT.
Semantic Representations of Mathematical Expressions in a Continuous Vector Space
# О чем
В статье авторы предлагают способ кодирования математических выражений в векторное пространство при помощи seq2seq модели и показывают интересные свойства.
# Метод
Основная идея авторов заключается в представлении формул как последовательности символов с помощью польской нотации и дальнейшим обучением старой доброй seq2seq на GRU+Attention на парах эквивалентных формул - тех, что имеют одинаковый смысл, но пишутся по разному типа $(a+b)^2 = a^2 + b^2 + 2ab$. Кроме этой схемы, предлагается задача простого восстановления формулы.
В качестве исходников, авторы использовали открытый датасет формул из другой статьи, а для работы с формулами - их конвертацией, их преобразованием в эквивалентные - использовали пакет PySym.
# Результаты
Авторы обучили две подели: одну на эквивалентность, другую на автокодирование.
Сперва авторы проверили насколько точно модели могут генерить те же самые/эквивалентные формулы. Проверялось это по условию $f_{input} - f_{generatad}=0$ с помощью того же PySim. В результате, модель-автоэнкодер давала точность в единицу при beam search взятым 10, что говорит о том, что модель полностью выучилась генерить формулы. Модель-эквивалент показала хуже результат: при bs=10 точность 0.77, при bs=50 - 0.866.
Если посмотреть PCA, то у модели-эквивалента формулы хорошо группируются на полиномиальные, гиперболические, тригонометрические и т.д.
Если пробовать искать ближайших соседей для формул, то модель-эквивалент дает значительно лучшие результаты. (Пост ниже)
Кроме того, модель-эквивалент показывает отличные свойства алгебры эмбеддингов. Если взять формулу $emb(x) - emb(y_1) - emb(y_2)$, то результаты будут следующие
(Пост ниже)
Авторы также отмечают, что качество модели начинает серьезно хромать при увеличении длины последовательности, что, в общем-то, не новость.
Код: https://github.com/MLPgroup/expemb (но он пустой. Позор)
# О чем
В статье авторы предлагают способ кодирования математических выражений в векторное пространство при помощи seq2seq модели и показывают интересные свойства.
# Метод
Основная идея авторов заключается в представлении формул как последовательности символов с помощью польской нотации и дальнейшим обучением старой доброй seq2seq на GRU+Attention на парах эквивалентных формул - тех, что имеют одинаковый смысл, но пишутся по разному типа $(a+b)^2 = a^2 + b^2 + 2ab$. Кроме этой схемы, предлагается задача простого восстановления формулы.
В качестве исходников, авторы использовали открытый датасет формул из другой статьи, а для работы с формулами - их конвертацией, их преобразованием в эквивалентные - использовали пакет PySym.
# Результаты
Авторы обучили две подели: одну на эквивалентность, другую на автокодирование.
Сперва авторы проверили насколько точно модели могут генерить те же самые/эквивалентные формулы. Проверялось это по условию $f_{input} - f_{generatad}=0$ с помощью того же PySim. В результате, модель-автоэнкодер давала точность в единицу при beam search взятым 10, что говорит о том, что модель полностью выучилась генерить формулы. Модель-эквивалент показала хуже результат: при bs=10 точность 0.77, при bs=50 - 0.866.
Если посмотреть PCA, то у модели-эквивалента формулы хорошо группируются на полиномиальные, гиперболические, тригонометрические и т.д.
Если пробовать искать ближайших соседей для формул, то модель-эквивалент дает значительно лучшие результаты. (Пост ниже)
Кроме того, модель-эквивалент показывает отличные свойства алгебры эмбеддингов. Если взять формулу $emb(x) - emb(y_1) - emb(y_2)$, то результаты будут следующие
(Пост ниже)
Авторы также отмечают, что качество модели начинает серьезно хромать при увеличении длины последовательности, что, в общем-то, не новость.
Код: https://github.com/MLPgroup/expemb (но он пустой. Позор)
У меня самого есть идея набрать разных текстов, богатых на формулы, пропустить их через какой-нибудь word2vec. Было б же прикольно ввести "формула Байеса", а получить формулу в итоге. Или наоборот ввести формулу и найти тексты, которые были бы релевантны этой формуле. И вот здорово, что я узнал про такую вещь, как PySym и польскую нотацию.
Ну и еще вам про Толоку расскажу. Будьте внимательны при встраивании в ваши обычные задания проверочные. Точнее, при настройке правил, они иногда очень неочевидны. Вот я слишком поверил в себя и не стал проверять на маленькой выборке. В итоге потерял 20 баксов.
The Fewer Splits are Better. Deconstructing Readability in Sentence Splitting
# О чем
В статье автор изучает гипотезу о том, что если длинное сложное предложение разбить на короткие, то читать их становится легче. Автор устанавливает как связаны некоторые факторы читаемости со степенью разбиения.
# Метод
В своих исследованиях автор использует как готовые датасеты (Split and Rephrase Benchmark, WikiSplit), так и предложения, разделенные с помощью модели BART, которую он сам дообучил.
Полученные данные были предложены разметчикам в Amazon Mechanical Turk (Толока от Амазона), где их спрашивали две вещи:
* выбрать между разбиением на два предложения или на три исходного предложения, и самого исходного предложения исходя из удобочитаемости;
* оценить качество по смыслу, грамматике и складности (fluency) обе нарезки;
Опираясь на полученные данные, автор составил модель байесовской логистической регрессии, пытаясь понять, какие факторы связаны с выбором Теркеров о читабельности. Полный список параметров в таблице 8. Их категории: синтетические, когезивные, когнитивные, классические, структурные, информационные и perception. Краткое описание каждого параметра в 5.2.
# Результаты
В качестве оценки автор использовал Watanabe-Akaike Information Criterion (WAIC) - оценка значимости по результатам изменения качества модели после удаления параметра из рассмотрения, а также апостериорного распределения коэффициентов.
Согласно распределениям (автор считал значимость по удалению среднего от нуля, чем дальше, тем значимее) важными для читабельности являются Флеш-Кинсайд, грамматика, смысл (meaining), складности и еще несколько, определение которых найдете в 5.2. Согласно WAIC набор почти тоже самый.
Интересным наблюдением является то, что разметчики не различали, где разделяли люди, а где BART. Кроме того, автор установил, что люди предпочитают нарезку в два предложения.
# О чем
В статье автор изучает гипотезу о том, что если длинное сложное предложение разбить на короткие, то читать их становится легче. Автор устанавливает как связаны некоторые факторы читаемости со степенью разбиения.
# Метод
В своих исследованиях автор использует как готовые датасеты (Split and Rephrase Benchmark, WikiSplit), так и предложения, разделенные с помощью модели BART, которую он сам дообучил.
Полученные данные были предложены разметчикам в Amazon Mechanical Turk (Толока от Амазона), где их спрашивали две вещи:
* выбрать между разбиением на два предложения или на три исходного предложения, и самого исходного предложения исходя из удобочитаемости;
* оценить качество по смыслу, грамматике и складности (fluency) обе нарезки;
Опираясь на полученные данные, автор составил модель байесовской логистической регрессии, пытаясь понять, какие факторы связаны с выбором Теркеров о читабельности. Полный список параметров в таблице 8. Их категории: синтетические, когезивные, когнитивные, классические, структурные, информационные и perception. Краткое описание каждого параметра в 5.2.
# Результаты
В качестве оценки автор использовал Watanabe-Akaike Information Criterion (WAIC) - оценка значимости по результатам изменения качества модели после удаления параметра из рассмотрения, а также апостериорного распределения коэффициентов.
Согласно распределениям (автор считал значимость по удалению среднего от нуля, чем дальше, тем значимее) важными для читабельности являются Флеш-Кинсайд, грамматика, смысл (meaining), складности и еще несколько, определение которых найдете в 5.2. Согласно WAIC набор почти тоже самый.
Интересным наблюдением является то, что разметчики не различали, где разделяли люди, а где BART. Кроме того, автор установил, что люди предпочитают нарезку в два предложения.
Cascading Biases. Investigating the Effect of Heuristic Annotation Strategies on Data and Models
# О чем
В статье авторы пытаются выявить смещения данных, вносимых разметчиками, через характеризацию известных когнитивных стратегий (эвристики). Тестировали, как эти смещения усваиваются моделями.
# Метод
Авторы собрали датасет генерации вопросов. В качестве исходного материала использовали тексты из википедии. Разметчиков (Amazon Mechanical Turk) просили придумать вопросы и 4 варианта ответов к нему. После этого, разметчикам предлагали пройти тест на когнитивные искажения (Приложение B).
Авторы выбрали три эвристики:
* Satisficing - выбор того, что удовлетворяет, а не то, что оптимально. Гипотеза авторов в контесте задачи - разметчики делают работу по принципу "и так сойдет". Признаком этой стратегии авторы устанавливают время, потраченное на задание.
* Availability - использование свежей информации в памяти. Гипотеза авторов - разметчики пишут корректный вариант ответа первым в списке. Признаком является, соответственно, корректный ответ на первом месте.
* Representatives - использование похожих объектов. Гипотеза авторов - вопрос сильно похож на исходных текст. Признаком является пересечение словаря.
Признаки имеют разные способы представления (отношения, логарифм и т.д.). Авторы подчеркивают, что признаки каждой эвристики не обязательно связаны только с конкретной эвристикой.
# Результаты
Авторам удалось найти набор признаков, который коррелирует с результатами тестов на уровне 0.3 по модулю со статистической значимостью. Кроме того, PCA этих признаков коллериует на уровне 0.5.
Далее, авторы проверили насколько успешно модели , явно использующие эвристики (см. 5), могут решить примеры от разметчиков, которые показывают высокие показатели по признакам авторов. Тест проводился по каждому признаку по отдельности и заключался в использовании примеров с высоким значением по признаку с постепенным включением всех остальных примеров. В результате получились графики, на которых видно, что во многих случаях модель дает лучше значения по точности на примерах с высоким показателем по признаку, т.е. в начале графика, с постепенным ухудшением.
Кроме того, авторы посчитали корреляцию между средним значением признака для разметчика и точностью модели на примерах этого разметчика. Корреляция для всех признаков, кроме семейства satisficing, на уровне 0.3 по модулю.
Также, авторы показали, что если формировать тренировочную выборку из примеров разметчиков со склонностью к когнитивным эвристикам, то качество такой модели будет хуже, чем если выбирать примеры от случайных разметчиков или выбирать примеры просо случайно, вне зависимости от разметчиков.
# О чем
В статье авторы пытаются выявить смещения данных, вносимых разметчиками, через характеризацию известных когнитивных стратегий (эвристики). Тестировали, как эти смещения усваиваются моделями.
# Метод
Авторы собрали датасет генерации вопросов. В качестве исходного материала использовали тексты из википедии. Разметчиков (Amazon Mechanical Turk) просили придумать вопросы и 4 варианта ответов к нему. После этого, разметчикам предлагали пройти тест на когнитивные искажения (Приложение B).
Авторы выбрали три эвристики:
* Satisficing - выбор того, что удовлетворяет, а не то, что оптимально. Гипотеза авторов в контесте задачи - разметчики делают работу по принципу "и так сойдет". Признаком этой стратегии авторы устанавливают время, потраченное на задание.
* Availability - использование свежей информации в памяти. Гипотеза авторов - разметчики пишут корректный вариант ответа первым в списке. Признаком является, соответственно, корректный ответ на первом месте.
* Representatives - использование похожих объектов. Гипотеза авторов - вопрос сильно похож на исходных текст. Признаком является пересечение словаря.
Признаки имеют разные способы представления (отношения, логарифм и т.д.). Авторы подчеркивают, что признаки каждой эвристики не обязательно связаны только с конкретной эвристикой.
# Результаты
Авторам удалось найти набор признаков, который коррелирует с результатами тестов на уровне 0.3 по модулю со статистической значимостью. Кроме того, PCA этих признаков коллериует на уровне 0.5.
Далее, авторы проверили насколько успешно модели , явно использующие эвристики (см. 5), могут решить примеры от разметчиков, которые показывают высокие показатели по признакам авторов. Тест проводился по каждому признаку по отдельности и заключался в использовании примеров с высоким значением по признаку с постепенным включением всех остальных примеров. В результате получились графики, на которых видно, что во многих случаях модель дает лучше значения по точности на примерах с высоким показателем по признаку, т.е. в начале графика, с постепенным ухудшением.
Кроме того, авторы посчитали корреляцию между средним значением признака для разметчика и точностью модели на примерах этого разметчика. Корреляция для всех признаков, кроме семейства satisficing, на уровне 0.3 по модулю.
Также, авторы показали, что если формировать тренировочную выборку из примеров разметчиков со склонностью к когнитивным эвристикам, то качество такой модели будет хуже, чем если выбирать примеры от случайных разметчиков или выбирать примеры просо случайно, вне зависимости от разметчиков.
Тут пришла новость, что мой пост о борьбе с суицидом при помощи NLP попал в шорт-лист конкурса Технотекст. Если вы пропустили этот пост прошлым летом, то самое время это исправить))
Хабр
Как мы с помощью NLP облегчаем поиск людей с суицидальными наклонностями
В этой статье я бы хотел рассказать о совместной работе с @elizavetakluchikova и командой над тем, как мы применяем машинное обучение для облегчения поиска и оценки людей с суицидальными наклонностями...
👍2
AutoWS. Automated Weak Supervision Framework for TextClassification
# О чем
В статье предлагается способ автоматического создания разметочных функций, стратегия отбора разметочных функций и способа агрегации.
# Метод
Авторы предполагают, что изначально есть dev-набор по 200 семплов на каждый класс в датасете.
В качестве "автоматических" разметочных функций авторы используют модели, обученные на разных методах представления
* WordCount, TfIdf, эмбеддинги из SentenceBERT и поверх Adaboost, Random Forest, SVM. Всего 9 моделей.
* 1-NN поверх тех же признаков, что выше.
* дообученные BERT, ELECTRA и DeBERTa.
Всего получается 15 разметочных функций.
Далее, идет процедура по отбору этих функций вместе со способом агрегации, но она настолько мутная и вычислительно сложная, что ее даже описывать не хочется.
# Результаты
Авторы используют два датасета AGNews и Yahoo! и сравнивают свои результаты с теми, которые дал SOTA на похожей задаче, а именно некий MixText. Естественно, метод, предложенный в статье, превосходит его. Кстати, без той стремной оптимизации метод авторов этой статьи проигрывает всего на 1 пункт по точности. Жаль они не привели ранжирование функций, а то делать разметочные функции путем дообучения бертоподобных моделей тоже такое себе.
# О чем
В статье предлагается способ автоматического создания разметочных функций, стратегия отбора разметочных функций и способа агрегации.
# Метод
Авторы предполагают, что изначально есть dev-набор по 200 семплов на каждый класс в датасете.
В качестве "автоматических" разметочных функций авторы используют модели, обученные на разных методах представления
* WordCount, TfIdf, эмбеддинги из SentenceBERT и поверх Adaboost, Random Forest, SVM. Всего 9 моделей.
* 1-NN поверх тех же признаков, что выше.
* дообученные BERT, ELECTRA и DeBERTa.
Всего получается 15 разметочных функций.
Далее, идет процедура по отбору этих функций вместе со способом агрегации, но она настолько мутная и вычислительно сложная, что ее даже описывать не хочется.
# Результаты
Авторы используют два датасета AGNews и Yahoo! и сравнивают свои результаты с теми, которые дал SOTA на похожей задаче, а именно некий MixText. Естественно, метод, предложенный в статье, превосходит его. Кстати, без той стремной оптимизации метод авторов этой статьи проигрывает всего на 1 пункт по точности. Жаль они не привели ранжирование функций, а то делать разметочные функции путем дообучения бертоподобных моделей тоже такое себе.
❤1
Если впервые слышите про разметочные функции и слабое обучение, то можете прочитать мое руководство по работе с одним из значимых фреймворков из этой области. Там и общие принципы, и теория.
https://habr.com/ru/company/mts_ai/blog/673786/
https://habr.com/ru/company/mts_ai/blog/673786/
Хабр
Ныряем со Сноркелем в море данных. Туториал по фреймворку для программирования датасетов
Привет. Я Игорь Буянов, старший разработчик группы разметки данных MTS AI. Я люблю датасеты и все методы, которые помогают их делать быстро и качественно. Недавно рассказывал о том, как делать...
А еще я тут проболел так неслабо с четверга и, судя по окружению, не я один такой. Поэтому желаю вам не болеть)
🙏2
Evaluating the Knowledge Dependency of Questions
# О чем
В статье предлагается автоматическая метрика оценки вопрос с несколькими ответами. Эта метрика позволяет оценить качество вопроса в том смысле, что на вопрос может ответить человек, который действительно обладает соответствующими знаниями.
# Метод
Авторы моделируют то, что они называют Knowledge Dependent Answerbility следующим образом. Пусть у нас есть группа студентов, которые отвечают на вопросы. Отберем тех, кто ответил на какие-то вопросы неправильно, потом покажем им необходимый факт и попросим пройти вопрос заново. Тогда необходимая метрика будет являться отношением тех, кто ответил правильно после показа им факта, к ответам всех студентов. $$KDA(q) = P(R^{q+f} = 1 | R^q = 0) = \frac{\sum_{j}(1-r_j^q))r_j^{q+f}}{\sum_j (1-r_j^q)}$$
где $r^q_j$ - переменная, показывающая корректность ответа без показа факта, $r^{q+f}$ - с показом.
Аппроксимировать студентов предлагается с помощью языковой модели с помощью промтов. Авторы предлагают два варианта. Первый повторяет исходную формулу, а второй работает на уровне вероятностей. (см. формулу 3).
В качестве генератора вопросов, авторы использовали дообучали T5-Large, затем использовали другую T5-Large и другие методы для генерации неправильных ответов. В качестве модели, эмулирующую студента, авторы также использовали T5-Large дообученную на RACE.
# Результаты
Используя датасеты OBQA, TabMCQ и SciQ авторы провели корреляционный текст между поведением людей и их метрикой. Тест проводился ровно так, как было описано в описании метода. Помимо своей метрики, авторы также приводят данные по метрикам BLEU, ROUGE-L и METEOR. Метрика авторов показывает значительно большую корреляцию с оценкой людей (около 0,77), хотя и существенно отличается на отдельных датасетах. Авторы объясняют это тем, что в двух датасетах слишком простые вопросы, которые являются, по сути, перефразами фактов.
Кроме этого, авторы проводили тест со сгенерированными вопросами, где людей учителей спрашивали, использовали бы они данный вопрос в своей работе. Результаты показали, что с ростом KDA растет и вероятность использования вопросы, при этом те, что имели KDA больше 0,8 были приняты в 82 процентах случаях.
Кроме того, авторы попытались использовать KDA в качестве предиктора почему вопрос не был использован. Здесь не удалось добиться высоких результатов.
Авторы также описали довольно много ограничений их исследований, типа низкого соглашения учителей в вопросе использования вопросов, а также то, что качество работы метрики зависит от модели, а значит от данных, на которых она обучалась.
Код: https://github.com/riiid/question-score
# О чем
В статье предлагается автоматическая метрика оценки вопрос с несколькими ответами. Эта метрика позволяет оценить качество вопроса в том смысле, что на вопрос может ответить человек, который действительно обладает соответствующими знаниями.
# Метод
Авторы моделируют то, что они называют Knowledge Dependent Answerbility следующим образом. Пусть у нас есть группа студентов, которые отвечают на вопросы. Отберем тех, кто ответил на какие-то вопросы неправильно, потом покажем им необходимый факт и попросим пройти вопрос заново. Тогда необходимая метрика будет являться отношением тех, кто ответил правильно после показа им факта, к ответам всех студентов. $$KDA(q) = P(R^{q+f} = 1 | R^q = 0) = \frac{\sum_{j}(1-r_j^q))r_j^{q+f}}{\sum_j (1-r_j^q)}$$
где $r^q_j$ - переменная, показывающая корректность ответа без показа факта, $r^{q+f}$ - с показом.
Аппроксимировать студентов предлагается с помощью языковой модели с помощью промтов. Авторы предлагают два варианта. Первый повторяет исходную формулу, а второй работает на уровне вероятностей. (см. формулу 3).
В качестве генератора вопросов, авторы использовали дообучали T5-Large, затем использовали другую T5-Large и другие методы для генерации неправильных ответов. В качестве модели, эмулирующую студента, авторы также использовали T5-Large дообученную на RACE.
# Результаты
Используя датасеты OBQA, TabMCQ и SciQ авторы провели корреляционный текст между поведением людей и их метрикой. Тест проводился ровно так, как было описано в описании метода. Помимо своей метрики, авторы также приводят данные по метрикам BLEU, ROUGE-L и METEOR. Метрика авторов показывает значительно большую корреляцию с оценкой людей (около 0,77), хотя и существенно отличается на отдельных датасетах. Авторы объясняют это тем, что в двух датасетах слишком простые вопросы, которые являются, по сути, перефразами фактов.
Кроме этого, авторы проводили тест со сгенерированными вопросами, где людей учителей спрашивали, использовали бы они данный вопрос в своей работе. Результаты показали, что с ростом KDA растет и вероятность использования вопросы, при этом те, что имели KDA больше 0,8 были приняты в 82 процентах случаях.
Кроме того, авторы попытались использовать KDA в качестве предиктора почему вопрос не был использован. Здесь не удалось добиться высоких результатов.
Авторы также описали довольно много ограничений их исследований, типа низкого соглашения учителей в вопросе использования вопросов, а также то, что качество работы метрики зависит от модели, а значит от данных, на которых она обучалась.
Код: https://github.com/riiid/question-score
Вообще, конечно, поражает, как языковые модели с промтами могут использоваться.
А вот интересно, насколько качественно генерила бы выпросы ChatGPT при условии, что ей явно задавать контекст, а не полагаться на то, что она знает 🤔
А вот интересно, насколько качественно генерила бы выпросы ChatGPT при условии, что ей явно задавать контекст, а не полагаться на то, что она знает 🤔
Я думаю не ошибусь, если скажу, что у многих пользователей есть целое кладбище постов под названием "Закладки" на Хабре. Вот и у меня их сейчас 360. Несколько раз я туда заглядывал и периодически такой "Ого, у меня даже такое есть". А еще есть неприятная сторона — открываешь ссылку, а там уже статьи нет.
Если с незнанием того, что у тебя есть, можно мириться, то пропажа постов вызывает некоторые неприятные ощущения. Да, я знаю, вы скажете, какая разница есть эти посты или нет, если ты их не читаешь? А вот и не правда. Иногда читаю, иногда сбрасываю коллегам, кому релевантно, а иногда даже помню, что название интересной книги и проекта на гитхабе упоминали в комментах к такому-то посту. Кстати, однажды напоролся, что такой наводящий пост был скрыт автором.
Для решения этой проблемы, набросал небольшой скрипт, который обходит ваши закладки и скачивает их при помощи внешней программы Monolith - утилита на Расте, которая создает один html-файл, сохраняя туда всё, включая картинки. Была такая фича раньше в браузерах, но ее решили выпилить почему-то.
Еще скрипт создает табличку, в которой указаны названия постов, их хабы и метки. Сейчас подумал, что можно еще ключевые слова добавить, которые указаны в конце постов.
Процесс скачивания не быстрый, поэтому возможно стоит еще в табличку писать скачался ли пост или нет на случай, если надо прервать скачивание. Ну и еще для периодического запуска. Однако самому пока этим заниматься некогда, а ваши сохраненные посты могут быть скрыты уже завтра)))
Пользоваться просто. Скачиваете Монолит, кладете в папку со скриптом, а дальше
Если с незнанием того, что у тебя есть, можно мириться, то пропажа постов вызывает некоторые неприятные ощущения. Да, я знаю, вы скажете, какая разница есть эти посты или нет, если ты их не читаешь? А вот и не правда. Иногда читаю, иногда сбрасываю коллегам, кому релевантно, а иногда даже помню, что название интересной книги и проекта на гитхабе упоминали в комментах к такому-то посту. Кстати, однажды напоролся, что такой наводящий пост был скрыт автором.
Для решения этой проблемы, набросал небольшой скрипт, который обходит ваши закладки и скачивает их при помощи внешней программы Monolith - утилита на Расте, которая создает один html-файл, сохраняя туда всё, включая картинки. Была такая фича раньше в браузерах, но ее решили выпилить почему-то.
Еще скрипт создает табличку, в которой указаны названия постов, их хабы и метки. Сейчас подумал, что можно еще ключевые слова добавить, которые указаны в конце постов.
Процесс скачивания не быстрый, поэтому возможно стоит еще в табличку писать скачался ли пост или нет на случай, если надо прервать скачивание. Ну и еще для периодического запуска. Однако самому пока этим заниматься некогда, а ваши сохраненные посты могут быть скрыты уже завтра)))
Пользоваться просто. Скачиваете Монолит, кладете в папку со скриптом, а дальше
python habr_favorites_aquisition.py --output_dir out --login aarmaageedoonНе забудьте залогиниться на Хабре. И пусть избранные вами посты будут на вашем локальном диске. Скрипт с рабочей версией Монолита (для Линукса) следующим постом.
🔥3
Ну и конечно легким движением руки, скрипт превращается в скрапер для создания корпуса из статей на Хабре.
👍1
Using Fisher’s Exact Test to Evaluate Association Measures for N-grams
# О чем
В статье проводится сравнение различных метрик ассоциативности с точным тестом Фишера, который является лучшим методом для этой задачи. При помощи довольно точной аппроксимации точного теста Фишера проводится также оценка для трехграмных словосочетаний.
# Метод
Для сравнения взял несколько метрик, такие как Mutual Information (MI), t-score, z, simple-ll, raw frquency and so called MI3 a modification of MI.
Сравнение проводилось так. Сначала применялся точный тест Фишера или его аппроксимация, а затем какая-то из вышеназванных метрик. Качество оценивалось по кривой точность-полнота и average precision (AP), ведь у нас ранжированные списки н-грам получаются.
# Результаты
В качестве исходных данных использовался Британский национальный корпус с примерно 5.5 млн токенов. Был посчитан baseline путем усреднения AP при случайном ранжировании. Тут выяснилось, что для 4-грамм baseline составляет 0.99, поэтому на рассмотрении остались толкьо дву- и триграммы.
По метрикам, лучше всех для дву- и трехграмм показала себя simple-ll, что подтверждает более ранние исследования. Следом и же идет MI3 и z.
# О чем
В статье проводится сравнение различных метрик ассоциативности с точным тестом Фишера, который является лучшим методом для этой задачи. При помощи довольно точной аппроксимации точного теста Фишера проводится также оценка для трехграмных словосочетаний.
# Метод
Для сравнения взял несколько метрик, такие как Mutual Information (MI), t-score, z, simple-ll, raw frquency and so called MI3 a modification of MI.
Сравнение проводилось так. Сначала применялся точный тест Фишера или его аппроксимация, а затем какая-то из вышеназванных метрик. Качество оценивалось по кривой точность-полнота и average precision (AP), ведь у нас ранжированные списки н-грам получаются.
# Результаты
В качестве исходных данных использовался Британский национальный корпус с примерно 5.5 млн токенов. Был посчитан baseline путем усреднения AP при случайном ранжировании. Тут выяснилось, что для 4-грамм baseline составляет 0.99, поэтому на рассмотрении остались толкьо дву- и триграммы.
По метрикам, лучше всех для дву- и трехграмм показала себя simple-ll, что подтверждает более ранние исследования. Следом и же идет MI3 и z.
И еще из рубрику "реклама через статью" и в продолжение к выжимке выше. Фреймворк для слабого обучения skweak https://github.com/NorskRegnesentral/skweak. В качестве бекэенда используется SpaCy.
Отличительная особенность фреймворка в том, что он позволяет вам удобно создавать разметочные функции для задачи NER, а также предоставляет специальную фичу для этого, которую они назвали document-level fucntions, которая как-то использует факт, что в одном документе сущности скорее всего будут иметь одинаковую метку.
Еще в фреймворке реализована композиция разметочных функций. А также возможность разметочных функций выводить "абстрактный" вывод типа вот этот токен является частью какой-то сущности, но какой конкретно - неизвестно.
В качестве модели агрегации для последовательностей используется несложная HMM, а для классификации - наивный Байес. Для больших деталей смотрите статью https://arxiv.org/pdf/2104.09683.pdf
Отличительная особенность фреймворка в том, что он позволяет вам удобно создавать разметочные функции для задачи NER, а также предоставляет специальную фичу для этого, которую они назвали document-level fucntions, которая как-то использует факт, что в одном документе сущности скорее всего будут иметь одинаковую метку.
Еще в фреймворке реализована композиция разметочных функций. А также возможность разметочных функций выводить "абстрактный" вывод типа вот этот токен является частью какой-то сущности, но какой конкретно - неизвестно.
В качестве модели агрегации для последовательностей используется несложная HMM, а для классификации - наивный Байес. Для больших деталей смотрите статью https://arxiv.org/pdf/2104.09683.pdf