Rasa NLU简介
Rasa NLU(自然语言理解)是意图分类和实体提取的工具。 您可以将Rasa NLU视为一组高级API,用于使用现有的NLP和ML库构建自己的语言解析器。
安装
我的系统是OS X,python 的版本是3.6.1
安装pip install rasa_nlu
后端有三种方案, 1.MITIE
2.spaCy + sklearn
3.sklearn + MITIE
这里我选择的是第二种,搜索了一下感觉spaCy也许更好,
pip install -U spacy
python -m spacy download en
目前spaCy支持英文等,但是不支持中文,但是中文已经在他们的Alpha List上了,相信不久就可以支持。
当然也可以自己训练语言模型,但是spaCy的文档讲的不是特别详细。
教程:一个简单的餐厅搜索机器人
主要分为四步,首先要准备好语料,在github上有这个教程的语料链接,然后是对语料进行标注,另外spcCy也开发了一个可视化的语料标注工具, 标注好的语料准备好了以后,就是训练模型了,编写配置文件config.py
{
"pipeline": "spacy_sklearn",
"path" : "./models",
"data" : "./data/examples/rasa/demo-rasa.json"
}
然后就可以开始训练
python -m rasa_nlu.train -c config.json
训练好以后就可以使用训练的模型进行语义理解,
使用以下命令启动一个基于训练好的模型的NLU server
python -m rasa_nlu.server -c config_spacy.json --server_model_dirs=./model_YYYYMMDD-HHMMSS
然后验证一下
curl -XPOST localhost:5000/parse -d '{"q":"I am looking for Chinese food"}' | python -mjson.tool
最后返回如下数据
{
"text": "I am looking for Chinese food",
"entities": [
{
"start": 8,
"end": 15,
"value": "chinese",
"entity": "cuisine",
"extractor": "ner_spacy"
}
],
"intent": {
"confidence": 0.6485910906220309,
"name": "restaurant_search"
},
"intent_ranking": [
{
"confidence": 0.6485910906220309,
"name": "restaurant_search"
},
{
"confidence": 0.14161531595656784,
"name": "affirm"
}
]
}
总结
期待spaCy尽快支持中文,或者把如何训练语言模型的文档写的稍微详细一点。