如何使用NLP仅从字符串中提取非意图的实体?

如何使用NLP仅从字符串中提取非意图的实体?,nlp,api-ai,Nlp,Api Ai,我正在构建一个Messenger机器人,语言处理是通过 Apiai的意图是通过机器人体验引导用户的一种很好的方式。我使用预定义的意图来理解用户想要做什么,并使用botkit的对象与他开始对话。在这一点上,我有用户需要回答的预定义问题 例如,其中一个问题是“什么时候发生的?”用户可以用纯文本回答。我不需要apiai告诉我我的意图(我也不想为此花时间训练),因为我已经知道该期待什么了 因此,我正在寻找一种方法,简单地从字符串中提取系统和开发人员定义的实体。所以,如果用户提供答案“我昨天发生的事”,我

我正在构建一个Messenger机器人,语言处理是通过

Apiai的意图是通过机器人体验引导用户的一种很好的方式。我使用预定义的意图来理解用户想要做什么,并使用botkit的对象与他开始对话。在这一点上,我有用户需要回答的预定义问题

例如,其中一个问题是“什么时候发生的?”用户可以用纯文本回答。我不需要apiai告诉我我的意图(我也不想为此花时间训练),因为我已经知道该期待什么了

因此,我正在寻找一种方法,简单地从字符串中提取系统和开发人员定义的实体。所以,如果用户提供答案“我昨天发生的事”,我可以验证我有日期实体,但时间实体是空的,所以我也会提示给时间

我已经阅读了apiai和其他竞争对手的文档,但还没有找到一种方法来做到这一点。它总是关于定义意图


所以基本上-从字符串中查找和提取实体。有可能吗?如果有,怎么做?目前,apiai是我的工具,但如果必要,我愿意对其进行更改。

您可以使用所需的参数,以确保从用户处获得必要的信息。要创建一个参数,只需选中操作部分下方意图中参数名称左侧的复选框(在下面的屏幕截图中用箭头指向)。要为参数创建自定义提示(即“发生在什么时候?”),请单击“提示”列标题下参数名称右侧的(在下面屏幕截图的红色框中):


如果需要进一步验证,则需要为Api.ai设置一个实现webhook。Api.ai将向您的webhook发送请求,其中将包含JSON数据,包括实体的值(这在对webhook的请求中包含的结果对象的parameters属性中)。然后,您可以验证任何必要的数据,并相应地响应用户。实现webhook的文档在这里:

您签出了吗?这是您正在寻找的,还是有一些不适用于您的用例的限制?是的,有一些限制。用户可能会以多种不同的方式回答,如“昨天”、“我是昨天”、“昨天发生的事”。根据我的理解,我有义务为这个问题创建意图,并为所有这些可能的用户答案培训代理。但这对我来说似乎很愚蠢,因为我已经知道了意图。这些系统实体功能非常强大,所以我想知道为什么开发人员不能简单地搜索字符串。我明白了,你是在寻找一个托管服务来实现这一点,或者使用开源工具设置自己的API是一种选择吗?我想继续对一般消息使用intents,所以我想继续使用像apiai这样的托管服务,但我知道你要去哪里。我曾经尝试过TensorFlow,并且知道这可以通过他们的语言模型实现,但我更愿意尝试不要过度复杂化bot的结构。我很确定,对于api.ai引擎来说,这项任务比获得意图(纠正我的错误)更容易,所以我有点困惑为什么不支持开箱即用。我没有专门使用api.ai。简单地看,他们的实体识别似乎是结合意图训练的,这可以解释为什么他们不提供仅用于提取实体的api,他们可能不会为实体提取创建单独的模型。在您的案例中,使用意图的主要问题是设置不同意图需要花费太多时间才能获得所需的实体吗?也许可以创建一个“回退”意图,而不需要任何特殊含义,您只需要提取实体。