Skip to content

Course ranking based on sentiment analysis of students' feedback online

Notifications You must be signed in to change notification settings

Jacky-P-He/CourseRankingSystem

Repository files navigation

College Course Ranking System

Importance and quality of the courses are both essential aspects students need to consider when selecting courses. Most existing course databases only provide the basic and official information of every individual course and do not give any suggestions among courses. It requires the students to spend a lot of time researching to find the best courses for them. Our project aims to solve this problem by automatically collecting feedbacks on courses fitting the student’s interests. These feedbacks would be classified as positive or negative and contribute certain points to the courses. A course ranking would be given to the students for reference. This project can be extended for students at other universities that have access to their colleges’ databases.

Requirements

Scripts use Python3
Install necessary packages with requirements.txt

pip install -r requirements.txt

CourseRank.sh

This bash script makes it easier to run the whole program suite. Before running, you need to put in the username and password in the corresponding places. You can also specify the max URL in the command. If it's the first time to run on your computer, you may need to give this script the permission:

$ sudo chmod +x CourseRank.sh

Then run this script:

$ ./CourseRank.sh

The final course ranking will be redirected to a file score.out

gen_links.py

Generates links for atlas_crawler.py

Requirements:

Duo 2FA must be enabled

Usage:

  • input: <UMICH_username> <UMICH_password> <subject_code>
    • <subject_code> is optional
      • if specified, will generate links for every course with given subject
      • if not specified, will generate links for every course available on atlas
$ python3 gen_links.py <username> <password> eecs

Script allows 6 seconds to approve sign in on Duo Mobile App

  • output: atlas_links_<subject_code>

atlas_crawler.py

Crawls links and calculates starting weight

Requirements:

Duo 2FA must be enabled

Usage:

  • input: <links_file> <max_urls> <UMICH_username> <UMICH_password>
    • if links_file is larger than 80KB, crawler chooses random links
$ python3 atlas_crawler.py all_atlas_links 2000 <username> <password>

Script allows 6 seconds to approve sign in on Duo Mobile App

  • output: course-info

reddit.py

Get the comments based on the course list generated by atlas_crawler.py
Get the related comments on reddit for each course
Output the related comments into a file for each course under the folder of courseReddit/

Usage:

  • input: <course_info>
$ python3 reddit.py course-info
  • output:
    courseReddit/EECS486.txt
    courseReddit/EECS281.txt
    courseReddit/LING209.txt
    ......

naivebayes.py

Classifies student feedback and calculates final scores

Usage:

  • input: <course_info> <feedback_directory> <training_file>
$ python3 naivebayes.py course-info courseReddit/ testdata.manual.2009.06.14.csv
  • output: print out all the courses found with their scores in the reverse order

About

Course ranking based on sentiment analysis of students' feedback online

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published