槽位提取作为NLU链路的重要一环,是用户话术的意图执行,指令下发的重要前置模块。我们研究过弱监督、无监督或集成方案,此Repo是利用深度学习设计的一套方案,重点在于提升语料泛化及对生词(OOV)的识别能力。
常规的NLP方案中,对语料的依赖性很高,当句子中出现生词,哪怕能够记录词的position信息,依然难以保证正确推理,此时只能通过新增语料、更新模型的来增强系统的泛化能力,此方法十分笨重,且耗时耗力。
本Repo的方案不依赖语料,不依赖模型,仅依靠手动维护生词列表,即可对包含“生词”的句子,给出正确的识别结果。
- 特征抽象:utils/data.py,对特殊属性的token在字符级别的替换。
- 借鉴了transformer中,multi-head attention的思路。
模型结构不是本Repo的重点,方案对了,模型可以根据性能的要求选择,本Repo并没有选择预训练的动态语言模型,效果依然出色。
python3 run.py --mode=train
python3 inference.py