首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我可以添加更多的数据到狙击-nlu的动态?

我可以添加更多的数据到狙击-nlu的动态?
EN

Stack Overflow用户
提问于 2019-07-31 16:52:07
回答 1查看 446关注 0票数 0

我正在使用snips-nlu创建一个“简单”的聊天机器人来管理某些任务。但是我似乎对如何(如果可能的话)在运行时添加新的意图缺乏理解。

我面临的问题是,假设我的yaml文件中有以下内容:

代码语言:javascript
复制
type: intent
name: questionAboutFood
slots:
  - name: foodType
    entity: foodType
utterances:
  - what color is a [foodType]
  - where can I buy a [foodType]
---
type: entity
name: foodType
automatically_extensible: yes
values:
  - banana
  - apple
  - orange

从这个文件,我可以把它安装到我的剪贴画-nlu引擎。但是,如何在运行时追加更多的foodTypes?

代码:

代码语言:javascript
复制
from snips_nlu import SnipsNLUEngine
from snips_nlu.default_configs import CONFIG_EN
import io
import json

seed = 42
engine = SnipsNLUEngine(config=CONFIG_EN, random_state=seed)
with io.open("dataset.json") as f:
    dataset = json.load(f)
engine.fit(dataset)
parsing = self.engine.parse("what color is the apple?")
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-08 13:41:21

我可以看到两个解决办法:

重列

其中一种方法是使用使用附加实体值更新的数据集动态地重新训练engine。这可能是一个合理的解决方案,如果您的数据集不是太大,因为培训将相当快。

改进数据集

另一种解决方案是在yaml文件中提供更多的意图公式,以便生成的engine能够提取不可见的实体值。在您的例子中,您只提供了两个公式,其中实体是最后一个令牌。此外,您提供的实体值仅为unigram。由于这些原因,NLU引擎很可能无法捕获跨多个标记和/或位于句子中间的实体。

这里有一个稍微好一点的数据集,它已经可以更好地概括了:

代码语言:javascript
复制
type: intent
name: questionAboutFood
slots:
  - name: foodType
    entity: foodType
utterances:
  - what color is a [foodType]
  - what is the color of an [foodType] in general
  - how much does an [foodType] cost
  - can you describe a [foodType] for me please
  - in which country is [foodType] generally found
  - where can I buy a [foodType]
  - how big are [foodType] in average

---
type: entity
name: foodType
automatically_extensible: yes
values:
  - banana
  - apple
  - orange
  - red meat
  - black eyed pea
  - brussels sprouts
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57295654

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档