如何构建高质量的 QA 问答知识库
NLP 技术落地最普遍的场景就是智能客服,如阿里的”小蜜“,京东的“JIMI”等等。NLP 技术也广泛应用于搜索系统。无论是“智能客服”,还是“搜索系统”,构建的前提是拥有“高质量的QA知识库”。今天聊聊“如何构建高质量QA知识库。”。
历史对话数据分布分析
基于公司现有系统积累的大规模对话文本数据,需要对文本数据进行归类处理,分析每个部分数据的占比,挖掘出有价值的文本通过 NLP 相关技术进行商业价值转化。下文以医疗领域来举例说明,通过输入对象,可以将文本分为客服输入和用户输入两部分。挖掘相关问题,主要从用户输入文本出发,用户输入文本根据问题的类型大致可以分为以下几种):
基本常识相关问题。 比如:孕妇饮食需要注意什么?如何进行体检预约? 业务相关问题。 比如:(妇科问诊)肚子疼怎么办?针对该问题,医生不能盲目下结论,需要询问用户的一些信息(是否孕期,具体哪里痛等等)。 闲聊问题。 闲聊文本占比蛮多,不在分析范围内。
通过文本归纳以及数据分析,在用户输入文本中,基本问题占比34%,业务问题占比28%,闲聊问题占比48%。 基本问题和业务问题是具有价值的部分,通过挖掘基本问题,我们可以构建知识库,提供知识问答检索系统;通过挖掘业务问题,可以设计业务相关的多轮对话模板,完成多轮对话问答系统。
基本问答对挖掘
基本问答对挖掘分为两个步骤第一步:挖掘出高质量的疑问句,第二步:挖掘出高质量疑问句对应的答案。
如何挖掘出高质量疑问句
1、问题的初步筛选: 需要将用户文本中疑问句挖掘出来,方法包括规则表达式和疑问句判别分类模型。
规则表达式:发现中文问句的表达规律,建立规则表达式库,通过规则引擎进行匹配。比如文本以“吗、?什么”等结尾的句子。 疑问句判别分类模型:将疑问句挖掘转换为分类模型:即疑问句和非疑问句,通过人工标注数据,训练模型,完成疑问句判别任务。常用的分类模型如TextCNN等。
2、领域词——问题过滤:通过问句是否含有领域词完成第 1 步知识库的过滤。领域词库的建立可以使用如下方法:
卡方特征选择提取领域词。 命名实体识别模型完成领域词的抽取。常用方法:BILSTM+CRF 等。
3、相似疑问句的挖掘。
聚类分析,挖掘相似的疑问句。 句子向量相似度分析 答案相似,也可以认为问题是相似问题。
接下来我们举个例子来说明上述挖掘高质量疑问句的方法,假设领域词集合:{腹痛},用户输入的文本集合如下:
1、腹痛如何治疗? 2、我能不能退货? 3、肚子疼怎么办呀 4、我已经完成了订单支付。
通过第 1 步,获取的问句如下(第 4 句不是疑问句):
1、腹痛如何治疗? 2、我能不能退货? 3、肚子疼怎么办呀
通过第 2 步,获取的问句如下(第 2、3 句不含有领域词)
1、腹痛如何治疗?
通过第 3 步,聚类分析,可以发现第 1 句 和第 3 句是相似的。
1、腹痛如何治疗? 3、肚子疼怎么办呀
最终完成问句库的建立即“腹痛如何治疗?”对应的同义问“肚子疼怎么办呀”。
高质量疑问答案选择
1、问答拼接。 将疑问句对应客服的陈述句作为答案。如果答案长度较短,则按照“就近”原则拼接2-3个陈述句作为答案。客服回答问题,可能针对一个问题通过多个字句进行回答,所以按照“就近”原则将陈述句进行拼接。
2、问答对筛选。 针对第 1 步挖掘出来的QA对,通过判断Q和A中是否包含相同的领域词或者是否拥有相同的子串等策略,完成问答对的筛选。
3、同类问题如果拥有多种不同的答案,则保留高频答案。
4、运营人员协助,完成 QA 知识库的质检。