GithubHelp home page GithubHelp logo

slvoog / pestleplus Goto Github PK

View Code? Open in Web Editor NEW

This project forked from krishte/pestleplus

0.0 0.0 0.0 876 KB

A chrome extension that works on top of the pestle website (an IB questionbank)

JavaScript 100.00%

pestleplus's Introduction

PestlePlus

Overview

PestlePlus is a chrome extension that works on top of the Pestle website (https://pestle-ib.firebaseapp.com/). This website has a list of questions from past International Baccleaureate (IB) papers arranged by subject. Pestleplus currently works for the Math SL and Math HL subjects.

Key Features:

  • Question difficulty - Assigns each question a difficulty and display questions sorted by difficulty
  • Related questions - Displays related questions in terms of content for a given question
  • Timer functionality - Provides timer functionality so that studens can attempt questions with under real exam time limits

Pestle was initially scraped to compute question difficulty and related questions, the results of which were then stored in json files. PestlePlus therefore alters the apperance of Pestle to reflect the stored information and to make the website more dynamic.

Without PestlePlus
Screenshot 2022-12-08 at 11 38 41
Screenshot 2022-12-08 at 11 50 30
With PestlePlus
PeslePlus1
Screenshot 2022-12-08 at 11 36 41

The following sections detail how the extension's three key features function.

Question difficulty

The majority of quesions on Pestle are accompanied by examiner remarks which detail how students performed on that question. These remarks share a common feature in that they always mention a proportion of students followed by how the students performed. For example, "This was well done by most candidates who correctly applied de Moivre's theorem." Therefore, a named entity recognition model using spaCy in Python was trained on 100 examiner remarks to identify words referring to proportions of students and words referring to the students' performance. These words were then collated into a list and manually annotated with a score between 0 and 1, where 1 represented all students for the proportion score and excellent for the performance score. These scores for each question were then input to an equation that outputted a difficulty score between 0 and 1 with 1 representing the hardest questions. Finally, the final difficulty score of a question was a weighted average of the difficulty score from the examiner remarks, the question number, and the number of points for the question with the heaviest weighting placed on the first component.

Related questions

The main idea here was that related questions would contain similar/the same math terminology, so the approach used is similar to that of document distance. Initially, a math dictionary was scraped to produce a list of math terminology. Then, word frequency vectors were created for each question based on the list of math terminology. For a given question, the angle between that question's vector and all other questions' vectors were computed and the related questions were taken to be the 10 questions that produced the smallest angle with the given question. Due to the computatinal complexity of computing the angle beween 100+ dimensional vectors for 1000+ vectors, it was decided that this should be done in preprocessing and the related questions for each question should be stored in json files.

Timer functionality

On each question page of Pestle, PestlePlus adds a floating timer in the bottom right of the page. The timer calculates the time a student would be allowed on that question using the number of points the question is worth and real IB exam time constraints. The timer then allows students to attempt the question with a time limit ranging from 25% to 200% of the allowed time, catering to students of all abilities. The timer is accompanied by a progress bar that changes gradually from green to red as time runs out.

pestleplus's People

Contributors

krishte avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.