Rasa NLU示例:开源机器学习组件库
项目介绍
Rasa NLU示例是一个与Rasa兼容的开源机器学习组件库。该项目旨在鼓励实验,并快速支持更多工具。通过将这些组件开源,它们不需要经过与Rasa核心组件相同的审查过程,从而使得贡献新想法变得更加容易。
这些组件并非官方支持,但项目中包含了单元测试和文档。该项目应被视为社区项目,而不是Rasa核心的一部分。如果某个组件被证明对更大的Rasa社区有用,我们可能会将该组件的功能移植到Rasa核心中。
项目技术分析
安装
要使用这些工具,您需要通过Git进行安装:
python -m pip install "rasa_nlu_examples @ git+https://github.com/RasaHQ/rasa-nlu-examples.git"
如果您需要安装可选依赖项,可以使用以下命令:
python -m pip install "rasa_nlu_examples[flashtext] @ git+https://github.com/RasaHQ/rasa-nlu-examples.git"
python -m pip install "rasa_nlu_examples[dateparser] @ git+https://github.com/RasaHQ/rasa-nlu-examples.git"
python -m pip install "rasa_nlu_examples[thai] @ git+https://github.com/RasaHQ/rasa-nlu-examples.git"
python -m pip install "rasa_nlu_examples[fasttext] @ git+https://github.com/RasaHQ/rasa-nlu-examples.git"
python -m pip install "rasa_nlu_examples[all] @ git+https://github.com/RasaHQ/rasa-nlu-examples.git"
文档
您可以在这里找到该项目的文档。
兼容性
该项目目前支持Rasa 3.0的组件。对于旧版本,请参阅以下列表:
- version 0.1.3 是Rasa 1.10的最终版本
- version 0.2.8 是Rasa 2.8的最终版本
项目及技术应用场景
Tokenizers
Tokenizers可以将输入文本分割成tokens。根据您选择的Tokenizer,您还可以选择应用词形还原。对于具有丰富语法特征的语言,这可能有助于减少所有可能tokens的数量。
Featurizers
Dense featurizers为每个token以及整个utterance附加密集的数值特征。这些特征稍后会被意图分类器和实体检测器在管道中使用。
rasa_nlu_examples.featurizers.dense.FastTextFeaturizer
文档rasa_nlu_examples.featurizers.dense.BytePairFeaturizer
文档rasa_nlu_examples.featurizers.dense.GensimFeaturizer
文档rasa_nlu_examples.featurizers.sparse.TfIdfFeaturizer
文档rasa_nlu_examples.featurizers.sparse.HashingFeaturizer
文档
Intent Classifiers
意图分类器是预测用户消息文本意图的模型。Rasa NLU的默认意图分类器是DIET模型,它可能计算量较大,特别是如果您不需要检测实体时。我们在这里提供了一些替代的意图分类器示例。
rasa_nlu_examples.classifiers.NaiveBayesClassifier
文档rasa_nlu_examples.classifiers.LogisticRegressionClassifier
文档
Entity Extractors
rasa_nlu_examples.extractor.FlashTextEntityExtractor
文档rasa_nlu_examples.extractor.DateparserEntityExtractor
文档
Name Lists
语言模型通常在西方数据集上进行训练。这意味着报告的基准可能不适用于您的用例。例如,在法国文本中检测名称与在马达加斯加文本中检测名称不同。即使法语在两个国家都活跃使用,其公民的名称可能如此不同,以至于您不能假设基准普遍适用。
为了解决这个问题,我们开始收集名称列表。这些可以作为查找表,由Rasa的RegexEntityExtractor或我们的FlashTextEntityExtractor使用。它不会100%完美,但应该提供一个合理的起点。
您可以在这里找到名称列表。我们目前提供美国、德国以及常见的阿拉伯语名称列表。欢迎提交PR以添加更多语言的名称列表。我们也渴望收到反馈。
项目特点
- 开源与社区驱动:该项目由社区驱动,鼓励实验和快速支持更多工具。
- 丰富的组件库:提供了多种Tokenizers、Featurizers、Intent Classifiers和Entity Extractors,满足不同需求。
- 灵活的安装与配置:支持通过Git安装,并提供了详细的配置示例,方便用户快速上手。
- 多语言支持:特别关注非西方语言的处理,提供了泰语Tokenizer和多语言名称列表。
- 易于贡献:项目鼓励用户贡献新功能、报告错误或分享实验结果,通过GitHub Issue进行交流。
总结
Rasa NLU示例是一个强大的开源机器学习组件库,特别适合那些希望在Rasa框架中进行实验和扩展的用户。无论您是初学者还是经验丰富的开发者,这个项目都提供了丰富的工具和资源,帮助您构建更智能的对话系统。立即尝试并加入社区,共同推动对话系统的发展!
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考