Hacker News new | ask | show | jobs
by toast0 1462 days ago
Having used various things that claim to be natural language, I find that to use them effectively, I end up needing to learn their particular structured language. These are often poorly documented and may have pretty weird/difficult edge cases (one often seen and easy to explain case is selecting lists with plural nouns and individual records with singular nouns... But many english nouns have the same spelling and pronounciation as plural and singular).

Regardless of the details of the language, if I'm going to learn a structured language anyway, I would usually prefer to learn the underlying language, and not an imperfect abstraction. Sometimes, there's good value in the abstraction, but I usually find they get in the way and make it harder to do what I want.

1 comments

> Having used various things that claim to be natural language, I find that to use them effectively, I end up needing to learn their particular structured language.

This makes sense. Are there any specific examples of products that you have used that you had to do this?

> ...selecting lists with plural nouns and individual records with singular nouns...

Yes, this is for sure a failure case. I believe I have some means to work around this, fwiw.

> if I'm going to learn a structured language anyway, I would usually prefer to learn the underlying language, and not an imperfect abstraction.

I feel like I get what you are saying here, but some more concrete examples would help. Is there a "structured language" you are referring to?

I'm thinking of applescript in particular, but voice assistants in abstract.

Applescript is sold as a natural english like language, but it's really not. At least it's well documented.

Voice assistants are more like your product. Ask it a question, get something. But you have to ask them to do things in very particular ways or you don't get what you want. And there's usually zero documentation.

As an interface to SQL, your product is going to have to let me specify pretty specific relations, and that's going to take pretty specific words, IMHO. Think about how a user would ask for an inner join vs a left join vs a cross join.

Some ORMs have a pretty similar issue, where you learn an entirely different way to formulate queries, that ultimately get turned into SQL, but I'd rather work to understand SQL than to understand an abstraction over SQL (unless it gives a singificant benefit).