自然语言生成部件的主要目的是根据系统的相应类型,生成自然语言回答。
一般来说这部分主要是套模板。
NLG模块的输入是DPL模块输出的系统动作,输出是系统对用户输入
的回复
。
目前,NLG模块仍广泛采用传统的基于规则的方法,如下图定义。根据规则可以将各个系统动作映射成自然语言表达。
系统动作 | 系统回复 |
---|---|
Ask Date() | “请告诉我查询的时间” |
Ask Location() | “请告诉我查询的地点” |
Answer(date=$date,location=$location,content=$weather) | “$data, $location 的天气,$weather” |
为了实现回复的多样性,各种基于深度神经网络的模型方法被提出并得到发展。一些使用如seq2seq模型等等产生的NLG方法。这些方法的出现一来是为了提高系统的鲁棒性,另一方面是希望系统说话更接近人类说话方式,最终提高用户体验。
参考文献
- 自然语言处理与实践