📜  rasa 实体提取 (1)

📅  最后修改于: 2023-12-03 15:04:47.752000             🧑  作者: Mango

Rasa 实体提取

Rasa 是一种机器学习框架,可以用来构建和部署聊天机器人。其中一个关键的组件就是实体提取,它可以从用户输入中提取重要信息,以便机器人能够理解用户意图并正确响应。

在本文中,我将介绍如何使用 Rasa 进行实体提取。

安装依赖

首先,你需要安装 Rasa:

pip install rasa
定义实体

在 Rasa 中,实体就是你希望从用户输入中提取的信息。例如,如果你正在构建一个订餐机器人,你可能需要提取“食物类型”、“餐厅名称”和“送餐地址”等信息。为了使用 Rasa 进行实体提取,你需要定义这些实体。

在 Rasa 中,你可以使用训练数据的格式来定义实体。例如,假设你有以下的训练数据:

## intent: order_food
- I want to order a pizza from [Pizza Hut](restaurant) and have it delivered to [123 Main St.](address).

在这个例子中,“餐厅名称”和“送餐地址”都被放在方括号中,表示它们是实体。要在 Rasa 中定义实体,只需在 domain.yml 文件中添加以下条目:

entities:
  - restaurant
  - address

这告诉 Rasa 你希望提取的实体类型。

提取实体

一旦你定义了实体类型,你就可以开始在用户输入中提取实体了。要在 Rasa 中提取实体,你需要定义一个 nlu.md 文件,其中包含一个正则表达式,该表达式捕获你定义的实体类型。例如,假设你有以下的 nlu.md 文件:

## intent: order_food
- I want to order a pizza from [Pizza Hut](restaurant) and have it delivered to [123 Main St.](address).

要在 Rasa 中提取实体,你需要定义一个实体提取器,并将其添加到 Rasa 的管道中。在 config.yml 文件中添加以下内容来定义一个 CRF 实体提取器:

pipeline:
  - name: "WhitespaceTokenizer"
  - name: "CRFEntityExtractor"
  - name: "EntitySynonymMapper"

在此示例中,我们使用了 WhitespaceTokenizer 对用户输入进行分词,然后使用 CRF 实体提取器对实体进行提取。最后,我们使用 EntitySynonymMapper 将同义词映射到实体上。

结论

这是使用 Rasa 进行实体提取的基本步骤。通过定义实体类型和实体提取器,你可以轻松地从用户输入中提取实体,并将其用于机器人执行操作。