Natural Language Processing Made Easy
ELF Software's Access ELF 2000 lets you query Access in plain English

Do you have users who are never satisfied with reporting and can't write ad hoc queries themselves? (If you don't, I want to come work for your users!) Have you ever wished that they can just ask something like "Show the total quantity of seafood products shipped in each three week period during 1995" and get the results without having to write SQL? Natural Language Processing can make that happen.

After looking at some of the Natural Language Processing engines out on the market, I was frustrated because they required way too much work to "map" the fields and tables in the database to the Natural Language engine's dictionary. You usually have to map each and every field, table, and query to an entire dictionary, often consuming hours of mind-numbing time. I've always been a huge fan of Natural Language Processing, however, I've never been impressed by any one vendor's solution. Most of the products out on the market require you to map each and every database element to your own custom dictionary. I decided to bite the bullet and enter in a dictionary for one of our clients, to test and demo it for them. The whole process took over 60 programmer-hours and in the end, the client wasn't impressed since we couldn't customize the engine. Needless to say, this made Natural Language Processing a dead issue to me.

[Note: although Steve was too polite to mention it in print, the software that performed so miserably in his tests was Microsoft's English Query. -- Webmaster@ELF Software]

Putting past failures in Natural Language Processing aside, I decided to play with a version of Access ELF 2000. (ELF stands for English Language Frontend.) The product impressed me. After you install it, you come to a simple dialog (figure 1) that asks you to let ELF analyze the current database. If you click on the "Express" button, ELF performs the entire mapping and creates the dictionary for you. I tried this on Northwind and out-of-the-box, it worked without customization. Since I use the standard Leszynski naming convention for tables and queries, ELF didn't fare as well against some of our larger and more complex databases. So I decided to create a few queries with user-friendly names and then let ELF run against them. It took less than an hour to create a bunch of select queries and run ELF against those queries by selecting "Custom" in the set up. I saved close to 59 developer hours, so I decided to see what else ELF could do. I wanted to see how ELF would handle the natural language queries I was going to throw against it and see if it could graph and chart well.

Using ELF
I fired up the ELF user interface and started to crank. The user interface, shown in figure 2, lets you enter queries in plain English. I got all our queries to work that I thought our users would want. The response time was fast, and ELF even popped up the Access spellchecker when it couldn't understand my bad typing. I typed in some questions and out came results in an Access query grid.

In addition to displaying results in a traditional Access Query grid, there are three other options:

  • Form
  • Chart
  • Worksheet
Selecting a Form creates a new Access-bound form based on the SQL output from the natural language question that you entered. In my opinion, this is mostly a developer or power-user feature, but can be useful. The Chart option works well -- it gives you a chart that lets your users print and change many of the chart options. You can export the chart to a JPEG or BMP file as well. ELF saves the chart on an Access form, so your users can save and work with charts on-the-fly. (I suggest you provide your users separate linked table .MDB file with ELF installed for the ad hoc querying, so they don't interfere with your application at all.)

Using the Worksheet option lets you display your results in a worksheet (figure 3). This lets your power users pivot their data, edit the query in the Access QBE grid, restrict rows, summarize, graph, and even add queries to the database using the SQL template that your natural language questions provided. The killer part of all this is that you can even export the data to Excel. The worksheet gives your users a way to analyze their data in many different powerful ways without a single line of code written by you.

But wait, there's more
In addition to being able to run queries and perform advanced analysis, you can customize ELF by calling it from code, changing your dictionary, and creating scripts. Creating scripts is a powerful advanced feature. You can create scripts to extend the functionality of ELF and enhance the behavior of your queries. If you want to create a script, you can call the script editor and type in some VBScript or JScript as shown in figure 4.

All of this sounds great, but what's the catch?
Access ELF is a great product, but there are always a few things that need improvement. My main complaint is that the user interface appeals to developers and power users, and I want to give ELF to my less sophisticated users. These users will require training on how to run and use ELF. Another minor note is that ELF won't work with .MDE files since ELF makes changes to database objects (usually its own).

Conclusion
Access ELF 2000 is a great product. It gives your users the ability to query your databases without having to learn any SQL at all. As a developer, you can customize Access ELF as you see fit. While not every one of my solutions will require the users to develop ad hoc queries, much of the "maintenance" that I'm required to do to my existing applications consists of creating new reports. With Access ELF, that burden is now much less.

-- Stephen Forte, Access/VB Advisor, November 1999