在 RASA 框架中构建我的 NLP 模型以构建聊天机器人时,我使用了两种不同的实体提取方法 ( https://rasa.com/docs/nlu/entities/ )。该机器人应该处理具有自定义实体以及一些一般问题(如位置或组织)的不同问题。所以我使用 ner_spacy 和 ner_crf 两个组件来创建模型。之后,我在 python 中构建了一个小帮助脚本来评估模型性能。在那里我注意到模型很难选择正确的实体。
例如,对于单词“X”,它从 SpaCy 中选择了预定义的实体“ORG”,但它应该被识别为我在训练数据中定义的自定义实体。
如果我只使用 ner_crf 提取器,我在识别像首都这样的位置实体时会遇到巨大的问题。我最大的问题之一也是单一答案实体。
问:“你最喜欢的动物是什么?”
一只狗
我的模型无法为这个单一答案提取这个单一实体“动物”。如果我用“The Dog”这样的两个词来回答这个问题,那么模型在提取值为“Dog”的动物实体方面没有问题。
所以我的问题是,使用两个不同的组件来提取实体是否聪明?一个用于自定义实体,另一个用于预定义实体。如果我使用两种方法,使用哪个提取器的模型中的机制是什么?
顺便说一句,目前我只是在测试,所以我的训练样本并没有应该的那么大(少于 100 个样本)。如果我有更多的训练示例,问题是否可以解决?