首页 > 其他分享 >《Rasa实战》读书笔记(一)

《Rasa实战》读书笔记(一)

时间:2023-01-23 12:44:53浏览次数:44  
标签:实战 py nlu rasa 3.10 Rasa 读书笔记 intent 版本

安装Rasa需要的Python版本

在3.7 <= python <= 3.10
如果python版本太低或太高,pip安装都将会失败,我用的是3.10版本。
window下python默认会有多版本管理工具,python Launcher,可以很方便在window下对多版本python进行管理

1.查看所有可用版本

py -0

image

2.运行指定版本安装rasa(3.10),等待一会儿安装成功

py -3.10 -m pip install rasa

3.安装成功后,使用rasa init命令初始化,会询问你是否安装到当前目录下,也可以指定目录。第二次会询问你是否马上训练模型,如果选是的话,会在models目录下生成一个tar.gz模型。如果不马上训练也可以自己通过rasa train命令训练模型。

py -3.10 -m rasa init

初始化目录结构如下
image

对书上案例进行操作

image
书上用的应该是rasa2.x版本,和我3.4版本不一样
贴上代码:
data/nlu.yml
intent:意图
[]():这种是实体,rasa是对文本中的意图和实体提取之后再判断怎么回答,[]中可以定义多个不同的字符串,这些都会被rasa标记成()里的内容,如感冒、发烧、喉咙痛,都会被标记成disease。

version: "3.1"
nlu:
  - intent: greet
    examples: |
      - 你好
      - 1
      - 在吗
      - 您好
  - intent: goodbye
    examples: |
      - 88
      - 再见
  - intent: medicine
    examples: |
      - 我[感冒](disease)了
      - 我[发烧](disease)了
      - 我[喉咙痛](disease)

domain.yml,在这里配置了nlu.yml中的意图

version: "3.1"
intents:
  - greet
  - goodbye
  - medicine

config.yml,rasa默认没有支持中文分词,需要配置中文分词器

recipe: default.v1
language: zh
pipeline:
  - name: JiebaTokenizer
  - name: LanguageModelFeaturizer
    model_name: bert
    model_weights: bert-base-chinese
  - name: "DIETClassifier"
    epochs: 100

开始训练nlu模型

用到了JiebaTokenizer,rasa没有自带,需要用pip下载这个组件

py -3.10 -m pip install jieba
py -3.10 -m pip install transformers

训练:

py -3.10 -m rasa train nlu

训练完之后会在models目录下得到一个nlu模型

nlu对话分析

命令行运行

py -3.10 -m rasa shell nlu

进入之后,会等待我输入一句话,我输入“我感冒了”
image
nlu模块对这句话进行分析
text:是我输入的这句话
entities:text中提取的实体(这里提取到了感冒关键字)
intent:意图,medicine是在nlu.yml中配置的一个意图,confiedence是评分,这里高达0.99,分数很高
intent_ranking:是对意图的一个排名,可以看到medicine排名第一

总结

rasa主要有两个模块,一个是nlu,一个是core
nlu模块作用主要是理解用户的语言,提取用户输入的关键词,涉及到对语句的分词,并根据匹配度进行排名,有点类似es的分词和倒排索引
core模块是管理对话上下文,对用户输入选择合适的返回,对话的每行记录都会被管理,rasa会根据对话历史记录和当前用户输入判断该怎么回复用户。
还有一个叫nlg,和nlu是反过来的,是把机器语言组装成用户语言返回给用户,方便用户理解。

标签:实战,py,nlu,rasa,3.10,Rasa,读书笔记,intent,版本
From: https://www.cnblogs.com/dagger9527/p/17065095.html

相关文章