如何识别训练实例中没有的实体

2024-05-23 18:04:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在开发一个客户关系聊天机器人。用户可以输入问候语、初始查询或与产品相关的查询。最初的查询是当用户向聊天机器人提供他们的用户名时。这样做是为了过滤数据库中的结果。在

我创建了一些培训示例来帮助聊天机器人将初始查询与其他查询进行分类。但问题是,如果训练数据中没有指定用户标识,聊天机器人就无法将其识别为实体。例如

## intent:initial_query
- My name is [Karthik](name) and my user ID is [0234](UserID)

这是initial_query的一个例子。这里指定的userId是0234。但是数据库包含更多的用户,每个用户都有唯一的userid,我不可能将所有id添加到培训示例中。在

当指定了用户id时,我应该怎么做才能让机器人理解?我在某个地方看到可以使用查找表。但是当我尝试使用查找表时,它仍然无法识别不是训练示例一部分的id。在

这是我用来在代码中尝试查找表的link。在

intent_entity_featureizer_regex似乎不适合我。我被困在这里,因为这是机器人的关键部分。如果查阅表格不是这个问题的最佳解决方案,我也愿意接受其他想法。在

谢谢你


Tags: 用户nameid数据库示例产品is分类
1条回答
网友
1楼 · 发布于 2024-05-23 18:04:16

我会因为总是说“你”Need more training data而受到不好的批评,但我可以想象它在这里也扮演了一个角色。在

我相信你有几个可能的行动方案:

  • 提供更多的培训数据,我从来没有见过一个好的意图少于10个培训例子。这个数字随着意图的每一个可能的排列以及更多相似的意图而增加。在
  • 使用预构建的实体识别器,如Duckling或spaCy。他们不一定知道1234是一个userId,但他们可以自动提取数字。在

如果你用new_crf和Rasa一起使用,那么重要的是要意识到它实际上是在学习话语的模式,并通过实体周围的东西而不是实际的价值来识别实体。在

您也可以将regex与Rasa一起使用,但是regex featureizer不仅仅是一个查找工具。无论令牌是否匹配该模式,它都会向CRF添加一个标志。鉴于此,它仍然需要足够的培训数据来了解令牌对该实体的重要性。在

相关问题 更多 >