环境:python 3.7,rasa_NLU_chi、linux版pycharm。
1、安装rasa_nlu_chi
conda create -n rasanluchi python=3.6
conda activate rasanluchi
git clone https://github.com/crownpku/rasa_nlu_chi.git
cd rasa_nlu_chi
python setup.py install
#安装需要的第三方库 mitie、sklearn
pip install mitie
pip install sklearn
pip install jieba
下载mitie使用的模型文件,将这个dat后缀的文件放到rasa_nlu_chi-master/data/文件夹中。
链接:https://pan.baidu.com/s/1kNENvlHLYWZIddmtWJ7Pdg 密码:p4vx
查看rasa_nlu_chi-master文件夹:
rasa_nlu_chi-master/rasa_nlu的文件夹中,可以看到rasa nlu所用的组件源码等。
tokenizers:分词器组件源码,其中包括jieba_tokenizer.py、mitie_tokenizer.py等,中文上常使用jieba_tokenizer.py
extractors:实体提取器,包括crf_entity_extractor等
各个组件具体内容可看官网https://rasa.com/docs/rasa/reference/rasa/nlu/classifiers/diet_classifier,通过左侧栏Reference–Code reference-rasa.nlu可看到各组件详情。
2、训练模型
新建一个终端,进入rasa_nlu_chi-master目录,运行下面指令,完成模型训练。
python train.py -c ../sample_configs/config_jieba_mitie_sklearn.yml -d ../data/examples/rasa/demo-rasa_zh.json --path models
-c …/sample_configs/config_jieba_mitie_sklearn.yml #nlu需要的配置文件,记录着模型的pipline
-d …/data/examples/rasa/demo-rasa_zh.json
#训练数据文件夹,json格式,因为rasa_nlu_chi是rasa=1.0版本左右的,不是2.0后的数据格式
3、pycharm打开rasa_nlu_chi-master文件,点击左上角设置小齿轮选择settings,将该工程的环境设为刚才创建并且安装rasa_nlu_chi的rasanluchi环境。
4、运行sever.py,运行前需要先设置参数,不能直接运行,打开Edit Configuarations
Script path:运行的py文件就是sever.py,记得填写绝对路径,防止出现路径对不上的错误。
Parameters:传入的参数,这里传入的参数是Script path:运行的py文件就是train.py,记得填写绝对路径,防止出现路径对不上的错误。
Parameters:传入的参数,这里传入的参数如下
-c ../sample_configs/config_jieba_mitie_sklearn.yml #nlu需要的配置文件,记录着模型的pipline
-d ../data/examples/rasa/demo-rasa_zh.json
#训练数据文件夹,json格式,因为rasa_nlu_chi是rasa=1.0版本左右的,不是2.0后的数据格式
#上述两个文件,如果在运行过程中出现找不到文件的错误,只需要在rasa_nlu_chi-master文件中找到对应的文件,然后将-c、-d后面的参数修改为对应的文件绝对地址即可
--path models #模型保存路径,将保存到同级目录的model文件夹下,如果没有model,将自动建立model文件夹。
3、在sever.py的同级目录的model.py中设置断点(如337行)
4、进入sever.py的debug,将初始化一个rasa nlu 的服务。
可以看到开启了一个端口为5000的服务,
5、打开任意终端,向上面的rasa nlu端口发送数据,命令如下
curl -XPOST localhost:5000/parse -d '{"q":"我发烧了该吃什么药?", "model": "model_20210810-191021"}' | python -mjson.tool
-d 后面是实际发送的数据,其中model属性后是第2步训练得到的模型名称,这里需要读者自行修改,可以从rasa_nlu_chi-master/model文件中可以查看,将模型名称修改为最新的模型即可。
6、此时可以看到程序将停在设置的断点处,接下来就可以一步一步的调试了。