Here's a recent independent verification of our results.
The full paper is available at: Natural Language Interfaces: Comparing English Language Front End and English Query.
This is the Northwind Specialty Foods database, famous as the sample application of Microsoft
Access. It's a small but realistic database. Here you can see just how well the ELF language
engine performs on business databases of moderate complexity.
It's worth noticing that Microsoft won't demonstrate their own natural language query software, called "English Query", on the sample databases that they distribute, such as Northwind, or the "Pubs" SQL Server database. Instead, they demo on a "flat" file of hotel names and amenities. The reason for this is that English Query performs very badly even on the simplest databases, and on more complex databases you're better off asking "The Magic 8-Ball".
Actually, in reaction to our posting of the above comparison, Microsoft's recently added a Northwind page to their English Query demo. The way they did this is pretty remarkable. They simply "hard-coded" into their software the exact questions we made up (as examples of the type of thing that a user might ask). You can download the configuration files for the Northwind demo from Microsoft and see this for yourself. They are in effect saying, if you know in advance the exact words your customers and clients will use to query for data, then you'll have no trouble using English Query.
Microsoft's EQ is an excellent example of what's called a "brittle" natural language system. This means that it looks great in pre-arranged demos, but if you try to use it -- it breaks. For instance, it can handle their example "Which products were shipped in the last 5 years by Federal?" ... But if you vary, even in the slightest degree (as everyone who's not following their demo script will do), you get different results. Try "Show products shipped during the last 5 years by Federal."
Microsoft EQ's response:
Please Clarify: Which of these is Federal the name of? An employee. A person.
(Of course, neither choice is correct.)
Incidentally, let's go back and take a look at the answer to the one they got "right" because they hard-coded it into their system. Here's the SQL it generates:
select distinct dbo.Products.ProductName as "Product name", dbo.Orders.ShippedDate as "Date shipped", dbo.Shippers.CompanyName as "CompanyName" from dbo.Shippers, dbo."Order Details", dbo.Orders, dbo.Products where dbo.Shippers.CompanyName like '%Federal%' and dbo."Order Details".OrderID=dbo.Orders.OrderID and dbo.Orders.ShippedDate<='20000120' and dbo.Shippers.ShipperID=dbo.Orders.ShipVia and dbo."Order Details".ProductID=dbo.Products.ProductID
You may not be an SQL Wizard, but you can probably see that this is giving you a list of every item shipped by Federal before Jan 20, 2000 (the day the question was asked). So is this the "right" answer? Well yes, because Microsoft made sure that there are no records in the database older than 5 years! This is a wonderful solution, highly extensible. All you'd need to do would be to go into your database, remove all the records older than the timeframe you're interested in, ask the question, get the answer, then put the records back in!
Or, you could use one of the ELF products, which translate this question as: SELECT DISTINCT Products.ProductName , Orders.ShippedDate , Shippers.CompanyName , Orders.ShipName FROM [Order Details] INNER JOIN Products ON [Order Details].ProductID = Products.ProductID INNER JOIN Orders ON [Order Details].OrderID = Orders.OrderID INNER JOIN Shippers ON Orders.ShipVia = Shippers.ShipperID WHERE ( ( ( Orders.ShippedDate >= DateAdd ( yyyy , -1 * 5 , GETDATE() ) and Orders.ShippedDate <= GETDATE() ) and ( ( Shippers.CompanyName LIKE 'Federal%' or Shippers.CompanyName LIKE '%[^A-Z0-9]Federal%' ) ) ) ) ;
One thing you might not notice in this translation is the enormously sophisticated pairing of conditions -- not only is ELF checking to find the orders shipped AFTER the date that was five years ago today, but it's also making sure it doesn't list any records with a ship date in the future -- after all, they haven't been shipped yet!
"English Query is unfortunately not available in Microsoft SQL Server 2005. You can, however, use a SQL Server 2005 license to install a copy of SQL Server 2000 and use English Query against a SQL Server 2005 database. Speak with your Microsoft representative about the licensing implications for English Query."
It looks like they are phasing it out entirely...
English Wizard was also discontinued some time ago. It was turned into a "natural language" ecommerce tool called EasyAsk, since it can in fact handle extremely simple queries like "sweaters under $50". However, because their product is so limited they've decided to distinguish it by price, so be warned that it now costs tens of thousands of dollars and is available only to major corporations.