Как сделать классификацию в core

Обновлено: 07.07.2024

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

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

В Дидактор поступило несколько вопросов, о том, как создать интерактивный урок в CORE . Несмотря на лёгкость обращения с конструктором, позволю себе небольшие комментарии.

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

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

Когда вы выбираете Создать урок , вам будет предложено несколько шаблонов. Можете выбрать один из них, исходя из поставленных образовательных задач. Давайте выберем Пустой урок , чтобы познакомиться с имеющимся инструментарием.

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

Для ввода контента вам необходимо перетащить желаемый блок в пустое место. И приступаем к работе.

Вы можете вставить текст, изображение, видео, прикрепить документ, ввести тест или организовать опрос.

Советую обязательно воспользоваться блоком Информация .

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

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

Вы можете вставить в урок документы PDF, WORD, EXCEL или POWERPOINT, которые ученики могут посмотреть или загрузить себе на компьютер.

Инструменты контроля и формирующего оценивания довольно разнообразны.

1.Тест с множественным выбором

3. Открытый вопрос . Данный инструмент позволяет ввести задание с открытым ответом. Например, ученик может написать эссе, прикрепить изображение.

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

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

6. Заполни пробелы . Вы можете создать интерактивный диктант, где ученик должен вставить пропущенные слова или буквы.

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

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

Для работы учащимся вовсе не обязательно создавать свой аккаунт. Достаточно выбрать вариант Без регистрации . В таком случае обязательно потребуйте от ребят вписать имя и фамилию.

Учитель получает оперативную статистику о работе учеников.

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

Внимание!

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

Посмотрите мой новый набросок по ссылке . Имя и фамилию можно ввести вымышленные. Буду рад, если вы оставите свои комментарии в интерактивном задании или в ходе обсуждения статьи.

После доработок в Core исчезли многие погрешности.

Однако!

1.Несмотря на заявленную возможность использования видео и изображения с компьютера так и не удалось загрузить видео.

2. Редактор вставки математических символов крайне ограничен. Ссылка на расширенную версию редактора не работает.

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

📌Наша действительность сама создает условия для движения вперед. Учителя начальных классов вынуждены переходить в онлайн среду.

📌Новый формат онлайн взаимодействия - это вынужденный эксперимент, который требует гибкого подхода. У многих педагогов такой переход сопровождается дискомфортом, стрессом и отторжением. Не смотря на популяризацию ИКТ, большое количество педагогов все еще верны традиционным методам и инструментам преподавания. Поэтому, в сложившейся ситуации, предлагаем познакомиться с адаптивной онлайн-платформой конструирования образовательных материалов и проверки знаний Core.

📌Мной пройден педагогический эдутон, где познакомилась с возможностями Core для создания курса онлайн.

📌А теперь о платформе!

Всё просто и доступно! Заходи, регистрируйся, создавай!

📌Предлагаем разобраться с конструктором интерактивных уроков Core

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

📌Плюсом данного конструктора интерактивных уроков является то, что учитель, используя платформу в силах выстроить индивидуальную образовательную траекторию для каждого учащегося, выдавая задания различной степени сложности. Учащиеся могут проходить урок с любых устройств: начать проходить онлайн-урок на компьютере, а продолжить на смартфоне и закончить на планшете.

Итак, учитель проходит регистрацию.

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

Можно воспользоваться шаблонами или начать конструирование урока с нуля .

Инструменты урока находятся в левой части панели.

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

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

В нашем распоряжении более 40 типов упражнений. По своей структуре конструктор представляет собой слайдовый курс с чередованием теории и практики. Core достаточно функционален: он содержит тесты различных форм, опросы.

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

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

📌Конструктор поддерживает вставку мультимедийных файлов, например, видеороликов с Youtube, Vimeo, Soundcloud, Facebook, Dailymotion, Twitch или аудиозаписей .mp4 .mp3 .wav (до 100 Mb), достаточно вставить ссылку или загрузить медиафайл. Главное ― подобрать/создать качественный продукт.

📌Имеется несколько типов контрольных заданий :

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

Если у вас в плане урока стоит письменная работа, то ваши подопечные могут прикрепить фото своей работы .

Для того, чтобы вернуться в конструктор, наведите курсор на левый верхний угол: появится стрелочка которая и выведет вас обратно. Все изменения сохраняются автоматически.

📌Мониторинг результатов

Итак, конструктор интерактивных уроков Core даёт возможность: создавать интерактивные онлайн-уроки; автоматически проверять задания;назначать домашние задания и давать обратную связь.

Рассматриваем практическое применение supervised NLP модели fastText для обнаружения сарказма в новостных заголовках.

🤖 Практическое руководство по NLP: изучаем классификацию текстов с помощью библиотеки fastText

Около 80% всей информации не структурировано, а текст является одним из наиболее распространенных типов неструктурированных данных. Из-за ее беспорядочной природы, анализ, понимание, организация и сортировка текстовой информации становятся сложными и трудоемкими задачами. Здесь на помощь приходят NLP и классификация текста.

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

fastText – популярная библиотека с открытым исходным кодом для классификации текстов, которая была опубликована в 2015 году исследовательской лабораторией искусственного интеллекта Facebook. Компания также предоставляет модели: English word vectors (предварительно обучена английскому webcrawl и Википедии) и Multi-lingual word vectors (обученные модели для 157 различных языков), которые позволяют создать алгоритмы Supervised и Unsupervised learning для получения векторных представлений слов. Библиотеку можно использовать как инструмент командной строки или как пакет Python. В этой статье мы рассмотрим ее применение для классификации новостных заголовков.

Подготовка среды и данных

Загружаем необходимые библиотеки

Данные

Переменные

  • is_sarcastic : 1 если заголовок с сарказмом, в противном случае 0
  • headline : заголовок новостной статьи
  • article_link : ссылка на оригинальную статью

Приведем несколько примеров саркастических и не саркастических заголовков:

Подготовка данных

Предварительная обработка текста

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

Разделение данных на обучающие и тестовые

Прежде чем мы начнем обучение модели, нужно разделить данные так . Чаще всего для обучения модели используется 80% информации (в зависимости от объема данных размер выборки может варьироваться) и 20% – для тестирования (проверки точности).

Создание текстового файла

Далее нам нужно подготовить файлы в формате txt . Формат файла по умолчанию должен включать __label__

. Мы можем использовать другой префикс вместо __label__ , соответствующим образом изменив параметр во время обучения. В нашем датасете __ label __0 подразумевает отсутствие сарказма, а __label __1 подразумевает сарказм.

Построение модели

Для обучения модели необходимо задать fastText входной файл и ее имя:

Результаты, хотя и не идеальные, выглядят многообещающими.

Оптимизация гиперпараметров

Как можно заметить, точность модели не возрасла. Еще один способ изменить скорость процесса – увеличить (или уменьшить) скорость обучения алгоритма. Это соответствует тому, насколько сильно меняется модель после обработки каждого примера. Скорость обучения равная 0 будет означать, что модель вообще не меняется и, следовательно, ничему не учится. Хорошие значения скорости обучения находятся в диапазоне 0.1 – 1.0 . Мы также можем вручную оптимизировать этот гиперпараметр с помощью аргумента lr :

Наконец, мы можем улучшить производительность модели, используя биграммы слов, а не просто юниграммы. Это особенно значимо для задач классификации, где важен порядок слов, например, анализ сентиментов, определение критики, сарказма и т. д. Для этого мы включим в модель аргумент wordNgrams равный 2.

Благодаря этой последовательности шагов мы смогли перейти от точности в 86%:

  • предварительная обработка текста;
  • изменение количества эпох (с использованием аргумента epoch , стандартный диапазон [5 – 50] ) ;
  • изменение скорости обучения (с использованием аргумента lr , стандартный диапазон [0,1 – 1,0] ) ;
  • используя n-граммы слов (используя аргумента wordNgrams , стандартный диапазон 3 ).

Вы также можете адаптировать поиск гиперпараментров через оценку определенного лейбла, добавив аргумент autotuneMetric :

Функция автоматической настройки fastText позволяет оптимизировать гиперпараметры для получения наивысшего показателя F1. Для этого необходимо включить модель аргумент autotuneValidationFile и тестовый датасет:

Сохраним результаты модели и создадим функцию для классификации новых данных:

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

Результаты

Мы можем проверить результаты на новых данных, введя любое предложение:

Метка результата с максимальной вероятностью равна __label__0 . Это означает, что заголовок не является саркастическим. В model.predict() значение k обозначает количество лейблов, которые вы хотите показать вместе с их показателями вероятности. Поскольку мы использовали активацию softmax (по умолчанию в fastText), сумма вероятностей двух меток равна 1.

Мы также можем симулировать новые данные и проверить модели на реальных заголовках. Для этого будет использовать News Aggregator Dataset из Kaggle:

Применим функцию классификацию текста к новым заголовкам и создадим переменные с прогнозируемым лейблом и его вероятностью:

Мы видим, что 28% заголовков были классифицированы как сарказм.

Заключение

В заключение следует отметить, что fastText не является одной из самых последних разработок классификации текстов (библиотека была опубликована в 2015 году). В то же время это хорошая основа для новичков: при выполнении NLP-классификации текстов любой сложности, модель имеет существенное преимущество из-за простоты ее использования, скорости обучения и автоматической настройки гиперпараметров. Подробнее с документацией fastText можно ознакомится по ссылке .

Как решить задачу классификации в PySpark

Как решить задачу классификации в PySpark

Как решить задачу классификации в PySpark

Автор Роман Котюбеев Категория Machine Learning, Spark, Статьи

PySpark позволяет работать не только с большими данными (Big data), но и создавать модели машинного обучения (Machine Learning). Сегодня мы расскажем вам о модуле ML и покажем, как обучить модель Machine Learning для решения задачи классификации. Читайте у нас: подготовка данных, применение логистической регрессии, а также использование метрик качеств в PySpark.

Датасет с домами на продажу

В качестве примера мы будем использовать датасет Kaggle, который содержит данные о домах на продажу в Бруклине с 2003 по 2017 года и доступен для скачивания. Он содержит 111 атрибутов (столбцов) и 390883 записей (строк). В атрибуты включены: дата продажи, дата постройки, цена на дом, налоговый класс, соседние регионы, долгота, ширина и др.

О Kaggle API и о том, как установить PySpark в Google Colab, читайте здесь.

Готовим атрибут для последующей бинарной классификации

Допустим, требуется классифицировать налоговый класс на дом (tax_class). Всего имеется 10 таких классов. Поскольку данные распределены неравномерно (например, в классе 1 имеется 198969 записей, а в 3-м — только 18), мы разделим их на 2 категории: те, которые принадлежат классу 1, и остальные. В Python это делается очень просто, нужно просто вызвать метод replace :

Кроме того, алгоритмы Machine Learning в PySpark работают с числовым значениями, а не со строками. Поэтому преобразуем значения столбца tax_class в тип int:

Подбор признаков и преобразование категорий

Выберем следующие признаки для обучения модели Machine Learning: год постройки ( year_of_sale ), цена на дом ( sale_price) и соседние регионы ( neighborhood ). Последние атрибут является категориальным признаком — в данных имеется 20 соседних регионов. Но опять же все значения этих категорий являются строковыми, поэтому нужно преобразовать их в числовые.

Можно воспользоваться методом replace , как это сделано выше, но придётся сначала извлечь названия всех 20 регионов. А можно использовать специальный класс StringIndexer из PySpark-модуля ML, который выполнит за нас всю работу. Объект этого класса принимает в качестве аргументов: название атрибута, который нужно преобразовать ( inputCol ), и название, которое будет иметь преобразованный атрибут ( outputCol ). Вот так это выглядит в Python:

Преобразованные категории имеют вид:

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

Векторизация признаков

Поскольку алгоритмы машинного обучения в PySpark принимают на вход только вектора, то нужно провести векторизацию. Для преобразования признаков в вектора используется класс VectorAssembler. Объект этого класса принимает в качестве аргументов список с названиями признаков, которые нужно векторизовать (inputCols), и название преобразованного признака (outputCol). После создания объекта VectorAssembler вызывается метод transform .

Для начала выберем в качестве признака для преобразования — цену на дом. Код на Python:

Полученный после векторизации DataFrame выглядит следующим образом:

Разделение датасета и обучение модели

Для решения задач Machine Learning всегда нужно иметь, как минимум, две выборки — обучающую и тестовую. На обучающей мы будем обучать модель, а на тестовой проверять эффективность обученной модели. В PySpark сделать это очень просто, нужно просто вызвать метод randomSplit , который разделит исходный датасет в заданной пропорции. Мы разделим в пропорции 80:20, в Python это выглядит так:

Теперь воспользуемся логистической регрессией (Logistic Regression) [1], которая есть в PySpark, в качестве алгоритма Machine learning. Для этого нужно указать признаки, на которых модель обучается, и признак, который нужно классифицировать. Мы преобразовали цену на дом (sale price) в вектор под названием features , поэтому именно его и указываем в аргументе:

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

Проверим эффективность модели, используя метрику качества. И в этом случае PySpark нас выручает, поскольку у него есть класс BinaryClassificationEvaluator. Нужно лишь указать целевой признак (tax class), а затем вызвать метод evaluate и передать в него наши предсказания. В Python это выглядит так:

Как видим, мы получили точность только 52%, что очень мало. Попробуем добавить ещё несколько признаков для обучения.

Добавление признаков

Векторизуем также год постройки (year_of_sale) и соседние регионы (neighborhood_id). Для этого нужно только в VectorAssembler указать выбранные признаки:

Python-код для остальных шагов — разделение на тестовую и обучающую выборки, обучение и оценивание модели — остаётся все тем же. В итоге, мы смогли повысить точность до 60%:

Отметим также, что при большем количестве классов в качестве метрики следует использовать MultilabelClassificationEvaluator, вместо BinaryClassificationEvaluator.

Читайте также: