Этот проект предназначен для оценки курсов на платформе Stepik по полезности и эмоциональности отзывов о нём. В рамках проекта были разработаны две модели:
-
Модель определения тональности отзыва: Определяет, является ли отзыв положительным или отрицательным (бинарная классификация).
-
Модель векторизации отзывов: Оценивает отзывы по семи ключевым критериям:
- Подробность отзыва
- Глубина курса
- Качество обучающих материалов
- Качество задач
- Умения преподавателя
- Практическая направленность
- Обратная связь
В качестве основы была взята предобученая модель BERT, которая отлично подходит для задач классификации текста.
Разметка данных была выполнена с использованием Yandex GPT, и в проекте использовались:
- 18,000 отзывов с платформы Stepik, размеченных по 7 признакам упоминаний.
- Часть датасета Amazon Reviews, содержащая 40,000 сэмплов (20к негативных и 20к позитивных).
В директории train models находятся Jupyter Notebook (.ipynb) файлы, содержащие модели для обучения и их настройки. Эти ноутбуки включают в себя код для предобработки данных, обучения моделей и оценки их эффективности.
Также реализован готовый класс взаимодействия с моделью. Пример использования класса можно найти в файле 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).
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.
f_max = 6 (значение функции при подстановки значений для самого хорошего отзыва)
-
В перспективе можно взять больше отзывов со онлайн платформы и разметить их. При увеличении датасета с отзывами со Stepik, точность модели классификации росла. Также можно привлечь экспертов для разметки отзывов;
-
Разметить по позитивности и негативности отзывы самого степика и обучить на них модель оценки эмоций;
-
Так же при подсчёте total_score и остальных важных метрик курса можно использовать вероятность того, накручен отзыв или нет, создав соответствующую для этого модель.
- Автоматизация процесса анализа отзывов.
- Помощь пользователям в выборе курсов на основе анализа полезных отзывов.
- Составление объективного рейтинга курсов.
При помощи этой библиотеки была произведена оценка 2294 курса с платформы Stepik и создан рейтинг, содержащий множество параметров, характеризующих курс.
https://github.com/IvanKholodilo/Stepik-Courses-Rating
Для установки необходимых библиотек используйте следующую команду:
pip install -r requirements.txtCitations: [1] https://stepik.org/course/56237 [2] https://www.kaggle.com/datasets/kritanjalijain/amazon-reviews [3] https://github.com/IvanKholodilo/Stepik-Courses-Rating

