Since writing first started, humans have been writing repositories of word definitions, and this is just continuation of that tradition. With so much of our daily tasks being online, we wanted to create a dictionary that combined the offline reliability of a paper dictionary, with the speed and ease of using an online one.
Using Prolog, we want to create a lightweight dictionary client with autocomplete suggestions. The main goals we want to achieve are:
- Intuitive User Interface: Since our project is made for users, we want the UI to be intuitive and easy to use out of the box.
- Quick Lookup: We want searching to be as fast as possible. Using a trie would allow us to search for words in O(log n) time, which is ideal.
- Simple Implementation: We implemented a simple GUI that allows users to type in a word, select from live autocomplete suggestions and get the definition.
Live autocomplete suggestions for users as they type words in. Easy-to-use Python GUI.
Most of the learning involved was on how to build and traverse a trie. Coming up with Prolog functions, specifically, to query the trie and rebuild words from the found nodes was the largest challenge because it involved a lot of algorithmic thinking and tinkering with our code.
Jenilee worked on reading a dictionary from a csv format and inserting it into the trie.
Oleg worked on the GUI and reading returned information from the Prolog program.
Youssef worked on querying the trie for definitions and suggested words.