Patent Document ID: 10019285
Application ID: 15042266

Base Claim:
1. A computer-implemented method comprising: receiving, from a natural language interface system, a natural language task specification; converting said natural language task specification into a domain independent data flow graph, said domain independent data flow graph comprising one or more substeps; presenting said domain independent data flow graph via said natural language interface system as a natural language program; interactively refining, by said natural language interface system, said natural language program and correspondingly modifying said domain independent data flow graph; for each substep of said one or more substeps: selecting one or more candidate application programming interfaces from an application programming interface library, based on said substep; interactively narrowing, by said natural language interface system, said one or more candidate application programming interfaces to at least one selected application programming interface; implementing said substep by specifying one or more calls to said at least one selected application programming interface to yield a substep implementation; and appending said substep implementation to a result program.

---

Claim 5:
5. The computer-implemented method of claim 1 , wherein interactively narrowing said one or more candidate application programming interfaces comprises: identifying, for said substep, one or more parameters; for each parameter of said one or more parameters: dividing said one or more candidate application programming interfaces into one or more clusters; computing an entropy, based on said one or more clusters; responsive to said entropy being greater than an entropy threshold: presenting, by said natural language interface system, one or more narrowing questions and recalculating said entropy, based on said one or more narrowing questions, until said entropy is at or below said entropy threshold; and responsive to said entropy being equal to or less than said entropy threshold: assigning a value to said parameter.