教你的对话式人工智能聊天机器人在特纳奥工作室拾取实体


教一个对话式的人工智能聊天机器人拾取实体。

为了让你的机器人理解用户说的话,用户话语中的一些词比其他词更重要。这类重要词汇的典型例子包括所谓的命名实体,如城市或产品名称。以下是如何在Teneo工作室从用户输入中提取实体。

您可能还喜欢:A Beginner’s Guide to Creating an Interactive Chatbot Flow in Teneo

有时候,仅仅知道触发哪一个流量是不够的。您的机器人可能还需要从输入中提取一些信息来做出适当的响应。让我们假设用户想知道我们的朗伯里咖啡师商店在哪里。这就是这样一场对话的进行方式:

用户:你的商店在哪里?
机器人:目前我们唯一的商店在纽约。

另一个可能的对话如下,用户问隆贝里咖啡师是否在某个特定的城市有商店。这里,答案的第一部分是相同的,但是在第二部分,机器人选择了用户感兴趣的城市,并在响应中使用它:

用户:你在伦敦有商店吗?
机器人:目前我们唯一的商店在纽约。我们将来可能会考虑在伦敦开更多的商店。

在这一页上,我们将首先构建处理关于我们的商店位于何处的问题的基本流程。然后,我们将它扩展到用户提到的城市,并在机器人的回答中重复使用。这就是我们最终的流程:

Final flow structure

创建基本流程

  1. 创建一个新流并命名它User wants to know if we have a store in city。(如果您需要关于如何添加新流的指导,请检查your first flow)。
  2. 将以下学习示例复制到您的剪贴板:
  3. Where are your stores located?
    Where are your shops located Where are your cafes located?
    Where do you have cafes?
    Where do you have stores Where do you have shops?
    Where is Longberry Baristas?
    Where can I find you?
    Where can I find your cafes Where can we find you?

  4. 然后,选择触发器,打开右侧的“学习示例”面板,并单击显示“无正面学习示例”的地方。然后点击鼠标右键+粘贴或快捷键CTRL + V来粘贴学习示例。
  5. 命名触发器Where do you have stores?
  6. 选择输出节点,打开右侧的“答案”面板并粘贴Currently our only store is in New York.在答案文本字段中。然后,命名输出节点Our only store is in...
  7. 点击“保存”。

就这样!现在,您已经创建了可以处理以下类型对话的基本流程:

用户:你的商店在哪里?
机器人:目前我们唯一的商店在纽约。

扩展流程以拾取实体

现在,我们将继续扩展这个基本流程,以便识别用户提到的城市,并在机器人的回复中重复使用它。为此,我们将执行以下操作:

  • 添加一个流量变量,我们可以在其中存储用户提到的城市。
  • 添加一个新的触发器来识别输入,如“你在巴黎有商店吗?”。
  • 从输入中选择城市。
  • 使用用户提到的城市的输出来扩展流。

添加流量变量

为了能够存储用户提到的城市,我们需要创建一个流量变量:

  1. 点击流程窗口左上角的“流程”标签。
  2. 选择左边紫色条中的“变量”。
  3. 单击窗口右上角的“添加”。
  4. 命名变量city通过替换单词“变量1”。
  5. 我们想将这个变量初始化为一个空字符串,所以在下面的文本框中添加""
  6. 使用后退箭头返回流程图。

添加新触发器

现在,我们将确保该流程触发输入,在输入中,用户询问我们在特定城市是否有商店。我们可以向已经存在的触发器添加额外的学习示例,或者添加第二个触发器。在这种情况下,我们将选择后者:

  1. 在顶部功能区的“添加流触发器”部分,选择“类”以添加另一个类触发器。
  2. 将以下学习示例复制到您的剪贴板:
  3. Do you have a store in London?
    Do you run a cafe in New York
    Are there any of your stores in Sydney?
    Do you have a branch in San Francisco
    Have you got a cafe in Utrecht?
    Is there a cafe in London
    Do you have a coffee shop in Tokyo?
    Have you shops in Berlin
    Do you have any cafes in Paris?
    In London, do you have a store there?
    Is there a cafe of yours in Stockholm.
    Do you have a cafe in Stockholm
    Is there a store in Stockholm?

  4. 打开右侧的“学习示例”面板,单击“无正面示例”字段,然后从剪贴板粘贴学习示例。
  5. 说出你的扳机Do you have a store in city?

拿起实体

现在我们有了合适的触发器,是时候选择用户提到的城市了。我们将通过使用流侦听器来实现这一点:

  1. 转到左上角的“流程”选项卡。
  2. 从左侧的紫色条中选择“监听器”。
  3. 点击顶部的小“添加”图标,添加一个新的流监听器。
  4. 说出它的名字Pick up city和粘贴%LOCATION.ENTITY^{city = _USED_WORDS}在条件字段中。这将存储与“%LOCATION”匹配的用户输入部分。流变量城市中的“ENTITY”。
  5. 点击“确定”关闭监听器窗口,然后点击后退箭头返回主流程窗口。

位置。ENTITY相当慷慨,它不仅能识别城市,还能识别其他地方,如国家。如果你想更精确地识别城市,你可以使用language object城市。请改用LIST。然而,你有可能会在这个列表中遗漏某个城市。

添加新的输出节点

现在唯一要做的事情是在现有的输出节点之后添加另一个输出节点:

  1. 选择输出节点“我们唯一的商店在...”
  2. 在顶部功能区的“添加节点”中,选择“输出”。这将在现有输出节点之后添加另一个输出节点。
  3. 选择新的输出节点,并将以下内容粘贴到“答案”字段中:We might consider opening additional stores in ${city} in the future.
  4. 命名新的输出节点We might consider opening a store in city
  5. 点击“保存”。

你注意到答案中使用了流量变量吗?当您在带有${ and }的答案文本中包含某个内容时,它将在显示给用户之前以编程方式进行评估。在这里,这意味着“城市”将被替换为其当前值。

如果此时你尝试示例对话,你会发现它不会起作用。在第一个输出节点之后,流将被阻塞。为了解决这个问题,我们必须配置两个输出节点之间的转换。如您所见,过渡显示为实线,这意味着它正在等待用户的输入。但是在这里,我们不期望在两个输出节点之间有用户输入。

相反,我们希望给出第二个输出欧力如果用户在询问我们的商店时提到了一个城市。因此,我们已经将转换设置为“有条件的”。我们是这样进行的:

  1. 选择两个输出节点之间的过渡。
  2. 打开右侧的“示例”面板。
  3. 使用第一个开关设置从“继续前获取输入”到“无输入继续”的转换。这将确保Teneo不会等待新的输入。
  4. 使用第二个开关设置从“无条件”到“有条件”的转换。这将打开一个“条件”字段。
  5. 在“条件”字段中,粘贴{city}。这是我们存储用户提到的城市的流量变量的名称。将变量添加到条件中意味着只有当这个变量有一个值时,这个转换才会被遍历,如果用户提到一个城市就是这种情况。
  6. 给过渡命名City mentioned

现在我们快到了。剩下要做的唯一事情是添加一个节点,允许我们在用户没有提到城市的情况下正确地退出流程。这就是我们所做的:

  1. 选择“我们唯一的商店在...”节点。
  2. 然后,在顶部功能区的“添加节点”部分,单击“交叉点”。
  3. 选择两个节点之间的过渡。在右侧的“示例”面板中,将其设为“无条件”。
  4. 命名此过渡No city mentioned, drop the flow
  5. 点击“保存”。

试试看!

就这样。现在去试一试,试一试!取决于你是否在你的请求中提到一个城市,你应该得到简短的或者详细的回答。

用户:你的商店在哪里?
机器人:目前我们唯一的商店在纽约。

用户:你在伦敦有商店吗?
机器人:目前我们唯一的商店在纽约。我们将来可能会考虑在伦敦开更多的商店。

进一步阅读

3-Minute Guide to Understanding “What Is a Chatbot?”

Best Practices for Designing a Conversational Chatbot Experience