Research into learning shows that testing is almost as important as covering the content itself. However, other than exams students have a very limited ability to test themselves on content. We wanted to create a way for students to test themselves without having to create the testing content which takes time away from learning.
Try it yourself
http://jango707.pythonanywhere.com/ (note: copy & paste a bigger paragraph, single words or small sentences will crash the app)
What it does
SmartPy takes any text input paragraph and uses NLP to find the keywords in the text. It then checks the frequency of these words and lists the most important ones together with their definitions. It then compiles these into "Q" cards where students can test their knowledge on the given paragraph. They can hover over the cards to reveal their definitions and test themselves. The idea is that people paste pages from their textbook or their notes into the box, and then we can create tests for each individual page. This will give them a great way to regularly test themselves on content they have learned.
How we built it
We first started using NLP libraries in basic python to find the keywords in text. While doing this we worked on creating a Django server and building the front end of the site. We then found an API for getting definitions of the keywords. Once we had the parts ready we integrated it all together and made it look pretty!
Challenges we ran into
We had many problems working out the correct way to implement the NLP, we needed to ensure that the keywords that we got were related to the text that was being studied. We managed to use statistical analysis to determine the frequencies of keywords against a large database of common words. This meant that any words that were not present in the database but were present in the text would be picked which we found to be a good approximation for the content relevant keywords. Furthermore, we had difficulty integrating the backend and frontend. Big brained it afterwards.
Accomplishments that we're proud of
We are proud to have a good-looking and working product which is practically useful for students and all other self-taught learners.
What we learned
None of us had used NLP or Django before so it was great to learn some new technologies and improve our web development skills. Also learned how to use APIs together with NLP.
What's next for SmartPy
We would want to allow users to sign-in so they could save tests and retake tests to give them better opportunities to learn. We could also apply some heuristics to create a database of their questions and then give them old questions mixed in with the new ones to ensure they are still up to date with old content. This could be done using a spaced repetition learning method called Leitner System. Also add a feature where user can upload images of their notes instead of the input text.