你所描述的是一个普遍的问题,有很多可能的解决方案。您的业务需求,我们不知道,会严重影响正确的方法。
例如,您需要标记自然语言输入。你应该使用基于规则的方法,还是使用学习机器?也许两个?让我们考虑您的输入字符串:
Can you create a task with name t1 and assign time to it. Also, connect t1 to t2
我们的系统可能会以如下方式记号化此输入:
Can you [create a task] with [name] [t1] and [assign] [time] to it. Also, [connect] [t1] to [t2]
括号表示语义信息,完全没有结构。结构是否重要?你是否需要知道connect t1
与文本本身的t2
有关,还是我们可以假设这是因为所有的输入都会遵循这个结构?
如果输入将始终遵循此结构,并且将始终包含这些类型的语义,那么您可能可以通过使用正则表达式解析并馈送预构建方法来避开此问题。
如果输入反而是真正的自然语言(即,你正在建造一个siri或alexa的竞争对手),那么这将变得非常复杂,并且你不会得到一个有用的答案SO这样发布。如果您对语言学和计算机科学都有足够的熟悉程度,以便让您能够系统地处理问题,那么您将在您之前拥有几千个SO帖子。
这实际上是我的MS研究...真的太广泛了,特别是如果你正在寻找“示例代码”。你研究过什么方法?您需要确定:您对用户输入格式的要求有多严格?用户是否需要说出魔法字(“创建任务”),或者是否允许任何内容(例如“oops,给最后一个5分钟”或“t2应该从t1链接”)?你会允许用户反馈来训练你的机器人吗?实时?你有一套训练数据吗?所有这些都会影响你想采取的方法。 – whrrgarbl