Rasa 不会从意图实体中保存插槽

问题描述 投票:0回答:1

rasa 框架的新手。我一直在尝试制作一个简单的机器人,它可以简单地识别我提供我的名字的意图,然后 rasa 以包含我的名字的短语回应。问题是它似乎确实识别了意图,但如果我给它的名字没有包含在其中一个示例中,那么响应只包含 none 而不是我的名字(意味着插槽是空的)。我认为这是因为缺少示例,但我添加了 20 多个。如果提供的名称是示例中提供的名称之一,它只会填充该插槽。

此外,我似乎无法使用规则。我假设在技术层面上我可以只使用规则来解决一次性问题,例如提供名称和机器人响应你好,name。如果这是一个故事,我只能得到回应。

规则.yml:


# ask name confirmation
- rule: ask name confirmation
  steps:
  - intent: inform_name
  - action: utter_greet_with_name

# respond with name
- rule: respond with name
  steps:
  - action: utter_respond_with_name

# respond without name
- rule: respond without name
  condition:
  - slot_was_set:
      - name: null
  steps:
  - action: utter_respond_without_name

nlu.yml:

- intent: inform_name
  examples: |
    - I'm [Sarah](name).
    - Hi, my name is [Chris](name).
    - You can call me [Alex](name).

故事.yml:

stories:

- story: path 1
  steps:
  - intent: greet
  - action: utter_greet
  - intent: inform_name
  - action: utter_greet_with_name
  - intent: ask_name
  - action: utter_respond_with_name

- story: path 2
  steps:
  - intent: greet
  - action: utter_greet
  - intent: ask_name
  - action: utter_respond_without_name

domain.yml 的一部分

entities:
  - name

# Define the 'name' slot with the 'from_text' mapping
slots:
  name:
    type: text
    influence_conversation: true
    mappings:
      - type: from_entity
        entity: name

谢谢!

使用示例中提到的名称。

tensorflow chatbot rasa rasa-nlu
1个回答
0
投票

通常,根据您的实体类别,您可以从不同的实体提取器中受益。您可以将 Duckling、SpaCy 和 CRF 添加到您的 Rasa 管道中。在这里,我建议使用

SpacyEntityExtractor
,因为它有一个预训练模型,非常适合识别名称、公司等。

这里需要先安装Spacy lib.

python -m pip install -U rasa[spacy]
python -m spacy download en_core_web_lg

然后您可以在

config.yml
中设置管道并添加以下行以部署实体提取器。

name: "SpacyNLP"
# language model to load
model: "en_core_web_lg"

- name: "SpacyEntityExtractor"
  dimensions: ["PERSON"]

有关如何设置配置的更好说明,请参阅Rasa 文档

© www.soinside.com 2019 - 2024. All rights reserved.