Rasa 中 JiebaTokenizer, LanguageModelFeaturizer 与 DIETClassifier 各自的作用及区别

更新日期: 2023-04-22 阅读次数: 2927 字数: 1027 分类: AI

虽然我已经 用 Rasa 实现了中文自动问答机器人功能,但是里面 pipeline 的配置,其实我完全没看明白各个组件起到的作用。我已经很认真地读了几遍官方文档关于各个组件的描述,英文/中文文档都看了不少,对我来说太晦涩了,无法理解。

但是这个项目除了要实现功能,还要做成 PPT 给合作方讲解,对方有深度学习的专家教授,这就更尴尬了。只能临时抱佛脚求助 ChatGPT,没想到 AI 给出的解释通俗易懂,真大哥也。

除了口头禅 “总之”,其他都挺好的。

rasa 中 DIETClassifier 的作用

在 Rasa 中,DIETClassifier 是一种用于意图分类和实体提取的深度学习模型。它基于transformer的架构,使用了一个双向的循环神经网络(RNN)来处理输入文本,并生成一个上下文相关的表示。这个表示同时包括了文本中的语义信息、实体信息以及对话历史信息。

使用 DIETClassifier 可以显著提高机器人的性能,因为它可以从更全面的角度理解用户的输入,并精确地确定用户的意图和提取所需的实体信息。此外,DIETClassifier 还可以通过正则化、Dropout等技巧来避免过拟合,从而提高模型的泛化能力。总之,DIETClassifier 是 Rasa 机器人的核心组件之一,可以大幅提升机器人的智能水平和交互效果。

rasa 中 LanguageModelFeaturizer 与 DIETClassifier 的区别

在 Rasa 中,LanguageModelFeaturizer 和 DIETClassifier 都是用于意图分类和实体提取的关键组件,但它们的作用不同。

LanguageModelFeaturizer 主要用于将输入文本转换成句子嵌入向量(sentence embedding vector),这些向量捕捉了文本中的语义信息。它使用预训练的语言模型来生成这些句子嵌入向量,例如 Google 的 BERT 模型或 OpenAI 的 GPT-3 模型。在生成这些向量后,LanguageModelFeaturizer 将其传递给 DIETClassifier,DIETClassifier 然后使用这些向量来进行意图分类和实体提取。

相对应地,DIETClassifier 是一个深度学习模型,它接受从LanguageModelFeaturizer传递过来的句子嵌入向量,并结合一定数量的对话历史信息,通过神经网络计算得出一系列分类结果,包括意图、实体、情感等信息。DIETClassifier 不仅可以对每个用户输入进行意图分类和实体提取,而且还可以自动根据上下文生成机器人的回复。

总之,LanguageModelFeaturizer 和 DIETClassifier 这两个组件在 Rasa 机器人中通常是必需的,因为它们能够有效地捕获用户输入中的语义信息并提高机器人的性能。但是,它们的作用是有所不同的:LanguageModelFeaturizer 生成句子嵌入向量,DIETClassifier 则使用这些向量进行分类和回复生成。

rasa 中 LanguageModelFeaturizer 与 JiebaTokenizer 的区别

在 Rasa 中,LanguageModelFeaturizer 和 JiebaTokenizer 是两个不同的组件,它们的作用也不同。

JiebaTokenizer 主要是用于对中文文本进行分词和词性标注。它会根据用户输入的句子将其分割成一个个单独的词语,并为每个词语添加一个标记表示其词性。这样做有助于提高机器人对中文文本的理解能力,从而更准确地进行意图分类和实体提取。

相比之下,LanguageModelFeaturizer 则主要用于生成句子嵌入向量,帮助 DIETClassifier 模型更好地理解输入文本中的语义信息。它使用预训练的语言模型(例如 BERT 或 GPT-3)来计算出句子嵌入向量,并将其传递给 DIETClassifier 进行意图分类和实体提取。

总之,JiebaTokenizer 和 LanguageModelFeaturizer 都是 Rasa 机器人中非常重要的组件,但它们的作用不同。JiebaTokenizer 用于将中文文本进行分词和词性标注,帮助机器人更好地理解用户输入;而 LanguageModelFeaturizer 则用于生成句子嵌入向量,帮助 DIETClassifier 更好地理解输入文本中的语义信息。

进阶

消化完 ChatGPT 的解释之后,可以看一下 rasa 官方的视频教程:

https://www.youtube.com/watch?v=vWStcJDuOUk&list=PL75e0qA87dlG-za8eLI6t0_Pbxafk-cxb&index=2

看视频,我最初的目的是纠正一下自己对一些术语的发音,避免解说时的尴尬。rasa 发音是 raza, 而不是 rasa.

看的过程中,发现还顺便理解了一些概念,哈哈。

比如,为何 bert 用来生成向量,实际上就类似 pytorch 模型的输入需要时 tensor 张量一样,向量是张量的一种。

tags: rasa

关于作者 🌱

我是来自山东烟台的一名开发者,有敢兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式