speakEasy

This is a Natural Language Interface for the UNIX terminal written in Python for the 2018 Dandyhacks. It uses plain English commands that do exactly what they say. No need to memorize unintuitive command names or loads of command flags. speakEasy brings the terminal and command prompt to the everyday user. It was written by Dominic Giambra (University of Rochester, Chemical Engineering, 2018, 3rd Place DandyHacks 2018: Stroke Detector) and Tyler Knight (University of Rochester, Computer Science, 2019).

What does it do

speakEasy is a python program which interfaces with the command line, and takes simpler more intuitive phrases and runs their corresponding bash command. There's a large number of people who could benefit from bash commands but don't use them due to confusing names and so many flags. We've taken the most popular bash commands and mapped them to plain english.

The list comand,

ls -a

is very useful, but we've simplified it.

Enter a Command > list 

Want more detail?

Enter a Command > list all files

We've also implemented making files and folders, deleting files and folders, locating a file or folder, moving working directory, as well as running executable in python, C, C++, Java, and Ruby . In fact, one of the greatest accomplishments of this project is the ability to compile and run programs in multiple languages.

Enter a Command > run hello.py
Enter a Command > run hello.c
Enter a Command > run hello.java

All three of these are valid commands. The programs advanced algorithms determine the file type, and if necessary compiles and runs the file. Visit our GitHub repo for more information, tutorials, and source code.

What we learned

We learned quite a bit during this project, and became stronger, more efficient programmers. We spent a lot of time researching grammar as well as Natural Language APIs. We also learned some more python tricks and figured out how to get python dictionaries to handle most of our matching and function calling. To run and compile all the different programs, a little bit of each programming language had to be learned. We also learned some linguistic techniques for parsing parts of speech out of command structures.

What's next for speakEasy

speakEasy is just getting started. For this implementation, we created our own NL inference methods ourselves. This has the benefit of being effective and custom tailored to our application, but it is ultimately limited for future development. Plenty of advanced and accessible commercial NLP libraries are available, but an accurate outcome with these libraries often requires significant collections of language data for machine learning. Looking ahead, we aim to gather data on the natural variation in the usage of command line language and integrate it with advanced libraries. We believe it is important to allow our users to shape speakEasy's functionality to best fit their needs, so future versions include editable schemas for command line intents. In addition we may add features beyond NL, such as spell check and code completion, making speakEasy a true and effortless liason between coder and computer.

Share this project:

Updates