赞
踩
项目开发记录
# 使用清华大学镜像在这里插入代码片
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple rasa-nlu==0.15.1 tensorflow==1.13.2 sklearn_crfsuite
data
的文件夹,在data文件夹中创建data.json
文件。文件的框架和内容分别如下:# data.json文件的基本框架 { "rasa_nlu_data":{ "common_examples":[], "regex_features":[], "entity_synonyms":[] } } # data.json 本例中的文件内容 { "rasa_nlu_data": { "common_examples": [ { "text": "Hello", "intent": "greeting", "entities": [] }, { "text": "I wand to know my Horoscope", "intent": "get_horoscope", "entities": [] }, { "text": "Can you please tell me my horoscope?", "intent": "get_horoscope", "entities": [] }, { "text": "Please subscribe me", "intent": "subscription" } ], "regex_features": [], "entity_synonyms": [] } }
config.json
的json文件。添加如下配置:# pipline: 管道将指定使用哪种特征器或特征提取器来解析文本和提取必要信息,在例子中,我们将使用tensorflow_embedding.
# path: 路径本质上是训练后保存模型的目录,将在/models/nlu目录下保存我们的模型。
# data: 数据是需要置顶的路径;基本上就是训练数据所在的位置。
{
"pipeline": "tensorflow_embedding",
"path": "./models/nlu",
"data": "./data/data.json"
}
from rasa_nlu.training_data import load_data
from rasa_nlu.model import Trainer
from rasa_nlu import config
from rasa_nlu.model import Interpreter
def train_horoscopebot(data_json,config_file,model_dir):
training_data = load_data(data_json)
trainer = Trainer(config.load(config_file))
trainer.train(training_data)
model_directory = trainer.persist(model_dir,fixed_model_name='horoscopebot')
def predict_intent(text):
interpreter = Interpreter.load('./models/nlu/default/horoscopebot')
print(interpreter.parse(text))
data.json
和config.json
文件并通过tensorflow_embedding
管道训练模型。# 在步骤4中的代码后面添加如下代码,运行该文件,训练模型
train_horoscopebot('./data/data.json','config.json','./models/nlu')
# 代码将会自动创建models的文件夹
# 输出结果:Epochs: 100%|██████████| 300/300 [00:00<00:00, 316.48it/s, loss=0.085, acc=1.000]
# 在执行完步骤5后,模型已经训练好并保存在了models文件夹中,步骤5的代码注释掉,重新添加如下代码,调用predice_intent方法来查看训练好的模型的效果
predict_intent("I am looking for my horoscope for today. I am wondering if you can tell me that.")
# 只有当训练数据发生变化时,才需要重新训练模型,如果模型没有发生变化,不需要每次都重新运行步骤5所示的代码,可以直接加载现有的训练模型对新示例进行预测。
{'intent': {'name': 'get_horoscope', 'confidence': 0.963240921497345}, 'entities': [], 'intent_ranking': [{'name': 'get_horoscope', 'confidence': 0.963240921497345}, {'name': 'greeting', 'confidence': 0.0}, {'name': 'subscription', 'confidence': 0.0}], 'text': 'I am looking for my horoscope for today. I am wondering if you can tell me that.'}
执行完以上步骤后,项目目录结构如下:
Horoscope
| config.json
| rasa-nlu.py
+---data
| data.json
| __init__.py
|
+---models
| \---nlu
| \---default
| \---horoscopebot
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。