Rasa是一个开源机器学习框架,用于构建上下文AI助手和聊天机器人。

Rasa有两个主要模块:

  • Rasa NLU:用于理解用户消息,包括意图识别和实体识别,它会把用户的输入转换为结构化的数据。
  • Rasa Core:是一个对话管理平台(同时处理多个对话,互不干扰|上下文信息会存储到如redis中,进行管理),用于举行对话和决定下一步做什么。

首先介绍一下rasa中nlu模块自带的组件,然后给出一些常用的pipeline配置方式,最后介绍如何添加自定义组件以及如何配置它们。

  • word vector source

    • MitieNLP
    • SpacyNLP
  • Tokenizers

    • WhitespaceTokenizer
    • JiebaTokenizer
    • MitieTokenizer
  • Featurizers

    • MitieFeaturizer
    • SpacyFeaturizer
    • ConveRTFeaturizer

    • RegexFeaturizer

    • CountVectorsFeaturizer
  • Intent Classifiers

    • KeywordIntentClassifier
    • MitieIntentClassifier
    • SklearnIntentClassifier
    • EmbeddingIntentClassifier
  • Selectors

    • Response Selector
  • Entity Extractors

    • MitieEntityExtractor
    • SpacyEntityExtractor
    • EntitySynonymMapper
    • CRFEntityExtractor
    • DucklingHTTPExtractor

1、词向量构建:

(1)mitieNLP

config.yml中配置如下:

pipeline:

- name: "MitieNLP"

# 语言模型

model: "data/total_word_feature_extractor_zh.dat"

(2)spacyNLP

config.yml文件配置如下:

pipeline:

- name: "SpacyNLP"

# 指定语言模型

model: "en_core_web_md"

# 设定在检索单词向量时,这将决定单词的大小写是否相关

# 当为false时,表示不区分大小写。比如`hello` and `Hello`

# 检索到的向量是相同的。

case_sensitive: false

2、tokenizer:

(1)whitespacetokenizer

config.yml文件配置如下:

pipeline:

- name: "WhitespaceTokenizer"

# 指定是否大小写敏感,默认true为敏感

case_sensitive: false

(2)jiebatokenizer

config.yml文件配置如下:

pipeline:

- name: "JiebaTokenizer"

# 指定自定义词典

dictionary_path: "path/to/custom/dictionary/dir"

(3)mitietokenizer

config.yml文件配置如下:

pipeline:

- name: "MitieTokenizer"

(4)spacytokenizer

config.yml文件配置如下:

pipeline:

- name: "SpacyTokenizer"

(5)converttokenizer

config.yml文件配置如下:

pipeline:

- name: "ConveRTTokenizer"

3、featurizer

(1)MitieFeaturizer

(2)SpacyFeaturizer

(3)ConveRTFeaturizer

(4)regexFeaturizer

(5)countvectorsFeaturizer

4、intent classifier

(1)mitie intent classifiers

(2)sklearn intent classifiers

(3)embedding intent classifiers

(4)keyword intent classifiers

5、selectors

6、entity extractors

(1)mitie entity extractors

(2)spacy entity extractors

(3)duckling http extractors

(4)crf entity extractors

(5)entity synonym mapper

nlu模块主要用于识别用户输入的message中的intent和entity,nlu模块提供了pipeline方式调用这种组件。pipeline调用时组件是顺序执行的,每个组件处理输入并给出输出,输出可以被该组件之后的任何组件使用。

在nlu模块中,提供了集中template pipeline,如pretrained_embedding_spacy、supervised_embeddings。

1、pretrained_embedding_spacy

config.yml中配置如下

language: "en"

pipeline: "pretrained_embeddings_spacy"

等价于:

language: "en"

pipeline:
- name: "SpacyNLP" # 预训练词向量
- name: "SpacyTokenizer" # 文本分词器
- name: "SpacyFeaturizer" # 文本特征化
- name: "RegexFeaturizer" # 支持正则表达式
- name: "CRFEntityExtractor" # 实体提取器
- name: "EntitySynonymMapper" # 实体同义词映射
- name: "SklearnIntentClassifier" # 意图分类器

pretrained_embeddings_spacy管道使用GloVe或 fastText的预训练词向量,因此,它的优势在于当你有一个训练样本如I want to buy apples,Rasa会预测意图为get pears。因为模型已经知道“苹果”和“梨”是非常相似的。如果没有足够大的训练数据,这一点尤其有用。

2、supervised_embeddings

config.yml中配置如下

language: "en"

pipeline: "supervised_embeddings"

等价于:

language: "en"

pipeline:
- name: "WhitespaceTokenizer" # 分词器
- name: "RegexFeaturizer" # 正则
- name: "CRFEntityExtractor" # 实体提取器
- name: "EntitySynonymMapper" # 同义词映射
- name: "CountVectorsFeaturizer" # featurizes文本基于词
- name: "CountVectorsFeaturizer" # featurizes文本基于n-grams character,保留词边界
analyzer: "char_wb"
min_ngram: 1
max_ngram: 4
- name: "EmbeddingIntentClassifier" # 意图分类器

 supervised_embeddings 管道不使用任何的预训练词向量或句向量,而是针对自己的数据集特别做的训练。它的优势是面向自己特定数据集的词向量(your word vectors will be customised for your domain),比如,在通用英语中,单词“balance” (平衡)与单词 “symmetry”(对称)意思非常相近,而与单词"cash"意思截然不同。但是,在银行领域(domain),“balance”与"cash"意思相近,而supervised_embeddings训练得到的模型就能够捕捉到这一点。该pipline不需要任何指定的语言模型,因此适用于任何语言,当然,需要指定对应的分词器。比如默认使用WhitespaceTokenizer,对于中文可以使用Jieba分词器等等,也就是该Pipline的组件是可以自定义的。

还有一些例如pretrained_embeddings_convert、mitie等template pipeline。当然,pipeline的配置非常的灵活,我们可以自定义pipeline中的组件,实现不同特性的pipeline。

reference:

Components

【RASA】NLU模块组件分析相关推荐

  1. 【机器学习】Rasa NLU以及Rasa Core概念和语法简介(超详细必看)

    觉得有帮助请点赞关注收藏~~~ 一.Rasa简介 Rasa是一个开源机器学习框架,可以用于构建基于文本和语音的对话驱动型自动化智能客服助手,能够克服传统客服的部分缺陷,在Windows操作系统环境下, ...

  2. 章节五:RASA NLU组件介绍--语言模型和分词器

    ​ 这里写目录标题 一.前言 二.语言模型组件 1.MitieNLP 2.SpacyNLP 三.分词器 1.WhitespaceTokenizer 2.JiebaTokenizer 3.MitieTo ...

  3. 章节七:RASA NLU组件介绍--意图分类器和实体提取器

    目录 一.前言 二.意图分类器 2.1 MitieIntentClassifier 2.2 LogisticRegressionClassifier 2.3 SklearnIntentClassifi ...

  4. 字节码技术在模块依赖分析中的应用

    背景 近年来,随着手机业务的快速发展,为满足手机端用户诉求和业务功能的迅速增长,移动端的技术架构也从单一的大工程应用,逐步向模块化.组件化方向发展.以高德地图为例,Android 端的代码已突破百万行 ...

  5. Rasa课程、Rasa培训、Rasa面试系列之: Rasa NLU意图和实体-分词器

    Rasa课程.Rasa培训.Rasa面试系列之: Rasa NLU意图和实体-分词器 在Rasa项目中,NLU管道定义了将非结构化用户消息转换为意图和实体的处理步骤.它由一系列组件组成,可以由开发人员 ...

  6. datawhale深入浅出Pytorch02——Pytorch各个模块组件

    Task02 Pytorch各个模块组件 本文主要参考DataWhale开源学习--深入浅出Pytorch,GitHub地址:https://github.com/datawhalechina/tho ...

  7. 1.Understanding the Rasa NLU Pipeline

    在Rasa项目中,NLU管道定义了将非结构化用户消息转换为意图和实体的处理步骤. 它由一系列组件组成,开发人员可以对其进行配置和定制. 本文的目的是解释各个组件在Rasa NLU管道中扮演的角色,并解 ...

  8. 13. Vue组件分析

    一.什么是组件 组件(Component)是 Vue.js 最强大的功能之一. 组件可以扩展 HTML 元素,封装可重用的代码. 组件系统让我们可以用独立可复用的小组件来构建大型应用,几乎任意类型的应 ...

  9. YOLOV4各个创新功能模块技术分析(三)

    YOLOV4各个创新功能模块技术分析(三) 八.数据增强相关-Stylized-ImageNet 论文名称:ImageNet-trained cnns are biased towards textu ...

  10. YOLOV4各个创新功能模块技术分析(二)

    YOLOV4各个创新功能模块技术分析(二) 四.数据增强相关-GridMask Data Augmentation 论文名称:GridMask Data Augmentation 论文地址:https ...

最新文章

  1. spring--(19)切面优先级
  2. Packstack安装havana后,计算节点连接DB错误解决
  3. java static 修饰变量吗_Java面试 - static 修饰的变量和方法有哪些特点?
  4. 触发2次 layui_[电路小知识篇]D型触发器电路
  5. 格力手机没有放弃!将跟上5G和柔性屏的大势
  6. 物联网核心安全系列——智能监控安全问题
  7. 1007 计算(a+b)*c的值
  8. 网上订餐系统的设计与实现(论文+源码)_kaic
  9. 干货收藏!小伙做自媒体半年得5万,分享6大必备素材网
  10. NHibernate Step by Step (三) Configuration和Sessionfactory
  11. 2000字谏言,给那些想学Python的人,建议收藏后细看!
  12. 软文推广标题的写法,怎么才能让软文标题更有吸引力
  13. 静态页面:html5个人博客模板《绅士》
  14. 经典黑白搭配 现代简约风格设计美学精神
  15. 算法训练Day6:有效的字母异位词, 两个数组的交集,快乐数,两数之和
  16. bandit agent下棋AI(python编写) 通过强化学习RL 使用numpy
  17. grep -q的用法
  18. Markdown语法教程
  19. python之循环语句(for循环)
  20. 【shell】Linux Shell远程执行命令

热门文章

  1. 解读《一首有趣的回环诗~秦观》
  2. 一文让你理解什么是shallow heap及retained heap
  3. python对数正态分布函数_scipy,对数正态分布-参数
  4. 微信小程序(五)新版的用户授权和判断是否是否已经授权和自动提示更新版本
  5. 【游戏客户端】实现游戏中的小地图
  6. 【转载】SAP_ECC6.0_EHP4或SAP_ECC6.0_EHP5_基于Windows_Server_2008R2_和SQL_server_2008下的安装...
  7. Sleepy Cow Sorting(树状数组)
  8. 有趣且有意义的数字,你想到了什么?请不吝留言
  9. 戴尔电脑,耳机插入无反应解决办法
  10. 【矩阵计算】QR分解-基于Householder变换