如何处理NLP中的两种实体提取方法

时间:2019-03-05 11:36:07

标签: nlp entity rasa-nlu

我正在使用两种不同的实体提取方法(https://rasa.com/docs/nlu/entities/),同时在RASA框架中构建我的NLP模型来构建聊天机器人。 机器人应处理具有自定义实体以及位置或组织等一般性问题的不同问题。 因此,我同时使用ner_spacy和ner_crf两个组件来创建模型。之后,我在python中构建了一个小的帮助程序脚本来评估模型性能。在那里,我注意到该模型难以选择正确的实体。

例如,对于单词“ X”,它从SpaCy中选择了预定义的实体“ ORG”,但应将其识别为我在训练数据中定义的自定义实体。

如果仅使用ner_crf提取程序,则在识别首都等位置实体时会遇到巨大的问题。我最大的问题之一还是单答案实体。

问:“您最喜欢的动物是什么?”

A:狗

我的模型无法为此单一答案提取该单一实体“动物”。如果我用“狗”之类的两个词回答该问题,则该模型可以轻松提取出值为“狗”的动物实体。

所以我的问题是,使用两个不同的组件提取实体是否明智?一个用于自定义实体,另一个用于预定义实体。 如果我使用两种方法,那么在模型中使用哪种提取器的机制是什么?

顺便说一句,目前我只是在测试东西,所以我的训练样本并没有那么多(少于100个例子)。如果我有更多的培训示例,是否可以解决问题?

1 个答案:

答案 0 :(得分:2)

您在这里面临2个问题。我建议我发现有帮助的几种方法。

1。自定义实体识别:   为了解决这个问题,您需要添加更多具有所有可能长度的实体的训练句子。当实体(例如介词)周围有可识别的标记时,ner_crf会更好地进行预测

2。从单个单词答案中提取实体:    作为一种解决方法,我建议您在客户端上进行以下操作。

  

在发送诸如What´s your favorite animal?之类的问题时,请在问题上附加一个标记,以指示客户期望得到一个答案。例如   您可以将##SINGLE## What´s your favorite animal?发送给客户端。

     

客户可以从问题中删除##SINGLE##并将其显示给用户。但是,当客户端将用户的响应发送到服务器时,它不会发送Dog,而是发送类似User responded with single answer as Dog

的信息。      

您可以训练模型以从此类答案中提取实体。