7

我正在尝试训练我的 Wit.ai 机器人以识别某人的名字。我不太确定我是否完全理解 NLP 的工作原理,所以我给你举个例子。

  1. 我定义了很多表达方式,比如“我叫 XXXX”、“大家都叫我 XXXX”
  2. 在“了解”表中,我添加了一个名为“contact_name”的实体,并添加了近 50 个关键字,例如“Michel, John, Mary...”。
  3. 我把这个特征作为“自由文本”和“关键词”。

我不确定这个过程是否正确。所以,我问你:

  1. 对于 NLP 来说,像“我的名字是……”这样的上下文是否重要?我的意思是......它会帮助机器人预测在这个表达式之后可能会出现一个拳头名字吗?
  2. 向实体添加 50 个值是正确的还是完全错误的?
  3. 你建议作为一个培训过程来获得某人的名字?
4

2 回答 2

6

通过将实体的搜索策略保持为“自由文本”和“关键字”,您已经做到了。但是向实体添加关键字示例没有任何意义,因为人名不是关键字。

所以,我会推荐一个训练策略,如下所示:

  • 创建各种消息模板,例如“我的名字是 XYZ”“我是 XYZ”“这是 XYZ”等(您能想到的所有可能的介绍消息)
  • 删除您创建的实体的所有关键字和表达式并添加这两个关键字:
    1. "abcdefghijklmnopqrstu vwxy z"
    2. “XYZ”(可以给出任何名称,但保持该名称相同以验证模板)
  • 在“理解”选项卡中输入消息并将名称提取到实体中(在您的情况下为“contact_name”)并验证它们
  • 同样,验证所有保持名称为“XYZ”的消息模板
  • 为所有模板完成此操作后,您的机器人将能够识别给定消息模板中的任何名称

这背后的逻辑是您的实体是自由文本和关键字,这意味着它首先尝试匹配关键字,如果不匹配它会尝试在模板的相同位置查找单词。保持名称相同以进行验证有助于使用模板训练机器人并了解通常可以找到名称的位置。

希望这有效。我已经尝试过并为我工作。我不确定机器人如何在后台训练。我建议您启动一个新应用程序并进行此练习。如果有任何问题,请发表评论。

于 2016-08-11T10:59:36.727 回答
2

wit.ai 有一个预训练的实体提取方法wit/contact,称为

捕获可以是姓名或明确提及某个人的自由文本,例如“保罗”、“保罗·史密斯”、“我的丈夫”、“牙医”。

即使没有任何训练数据,它也能很好地工作。要了解该方法,请参阅小鸭

于 2018-01-16T18:41:53.520 回答