Skip to content

Icold21/StepikEval

Repository files navigation

Оценка курсов Stepik

Описание проекта

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

  1. Модель определения тональности отзыва: Определяет, является ли отзыв положительным или отрицательным (бинарная классификация).

  2. Модель векторизации отзывов: Оценивает отзывы по семи ключевым критериям:

    • Подробность отзыва
    • Глубина курса
    • Качество обучающих материалов
    • Качество задач
    • Умения преподавателя
    • Практическая направленность
    • Обратная связь

В качестве основы была взята предобученая модель BERT, которая отлично подходит для задач классификации текста.

Данные

Разметка данных была выполнена с использованием Yandex GPT, и в проекте использовались:

  • 18,000 отзывов с платформы Stepik, размеченных по 7 признакам упоминаний.
  • Часть датасета Amazon Reviews, содержащая 40,000 сэмплов (20к негативных и 20к позитивных).

Структура проекта

В директории train models находятся Jupyter Notebook (.ipynb) файлы, содержащие модели для обучения и их настройки. Эти ноутбуки включают в себя код для предобработки данных, обучения моделей и оценки их эффективности.

Также реализован готовый класс взаимодействия с моделью. Пример использования класса можно найти в файле example.py.

Пример использования (example.py)

from StepikEval import CourseClassifier, Course

course = Course(CourseClassifier())
total_score = course.get_info('https://stepik.org/course/56237')
print(total_score)
print(course.positive, course.average_stars, len(course.reviews))

Список атрибутов отзыва:

  • scores - вектор длиной 7, содержащий вероятности на каждый класс, которые выдает классификатор;
  • emotions - вектор длиной 2, содержащий вероятности позитивности и негативности отзыва;
  • stars - количество звёзд у отзыва.

Список атрибутов курса:

  • classifier - класс классификатора отзывов (CourseClassifier), загружающий в себя две модели классификации при инициализации;
  • reviews - список с объектами класса Review, содержимое которых соответсвует характеристикам реальных отзывов о курсе;
  • total_score - оценка курса по 100-бальной шкале (способ подсчёта описан ниже);
  • average_stars - сколько в среднем звёзд у курса (число с точностью большей, чем на сайте);
  • detail_score - средняя оценка полноты отзыва (число float от 0 до 1);
  • deep_score - средняя оценка глубины курса (число float от 0 до 1);
  • material_quality_score - средняя оценка качества материала курса (число float от 0 до 1);
  • problems_quality_score - средняя оценка качества задач курса (число float от 0 до 1);
  • coach_skills_score - средняя оценка навыков преподователя (число float от 0 до 1);
  • practice_experience_score - средняя оценка практической составляющей курса (число float от 0 до 1);
  • feedback_score - средняя оценка обратной связи (число float от 0 до 1);
  • positive - средняя оценка позитивности отзывов (число float от 0 до 1);
  • negative - средняя оценка негативности отзывов (число float от 0 до 1);
  • important_rews_amount - общее количество полезных отзывов о курсе;
  • positive_part - доля позитивных отзывов от их общего количества (число float от 0 до 1);
  • negative_part - доля негативных отзывов от их общего количества (число float от 0 до 1);
  • important_positive_part - доля полезных позитивных отзывов от общего количества полезных отзывов (число float от 0 до 1);
  • important_negative_part - доля полезных негативных отзывов от общего количества полезных отзывов (число float от 0 до 1);
  • important_rews_part - доля полезных отзывов от общего количества отзывов (число float от 0 до 1).

Формула подсчета total_score

p - positive score for each review (list of positive probabilities);

n - negative score for each review (list of negative probabilities);

Q - scores (list of courses features lists);

n - amount of reviews.

formula_full

f_max = 6 (значение функции при подстановки значений для самого хорошего отзыва)

Ввозможные улучшения

  • В перспективе можно взять больше отзывов со онлайн платформы и разметить их. При увеличении датасета с отзывами со Stepik, точность модели классификации росла. Также можно привлечь экспертов для разметки отзывов;

  • Разметить по позитивности и негативности отзывы самого степика и обучить на них модель оценки эмоций;

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

photo_2024-12-22_11-35-03

Цели проекта

  • Автоматизация процесса анализа отзывов.
  • Помощь пользователям в выборе курсов на основе анализа полезных отзывов.
  • Составление объективного рейтинга курсов.

Применение на практике

При помощи этой библиотеки была произведена оценка 2294 курса с платформы Stepik и создан рейтинг, содержащий множество параметров, характеризующих курс.

https://github.com/IvanKholodilo/Stepik-Courses-Rating

Установка

Для установки необходимых библиотек используйте следующую команду:

pip install -r requirements.txt

Citations: [1] https://stepik.org/course/56237 [2] https://www.kaggle.com/datasets/kritanjalijain/amazon-reviews [3] https://github.com/IvanKholodilo/Stepik-Courses-Rating

About

Python library for Stepik courses analyzing

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •