意图识别分为两个模块:意图分类的识别和当前意图中slot(槽位)的识别。其中槽位的识别可以参考实体的识别,但又与之不同。槽位识别可以看做是对每个意图所需条件的识别,比实体的识别更加多元化。比如有一句话:显示从北京到上海的航班。
意图:航班查询。
槽位标记:北京(from-city),上海(to-city)
实体标记:北京(city),上海(city)。
1.项目流程
样本格式:采用BIO标记策略,句子+EOS+句子中每个字对应的槽位标签+意图。
1.数据预处理阶段:。将句子,槽位标签,意图id化并保存至文件中
2.模型输入:句子的列表,每个句子长度的列表,槽位列表,意图列表。
3.模型架构:通过模型预测槽位列表、意图列表。
4.损失计算:通过NLLLoss()函数(只接收log_softmax后的数据)计算槽位、意图和实际的损失。
5.模型优化:使用Adam函数优化损失。
2.模型架构
下面来详细介绍上述流程中的模型架构。
模型结构图: