员工Bot是e成科技一款服务于企业内部员工的机器人助理产品。其中,自动解答员工频繁会问到的业务知识类问题是员工Bot的核心应用场景,借助员工Bot可以显著的减少HR日常重复性工作。 本文主要讨论自然语言处理算法在员工Bot场景下的应用,其核心是短文本(问题)的相似度匹配。这是一个自然语言处理领域成熟的方向,有很多经典方法,但随着近些年来深度学习的进展,效果更好的新方法也在不断涌现。作为一名NLP领域的算法工程师,一方面需要追踪最新NLP领域的最新研究进展固然重要,同时也必须结合实际情况,探寻和落地可行的方案。
前言:
员工Bot是e成科技一款服务于企业内部员工的机器人助理产品。其中,自动解答员工频繁会问到的业务知识类问题是员工Bot的核心应用场景,借助员工Bot可以显著的减少HR日常重复性工作。
本文主要讨论自然语言处理算法在员工Bot场景下的应用,其核心是短文本(问题)的相似度匹配。这是一个自然语言处理领域成熟的方向,有很多经典方法,但随着近些年来深度学习的进展,效果更好的新方法也在不断涌现。作为一名NLP领域的算法工程师,一方面需要追踪最新NLP领域的最新研究进展固然重要,同时也必须结合实际情况,探寻和落地可行的方案。
方案选择:
在员工Bot场景中,产品经理基于业务场景收集人力资源场景的FAQ知识库,包含人力资源领域员工经常提出的问题和对应的解答。算法需要根据用户的提问匹配到知识库里面最合适的那一个答案,并判断是否进行回答。在这个场景中,知识库是垂直领域的,它的大小取决于这个业务场景需要支持的范围有多大,一般来说问题对(问题-答案)的数量都在几百到几千不等。从技术上说,上述问题可以抽象成一个文本与文本的相似度匹配问题,下面我们给出基本的技术方案:
召回方案
考虑到模型的负载和延时情况,用户的问题的内容并不会和语料库中的所有问题进行匹配,而是提前将语料库中的问题进行索引,并先进行粗粒度的相似召回,然后再用精细化的匹配模型去计算最相似的那个问题。粗粒度的索引常见的方案有:(1)基于词的倒排索引(Inverted Index);(2)基于稠密向量的向量召回。两种方法都能实现粗粒度的召回,但是倒排索引需要构建有效的索引词表,因此需要根据应用场景调整词表。而基于向量召回的方法,只要确定构建稠密向量的方法ÿ