我正在开发一个客户关系聊天机器人。用户可以输入问候语,用户名,电话号码等,
我创建了一些培训示例(50多个名称)来帮助nlu.md文件中的聊天机器人。但是问题在于,如果在训练数据(nlu.md)文件中未指定user_name,那么聊天机器人将无法将user_name识别为实体。
我也写了一个正则表达式,但是即使我改了个名字,nlu引擎也无法识别它。
我正在使用rasa 1.0.7,并且具有管道:supervised_embeddings
例如
nlu.md文件:
##regex.names
- [a-zA-Z\s]+$
##intent:inform
- John
- Roshan
- Sanvi
–> have few more
如果用户使用任何新名称表示,则我的实体为空。还要附加 rasa交互式消息。
您的输入->约翰
意图“通知”是否正确[John](姓名),并且所有实体的标签都正确吗? (是/否)
您的输入->肾上腺素
您的NLU模型的意图是“告知”,分类为“肾上腺”,没有任何实体,对吗? (是/否)
当指定用户名时,我应该怎么做才能使机器人理解?我在某处看到可以使用查找表。但是当我尝试使用查找表时,它仍然无法识别出不是培训示例一部分的user_name。
我引用的以下链接。
https://forum.rasa.com/t/regex-entity-names/11739/10
How rasa_nlu using lookup_tables for entity extraction?
但是我的运气不好。我也可以接受任何选择。
谢谢。
答案 0 :(得分:1)
对于该特定实体,您可以使用尺寸为SpaCyEntityExtractor
的{{1}}而不是PERSON
。对于个人名称识别,这几乎总会给您带来更好的结果,因为存在太多的名称可能性。 AFAIK CRFEntityExtractor
SpaCy模型本身区分大小写。您仍然可以使用PERSON
提取其他自定义实体。在您的管道中,它看起来像:
CRFEntityExtractor