Course:CPSC312-2018-Peg solitaire Solver

From UBC Wiki

Movie Query

Authors:

Robert Mo and Daylan Robertson

 What is the problem?

Movie Query is a small application that is used to run queries to answer questions such as 'who is the director for Avengers?', or, 'who are the actors in The Dark Knight?'.

 What is the something extra?

We are going to use NLP to process plain English requests and translate them into a prolog query. This will enable non-technical users to query the database, rather than using an alternate language to form queries. Also, we plan on running the queries on live data from wiki data and other sources to greatly expand our knowledge base.

What did we learn from doing this?

- Function generalization is incredibly significant when implementing NLP. We found it to be an interesting challenge to see just how wide would could open the scope of a function while still ensuring it behaved as desired. For example, converting a proposition such as director(Movie) to prop(Movie, Role, Person), where Role could be any movie role, including director, actor, producer, etc.

- Building on this, we also wrote our functionality in such a way that it can be expanded beyond the domain of movies.

- Dynamically fetching data with prolog is no easy task. As an example we were able to fetch detailed information about the cast members of a movie once the movie itself was provided, however, fetching data entirely from unrestricted user input proved to be a significant challenge.

- We also learned that prolog is not a strong language for handing IO. We faced challenges such as maintaining a conversation

- Prolog does not handle track results or handle dynamic changes well. For example, variables can not be used to store the result of a query to be used elsewhere. Also, if anything in the knowledge base needs to be changed, the program must be terminated, have the changes made, and then be reloaded once more, regardless of how insignificant the change may be be.

Link To Code

https://github.com/daylanrobertson/prolog-queries