阿丹:
在翻阅资料之后发现,rasa并不直接支持中文的nlp(自然语言理解)。那么这里就发现了一个东西就是一个其他的人写的这个。先继续学习,这里留一个坑后面时间的时候实践出来并完成一下。
留个坑待实践:
《Ai企业知识库》rasa项目-项目启动命令集-开放api接口启动以及保证多轮对话!!-CSDN博客
拉取rasa源码:
git clone https://github.com/RasaHQ/rasa.git
第一次获取,在PyCharm中第一次打开要主动去设置poetry的路径,可以使用终端中的
where poetry
来快速查找到这个应用文件的位置。
poetry其实和maven一个道理,其实就是用来管理python的依赖的工具。
增强Rasa NlU生命周期
每一个管道都要创建起来。
Rasa是一个开源的机器学习框架,用于构建会话AI应用,如聊天机器人。在Rasa中,pipeline
是Rasa NLU(自然语言理解)部分的核心组件,它负责将原始的用户输入(通常是文本)转换为机器可以理解的结构化数据,包括识别意图(intents)、提取实体(entities)等。Pipeline是一系列有序执行的组件(components),每个组件都有其特定的功能。以下是Rasa中常见的Pipeline组件及其功能概述:
-
Tokenizers:
- WhitespaceTokenizer: 基于空格分词的基本分词器。
- JiebaTokenizer: 专为中国语言设计的分词器,适用于中文文本。
-
Featurizers:
- CountVectorsFeaturizer: 将文本转换为词频向量,用于后续的意图分类和实体识别。
- TF-IDF Featurizer: 类似于CountVectors,但使用TF-IDF权重来强调文档中重要的词汇。
- IntentFeaturizerEmbedding: 利用预训练的词嵌入模型(如Word2Vec, GloVe等)将文本转换成向量表示。
-
Intent Classifiers:
- IntentClassifierTensorFlowEmbedding: 使用TensorFlow模型进行意图分类,支持基于嵌入的分类。
- IntentClassifierSklearn: 基于Scikit-learn的分类器,如SVM、Logistic Regression等,用于意图识别。
-
Entity Extractors:
- CRFEntityExtractor: 使用条件随机场(CRF)模型来识别和提取实体。
- SpacyEntityExtractor: 利用Spacy的命名实体识别(NER)模型来提取实体。
- DucklingEntityExtractor: 时间、日期、数量等实体的精确抽取,基于Duckling库。
- RegexEntityExtractor: 使用正则表达式匹配文本中的模式以提取实体。
-
Transformers-based Components:
- HFTransformersNLP: 使用Hugging Face Transformers库中的模型进行嵌入、分类和实体识别,支持BERT、RoBERTa等多种预训练模型。
-
Miscellaneous Components:
- MitieNLP: 使用MITIE工具包进行NLP处理,包括特征提取和实体识别。
- ConveRTTokenizer & ConveRTFeaturizer: 使用ConveRT模型进行文本编码,适合跨语言任务。
- LanguageModelFeaturizer: 利用语言模型的特征,如Spacy的
en_core_web_md
模型。
每个组件在Pipeline中按顺序执行,前一个组件的输出作为后一个组件的输入,最终产生结构化的输出,如识别出的用户意图和相关的实体信息。开发者可以根据具体需求定制Pipeline,选择最适合项目的组件组合。
小结:整个pipeline会是一种管道的顺序从上到下来完成h进步。
改进NLU方法
组件区分:
Tokenizers(标记器):
做分词,将一段话分为一个一个词,(如果是默认的话是whitespaceTokenizers)一般是用英语的分词。如果是中文的话,其实是有的。
如果是中文的话就有Jieba的分词包。
MITIE训练的时间是很慢的。
目前最好的HanLP
Featurizers特征化
这个都是在config中来配置的,这里官方提供了很多中方法。要根据具体的情况具体的来使用。
这些配置需要根据文档来完成这个。可以参考官方文档。
Models
Intent Classifiers
选择意图识别包
通常选择:
选择意图识别包。
SklearnlntentClassifier(数据量小(用)、速度快)
DIETClassifier(正常推荐的使用的意图识别包)
FallbackClassifier(意图识别包)这个是用来处理定义的意图之外的数据
Entity Extractors实体提取和使用
小知识点:rasa并不直接做模型的训练,rasa也只是调用了,一些开源的工具来帮助训练。
抽取实体:
使用了很多开源的工具包来使用的。
怎么去选择这些组件呢?
这是一个官方的怎么选择正确的组件
How to Handle Multiple Intents Using Rasa NLU TensorFlow Pipeline | The Rasa Blog
总结:
在pipeline管道中使用正确组件来帮助rasa可以正确的识别正确的用户提问的意图。
这是一个用来帮助选择图。