我正在使用两种不同的实体提取方法(https://rasa.com/docs/nlu/entities/)同时在 RASA 框架中构建我的 NLP 模型以构建聊天机器人。
机器人应该处理具有自定义实体以及一些一般问题(例如位置或组织)的不同问题。
因此,我使用 ner_spacy 和 ner_crf 两个组件来创建模型。之后,我用 python 构建了一个小帮助程序脚本来评估模型性能。在那里我注意到模型很难选择正确的实体。
例如,对于单词“X”,它选择了 SpaCy 中的预定义实体“ORG”,但它应该被识别为我在训练数据中定义的自定义实体。
如果我只使用 ner_crf 提取器,我在识别大写字母等位置实体时会遇到巨大的问题。我最大的问题之一也是单一答案实体。
问:“你最喜欢什么动物?”
A : Dog
我的模型无法为这个单一答案提取这个单一实体“动物”。如果我用“狗”这样的两个词回答这个问题,模型就可以毫无问题地提取值为“狗”的动物实体。
所以我的问题是,使用两个不同的组件来提取实体是否聪明?一种用于自定义实体,另一种用于预定义实体。
如果我使用两种方法,模型中使用哪个提取器的机制是什么?
顺便说一句,目前我只是在测试,所以我的训练样本并没有应有的那么大(少于 100 个示例)。如果我有更多的训练样本,问题能解决吗?
你在这里面临两个问题。我建议一些我认为有用的方法。
1.自定义实体识别:为了解决这个问题,您需要添加更多具有所有可能长度的实体的训练句子。ner_crf
当实体周围有可识别标记(例如介词)时,可以更好地预测
2. 从单个单词答案中提取实体:作为解决方法,我建议您在客户端进行以下操作。
当您发送类似问题时What´s your favorite animal?
,在问题上附加一个标记,以向客户表明需要一个答案。例如
你可以发送##SINGLE## What´s your favorite animal?
给客户。
客户端可以删除##SINGLE##
来自问题并将其显示给用户。但是当客户端将用户的响应发送到服务器时,它不会发送Dog
,它发送类似的东西User responded with single answer as Dog
您可以训练模型从此类答案中提取实体。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)