自然语言处理(NLP)—— rasa的测试

1. 测试 Rasa NLU 模型

        运行 `rasa test nlu` 命令会测试你的 Rasa NLU 模型。这个命令主要做以下几件事情:

1.1 意图识别测试

        检查模型在识别用户意图方面的性能。这包括每个意图的准确率、召回率和 F1 得分。

1.2 实体提取测试

        检查模型在识别和提取预定义实体方面的性能。同样会计算准确率、召回率和 F1 得分。

1.3 交叉验证测试

        如果没有提供专门的测试数据集,命令将执行交叉验证。交叉验证是一种统计方法,用于评估并比较学习算法的性能,通过将数据集分成训练和测试数据的多个组合来进行。

1.4 结果报告

        在执行测试后,你会得到一个报告,通常是在一个新创建的 `results` 文件夹中。这个报告详细说明了模型的性能,并包括意图和实体的混淆矩阵、分类报告和错误预测的例子。

1.5 模型对比

        如果你有多个模型或多个配置,并且你想比较它们的性能,这个命令可以帮助你通过在相同数据集上运行它们来评估它们的性能差异。

        确保 `data/nlu.yml` 包含了你的 NLU 训练数据,并且 `config.yml` 包含了 NLU 模型的配置信息。这个测试对于理解你的 NLU 模型在实际使用中可能的性能表现至关重要,同时也是迭代改进模型的一个重要部分。

2. 如何使用 spaCy

        使用 spaCy 作为 Rasa 的一部分涉及以下几个步骤:

2.1 安装 spaCy

        首先,你需要安装 spaCy 以及相应语言模型。可以通过以下命令安装:

pip install spacy
python -m spacy download en_core_web_md

        确保选择一个适合你的语言和需求的模型。`en_core_web_md` 是针对英语的中等大小模型,提供了词性标注、句法分析以及实体识别的能力。

2.2 配置 Rasa 使用 spaCy

        在你的 Rasa 配置文件(通常是 `config.yml`)中,需要加入以下几行来使用 spaCy:

pipeline:
- name: SpacyNLP
  model: "en_core_web_md"
- name: SpacyTokenizer
- name: SpacyFeaturizer
- name: SpacyEntityExtractor
- name: EntitySynonymMapper
- name: SklearnIntentClassifier

2.3 训练 Rasa 模型

        配置好了 spaCy 后,你就可以像往常一样训练 Rasa 模型了。使用以下命令来进行训练:

rasa train

2.4 使用 spaCy 进行实体提取

        在你的 NLU 训练数据中,你可以通过指定实体类型来标注实体,spaCy 实体提取器将能识别这些实体。比如:

nlu:
- intent: search_flight
  examples: |
    - I want to fly from [Berlin](location) to [San Francisco](location)
    - Show me flights to [Paris](location)

2.5 注意事项

        在你的 Rasa 项目中使用 spaCy 之前,确保你的 Rasa 版本和 spaCy 版本兼容。使用 spaCy 会影响你的 NLU 模型的性能,因为 spaCy 的模型通常比 Rasa 默认使用的 TensorFlow Embedding 更为复杂。如果使用的是其他语言,需要下载对应语言的 spaCy 模型并在配置文件中相应地更新。

3. 知识驱动技术

        在 Rasa 中,你可以集成多种技术来增强聊天机器人的能力。以下是你提到的每种技术类型的一些 Rasa 组件或相关的实现方式:

3.1 本体论 (Ontology)

        在 Rasa 中并没有内置直接支持本体论的组件。但是,你可以利用自定义 actions 来集成外部的本体论管理系统,比如使用 [OWL](https://www.w3.org/OWL/) (Web Ontology Language) 或其他本体论框架。

3.2 逻辑推理

        同上,逻辑推理通常需要通过外部服务或自定义代码在 actions 中实现。

3.3 词网 (WordNet)

        不是 Rasa 的直接组件。但是,你可以使用如 [NLTK](https://www.nltk.org/) 这样的自然语言处理库来访问词网,并在自定义 actions 中使用它。

3.4 同义词

        在 NLU 管道中,可以通过查找表(lookup tables)或同义词(synonyms)功能来实现同义词识别。

4. 学习驱动技术

4.1 频率方法

        Rasa 的意图分类器(如 `RegexIntentClassifier`)可以基于正则表达式匹配使用频率方法。

4.2 统计机器学习

        `DIETClassifier` 是一个基于 Transformer 的模型,能同时进行意图识别和实体识别。`CRFEntityExtractor` 是基于条件随机场(CRF)的实体提取器。

4.3 深度学习

        `ResponseSelector` 用于检索式响应选择。`TEDPolicy` 使用 Transformer 模型来预测对话中的下一步行为。

5. 语法驱动技术

5.1 句法分析

        Rasa 没有内置句法分析工具,但你可以集成如 [spaCy](https://spacy.io/) 的 NLP 库来执行句法分析。

5.2 正则表达式

        `RegexFeaturizer` 可以基于用户提供的正则表达式生成消息特征。`RegexEntityExtractor` 可以使用正则表达式来识别和提取消息中的实体。

5.3 词形归并

        `SpacyNLP` 与 spaCy 集成,提供词形归并功能。

5.4 形态分析

        同上,`SpacyNLP` 组件可以进行形态分析。

6. 经典的 Rasa NLU Pipeline 配置示例

        以下是一些 Rasa NLU pipeline 的经典配置示例:

6.1 基于 spaCy 的 Pipeline

        适用于需要利用 spaCy 的强大语言处理能力,特别是在句法分析方面。

language: "en"

pipeline:
- name: SpacyNLP
- name: SpacyTokenizer
- name: SpacyFeaturizer
- name: SpacyEntityExtractor
- name: DIETClassifier
  epochs: 100
- name: EntitySynonymMapper
- name: ResponseSelector
  epochs: 100

6.2 基于 TensorFlow 的 Pipeline

        适用于需要深度学习和自定义实体提取的场景。

language: "en"

pipeline:
- name: WhitespaceTokenizer
- name: RegexFeaturizer
- name: LexicalSyntacticFeaturizer
- name: CountVectorsFeaturizer
- name: CountVectorsFeaturizer
  analyzer: "char_wb"
  min_ngram: 1
  max_ngram: 4
- name: DIETClassifier
  epochs: 100
  constrain_similarities: true
- name: EntitySynonymMapper
- name: ResponseSelector
  epochs: 100
- name: FallbackClassifier
  threshold: 0.3
  ambiguity_threshold: 0.1

6.3 基于 BERT 的 Pipeline (使用 Rasa 2.0 及以上)

        适用于想要使用 BERT 或类似预训练转换器模型进行意图识别和实体提取的场景。

language: "en"

pipeline:
- name: HFTransformersNLP
  model_name: "bert"
  model_weights: "rasa/LaBSE"
- name: LanguageModelTokenizer
- name: LanguageModelFeaturizer
- name: DIETClassifier
  epochs: 200
  constrain_similarities: true
- name: EntitySynonymMapper
- name: ResponseSelector
  epochs: 200

6.4 基于规则的 Pipeline

        适用于那些想要以规则为基础进行实体提取和意图分类的简单场景。

language: "en"

pipeline:
- name: WhitespaceTokenizer
- name: RegexFeaturizer
- name: RegexEntityExtractor
- name: CRFEntityExtractor
- name: EntitySynonymMapper
- name: SklearnIntentClassifier

7. 默认 Pipeline

pipeline:

# No configuration for the NLU pipeline was provided. The following default pipeline was used to train your model.
# If you'd like to customize it, uncomment and adjust the pipeline.
# See https://rasa.com/docs/rasa/tuning-your-model for more information.

# 1. 符号化器
- name: WhitespaceTokenizer

# 2. 特征提取器
- name: RegexFeaturizer
- name

: LexicalSyntacticFeaturizer
- name: CountVectorsFeaturizer
- name: CountVectorsFeaturizer
  analyzer: char_wb
  min_ngram: 1
  max_ngram: 4

# 3. 意图分类器
- name: DIETClassifier
  epochs: 100
  constrain_similarities: true

# 4. 实体提取器
- name: EntitySynonymMapper

# 5. 响应选择器
- name: ResponseSelector
  epochs: 100
  constrain_similarities: true

# 6. 回退分类器
- name: FallbackClassifier
  threshold: 0.3
  ambiguity_threshold: 0.1

相关推荐

  1. 自然语言处理(NLP)—— rasa测试

    2024-06-09 12:44:01       25 阅读
  2. 自然语言处理发展

    2024-06-09 12:44:01       51 阅读
  3. 自然语言处理发展

    2024-06-09 12:44:01       55 阅读
  4. 自然语言处理发展

    2024-06-09 12:44:01       58 阅读
  5. 自然语言处理发展

    2024-06-09 12:44:01       59 阅读
  6. 自然语言处理发展

    2024-06-09 12:44:01       54 阅读
  7. 【AI 测试自然语言处理(NLP)类项目如何测试

    2024-06-09 12:44:01       31 阅读
  8. 自然语言处理语言模型

    2024-06-09 12:44:01       71 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-09 12:44:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-09 12:44:01       101 阅读
  3. 在Django里面运行非项目文件

    2024-06-09 12:44:01       82 阅读
  4. Python语言-面向对象

    2024-06-09 12:44:01       91 阅读

热门阅读

  1. 支持向量机(SVM): 从理论到实践的指南(1)

    2024-06-09 12:44:01       29 阅读
  2. Web前端Text:深入解析与实践应用

    2024-06-09 12:44:01       30 阅读
  3. 多关键字排序

    2024-06-09 12:44:01       28 阅读
  4. opencv

    opencv

    2024-06-09 12:44:01      31 阅读
  5. HTML5表单元素:重塑数据收集的艺术

    2024-06-09 12:44:01       31 阅读
  6. 面试高频问题----6

    2024-06-09 12:44:01       34 阅读
  7. ssh版本升级

    2024-06-09 12:44:01       30 阅读
  8. 二叉树小结

    2024-06-09 12:44:01       27 阅读
  9. Unix环境高级编程第二版:深入探索与实战解析

    2024-06-09 12:44:01       28 阅读
  10. 合并两个有序的单链表

    2024-06-09 12:44:01       26 阅读
  11. pinia 监听数据的变化

    2024-06-09 12:44:01       31 阅读