具体实施方式
为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
智能问答系统能够接收以自然语言形式描述的用户提问,并通过检索知识库的方式匹配问题的答案。相对于搜索引擎,问答系统能更好地理解用户提问的真实意图,同时更有效地满足用户的信息需求。
一个典型的智能问答系统生成答案的过程如图1所示大致可以包括:问题分析、信息检索、答案抽取这三个步骤。其中,问题分析例如可以包括对用户提问进行自然语言识别、分词、分类和关键词提取等流程;信息检索例如可以包括使用预设的检索算法从知识库中检索到与用户提问匹配的知识条目;答案抽取例如可以包括从匹配到的知识条目中抽取问题的答案并反馈给用户。
由此可以看出,智能问答系统针对用户的问题生成答案依赖于知识库以及知识库对应的检索算法。由于,知识库通常是由本领域技术人员对一些应用领域的问题进行收集整理后得到,规模有限,因此,在用户提问内容不受约束的开放语境的智能问答系统中,智能问答系统总是会表现出知识库不完备的问题,难以捕获到所有的用户提问。另外,在智能问答系统无法捕获的用户提问中经常出现许多热点问题,这些热点问题往往对应新的业务领域,能够帮助本领域业务人员构建更多新的业务领域的知识库,提高智能问答系统的业务能力。
要根据用户提问构建知识库,首先要根据业务种类对用户提问等数据进行合理的聚类。现有技术的数据聚类使用的是SinglePass聚类方法,这种聚类方法按一定顺序依次读取数据,每次读取的新数据都和已经读取并聚类的数据进行比较,如果按照一定规则找到相应的近似组别,则将这个新数据归入这个类中,如果没有,则将这个新数据视为一个新类。就这样反复执行,直到所有的数据都读完,整个过程只对数据进行一次读取。可见,SinglePass聚类方法的聚类结果对数据读取的顺序较为敏感,具有很强的不确定性,聚类质量不稳定,从而,进一步导致知识库的质量不稳定,使智能问答系统无法为用户提供可靠的智能问答服务。
为了解决现有技术中存在的问题,本申请实施例提供了一种用于构建知识库的数据聚类方法及装置。
下面是本申请的方法实施例。该实施例可以应用于服务器、PC(个人电脑)、平板电脑、手机、虚拟现实设备和智能穿戴设备等多种设备中。
图2为本申请实施例提供的一种用于构建知识库的数据聚类方法的流程图。
如图2所示,本申请实施例的方法包括以下步骤:
步骤S101,获取数据集的每个数据点的局部密度和互斥距离,每个数据点对应一条问题。
其中,本申请中涉及到的数据点之间的距离,意指两个数据点对应问题的文本相似度,可以通过计算数据点对应问题的雅卡尔指数(Jaccard index,又称:交并比、杰卡德系数)和/或词频-逆向文件频率(term frequency–inverse document frequency,TF-IDF)的方法得到。有关使用Jaccard index和/或TF-IDF计算文本相似度的方法属于现有技术,本申请实施例中不再赘述。当然,本领域技术人员在本申请实施例的技术构思下也可以使用其他方法计算得到数据点之间的距离,能够在此处应用的设计均未超出本申请的保护范围。
数据集中包含多条问题,这些问题例如可以通过wordvec等自然语言处理手段可以映射到一个多维的数据空间中,每个问题对应数据空间中的一个数据点。
数据集中的问题可以来自于智能问答系统的用户问题日志,用户问题日志中包含智能问答系统已知的问题,也包含智能问答系统未知的问题。在开放式的智能问答系统中,用户问题会涉及到多个业务领域,并且数量巨大,不利于高效率地进行数据聚类,因此,为了提高数据聚类效率,可以对用户问题日志中的问题进行粗分类,将每个粗分类的问题作为一个数据集,对每个数据集分别使用本申请的方法进行数据聚类,从而提高数据聚类的效率和灵活性。
对于任意一个数据点xi(i为大于或者等于1的正整数),它的局部密度pi指的是数据空间S中与数据点xi之间的距离小于预设截断距离dc的数据点的数量(该数量不包括数据点xi本身)。参见以下公式(1)和公式(2):
其中,IS表示数据集S中的数据点的集合;j∈IS\{i}表示xj是数据集S中的数据点,并且与xi不是同一个数据点;dij表示数据点xi与数据点xj之间的距离。
其中,截断距离dc通过以下方式确定:假设数据集S中共包含N个数据点(N为大于或者等于1的正整数)。那么,对于每一个数据点xi(1≤i≤N),它与其他N-1个数据点都存在一个距离,因此,N个数据点总共会存在N×(N-1)个距离。由于,数据点xi到数据点xj的距离与数据点xj到数据点xi的距离是相同的,因此,在N×(N-1)个距离中有一半是重复的,那么,N个数据点存在不相同的距离的数量为M=1/2×N×(N-1)个。进一步地,如果将M个距离按照从小到大排序,即{d1,d2,…,dM-1,dM},并将截断距离dc取值为dk,k∈{1,2,…,M-1,M},那么,在N×(N-1)个距离中,小于截断距离dc的距离的数量约占距离总数的k/M,即约为k/M×N×(N-1)个,平均下来,每个数据点的小于截断距离dc的距离约为k/M N×(N-1)个,近似等于k/M×N个。进一步地,如果定义t=k/M,则每个数据点xi的局部密度pi可由t计算出的dc来定义,所以,根据t=k/M,一旦t的数值确定,k的值也随之确定,从而,dc(c=k)的值也随之确定。
可选地,本申请中截断距离dc的取值能够使得数据点xi的局部密度pi的平均值等于数据集S的数据点总数的1%~2%,因此,在本申请中,t的取值可以为1%~2%。
需要补充说明的是,本申请实施例给出的t的取值范围是一个经验值,在该取值范围下有利于提高数据聚类效果。但由于实施本申请技术方案的硬件环境、软件环境、应用领域和问题语料的不同,有利于提高数据聚类效果的t值可能不同,因此,本领域技术人员可以在本申请实施例公开的技术思路下,通过多次的验证对比选择出合适的t值。本申请实施例中对t的取值不做具体限定。
另外,对于任意一个数据点xi(i为大于或者等于1的正整数),它的互斥距离δ是指:如果该数据点xi在数据集S中具有最大局部密度,则将该数据点xi与数据集S的其他数据点存在的最远距离作为该数据点xi的互斥距离δ;如果该数据点xi在数据集S中不具有最大局部密度,则从数据集S中选取局部密度大于xi的所有数据点,并且与数据点xi距离最近的一个数据点作为互斥数据点,并将数据点xi与互斥数据点的距离作为互斥距离δ。
图3为本申请实施例示出的问题对应的数据点的分布示意图。
进一步参见图3所示,在数据集S中,数据点1具有最大的局部密度,数据点1与数据点28的距离最远,因此,数据点1与数据点28的距离就是数据点1的互斥距离。另外,数据点15的局部密度大于数据点27的局部密度,并且数据点15与数据点27的距离最近,因此,数据点27与数据点15的距离是数据点27的互斥距离。
步骤S102,根据局部密度和互斥距离确定至少一个数据点作为聚类中心。
图4为本申请实施例示出的聚类中心决策示意图。
首先,对于数据集S中的每一个数据点,都可以计算出它的局部密度pi和互斥距离δi。然后,在一个以pi为横轴,以δi为纵轴(或者以δi为横轴,以pi为纵轴)的二维坐标系中,将数据集S中的每个数据点表示出来,形成如图4所示的聚类中心决策示意图。然后,根据数据点在聚类中心决策示意图中的分布情况,将同时具有较大pi值和δi值的数据点作为聚类中心。例如,从图4可以发现,数据点1和数据点10均同时具有较大的pi值和δi值,因此,这两个数据点均可以作为聚类中心。
图5为本申请实施例示出的聚类中心的一种判定方法的示意图。
如图5所示,可以预设一个评价标准去判定聚类中心。首先,根据数据集中数据点的pi和δi的数值范围,设定图4的二维坐标系的横轴和纵轴的坐标值范围;然后,在二维坐标系的横轴和纵轴的最大坐标值处,将二维坐标系划分成两个区域,将位于pi值和δi值较大的区域的数据点作为聚类中心。
步骤S103,对每个聚类中心生成聚类簇,所述聚类簇包括聚类中心周围预设聚类区域内的所有数据点。
具体地,聚类区域可以是以聚类中心为圆心,以截断距离为半径确定的圆形区域,从而,使得每个聚类簇中数据点的数量平均占数据点总数的1%~2%。
步骤S104,根据聚类簇之外的剩余数据点与聚类簇的聚类中心的距离,将剩余数据点添加到聚类簇中。
例如,首先,对位于聚类簇之外的剩余数据点创建顺序流;然后,按照顺序流指定的顺序,逐一计算每个剩余数据点与已有聚类簇的聚类中心的距离,并将剩余数据点添加到距离最近的聚类簇中。
另外,需要补充说明的是,当智能问答系统的用户问题日志中产生了新的未知问题,或者用户向数据集中添加了新的未知问题时,也可以使用步骤S104的方式,计算未知问题对应的数据点与聚类簇的聚类中心的距离,并将未知问题的数据点添加到距离最近的聚类簇中,从而,实现了在智能问答系统的运行过程中,实时对未知问题进行聚类。
由以上技术方案可知,本申请实施例提供了一种用于构建知识库的数据聚类方法,包括获取数据集的每个数据点的局部密度和互斥距离,每个数据点对应一条问题;根据局部密度和互斥距离确定至少一个数据点作为聚类中心;对每个聚类中心生成聚类簇,所述聚类簇包括聚类中心周围预设聚类区域内的所有数据点;根据聚类簇之外的剩余数据点与聚类簇的聚类中心的距离,将剩余数据点添加到聚类簇中。从而,本申请基于局部密度最大值的聚类思想,根据数据点的局部密度和簇间距离动态地选择局部密度大的数据点作为聚类中心,并且多个聚类中心之间能够保持较为分散的距离,从而提高数据聚类质量,当本申请的方法用于生成智能问答系统的知识库时,能够提高问题聚类质量,使智能问答系统为用户提供更可靠的智能问答服务。
图6为本申请实施例提供的获取数据点的局部密度的流程图。
图7为本申请实施例示出的邻近数据点的分布示意图。
如图6和图7所示,在一种可选择的实施方式中,获取数据点的局部密度包括以下步骤:
步骤S201,根据预设的截断距离,寻找当前数据点的邻近数据点,邻近数据点与当前数据点的距离小于截断距离。
具体地,如图7所示,根据公式(1)和公式(2)表达的思想,以当前数据点为中心,在截断距离限定的范围内,由近到远在截断距离限定的范围内查找数据点,每查找到一个数据点,就将邻近数据点的计数增加1,直到当前数据点的所有邻近数据点都被查找到。
其中,作为一种优选的实施方式,截断距离的取值使每个数据点的邻近数据点的平均数量为数据点总数的1%~2%。
步骤S202,以当前数据点的邻近数据点的数量作为局部密度。
由此,本申请实施例根据截断距离寻找到每个数据点的邻近数据点,并根据邻近数据点的数量确定每个数据点的局部密度,从而便于根据局部密度确定聚类簇的聚类中心,使聚类中心的局部密度高于其周围的其他数据点的局部密度,使本申请实施例的数据聚类方法基于局部密度的最大值进行数据点的聚类,从而提高数据聚类质量。
图8为本申请实施例提供的获取数据点的互斥距离的流程图。
如图8所示,在一种可选择的实施方式中,获取数据点的互斥距离包括以下步骤:
步骤S301,将所有数据点的局部密度按照升序或者降序排列。
具体地,假设数据集S中共包含N个数据点(N为大于或者等于1的正整数)。将N个数据点的局部密度p按照升序或者降序排列后,会得到一个由N个局部密度p组成的局部密度序列,如果对序列中的每一个局部密度p添加一个下标作以区分,将会得到下面的序列(序列1:以降序示例):
p1≥p2≥…pN-1≥pN 序列1
步骤S302,如果根据局部密度的排列结果确定当前数据点的局部密度最大,则将当前数据点与其他数据点的最远距离作为互斥距离;如果根据局部密度的排列结果确定当前数据点的局部密度不是最大,则获取局部密度大于当前数据点的其他数据点,并将当前数据点与获取的其他数据点的最近距离作为互斥距离。
具体地,可以使用公式(3)对N个数据点的局部距离进行遍历,从而确定每个数据点的互斥距离。
其中,δi表示按照序列1排序的第i个数据点的互斥距离,i为整数且1≤i≤N;dij表示按照序列1排序的第i个数据点与第j个数据点之间的距离。那么,根据该公式,当i=1时,当前数据点的局部密度p1为最大值,则将当前数据点与其他数据点的最远距离max{d1j}(j≥2)作为互斥距离;当i≥1时,当前数据点的局部密度pi不是最大值,则获取局部密度大于当前数据点的其他数据点(即局部密度为pj(j<i)的数据点),并将当前数据点与获取的其他数据点的最近距离min{dij}(j<i)作为互斥距离。
根据上述公式,本申请从p1(即i=1)开始,直到pN(即i=N),依次计算每个数据点的互斥距离,得到δ1~δN。
由此,本申请实施例通过对数据点的局部密度进行排序,便于遍历获取每个数据点的互斥距离,使获取互斥距离产生的计算过程流程化,提高效率。
图9为本申请实施例提供的一种用于构建知识库的数据聚类方法步骤S102的流程图。
如图9所示,在一种可选择的实施方式中,步骤S102包括以下步骤:
步骤S401,以每个数据点的局部密度和互斥距离的乘积作为每个数据点的聚类中心决策值。
在一些场景中,聚类中心决策示意图中的局部密度pi和互斥距离δi的分布相对聚集,可能会出现无法通过肉眼或者通过图5示出的方式分辨出聚类中心的情形。此时,需要使用更多量化的决策参数去确定聚类中心,本申请实施例提出了聚类中心决策值,其取值为数据点的局部密度和互斥距离的乘积,即:γi=pi×δi。并且,数据点的聚类中心决策值γi越大,越可能作为聚类中心。
步骤S402,根据聚类中心决策值获取每个数据点的跳跃梯度。
图10为本申请实施例示出的跳跃梯度的示意图。
以数据点的数量n作为横轴,以聚类中心决策值B作为纵轴生成一个二维坐标系,将数据集中所有数据点的聚类中心决策值统计在该二维坐标系中即可得到图10。
图10中的聚类中心决策值可以拟合成一条曲线,本申请将聚类中心决策值在曲线中的斜率k(绝对值)作为其对应数据点的跳跃梯度。
步骤S403,将跳跃梯度满足预设阈值的数据点作为聚类中心。
从图10可以看出,多数数据点的跳跃梯度较小,而少数数据点的跳跃梯度较大,在图10的曲线中形成了一个明显的跳跃。由此,本申请实施例可以通过一个预设的阈值对数据点的跳跃梯度进行判断,当数据点的跳跃梯度大于阈值时,认为该数据点为聚类中心。
由此,本申请实施例能够在难以通过聚类中心决策示意图分辨出聚类中心的情况下,使用数据点的跳跃梯度确定聚类中心,从而无论数据点如何分布,都能顺利确定聚类中心。
另外,在一些场景中,局部密度和互斥距离的数值可能处于不同的数量级,并且差距巨大,在这种情况下,局部密度和互斥距离的其中一个参数对聚类中心决策值的数值影响会很小,从而,无法体现出其在聚类中心决策值中的权重,此时,步骤S401之前,可以对局部密度和互斥距离的数值进行归一化处理,以统一它们的数量级,从而提高聚类中心的选取效果。
在一种可选择的实施方式中,本申请实施例在步骤S104之后,还包括数据输出流程,具体包括以下步骤:
步骤S105,根据聚类簇中非重复问题的数量对聚类簇进行排序,以及,根据聚类簇中每个问题出现的频率对聚类簇中的问题进行排序,并输出排序结果。
示例地,输出的排序结果为:
另外,还可以根据聚类簇中所有问题出现的总频率对聚类簇排序,以及,还可以根据聚类簇中的每个问题与聚类中心的距离对问题进行排序。或者,本领域技术人员根据本申请的技术方案完成数据聚类之后,可以根据自身的业务需求设计数据的排序方式和输出方式,能够在此处实现的设计均在本申请技术方案的保护范围之内。
由此,排序输出的问题可以在设置答案之后添加到智能问答系统的知识库中,从而提高智能问答系统的业务能力。
图11为本申请实施例提供的获得数据集的流程图。
如图11所示,在一种可选择的实施方式中,数据集可以通过以下步骤获得:
步骤S601,根据问题日志生成问题集,所述问题日志由智能问答系统根据用户提问的未知问题记录生成。
其中,在智能问答系统在运行过程中,用户不断地向智能问答系统提出问题,这些问题可以是用户通过文字输入的方式提出,也可以是用户通过语音输入的方式提出,当用户通过语音输入的方式提出问题时,智能问答系统可以使用语音识别技术(AutomaticSpeech Recognition,ASR)将语音转换成文字。智能问答系统接收用户问题后,检索知识库并常识给出答案,当智能问答系统在知识库中检索不到于用户问题匹配的已知问题时,就会把用户问题作为未知问题记录在问题日志中。本申请实施例在步骤S601中,可以定期从问题日志中提取未知问题,并生成问题集。
另外,问题集也可以通过本领域技术人员收集、统计获得。
步骤S602,对问题集进行数据预处理,所述数据预处理包括去除脏数据、统计问题集包含的非重复问题的数量和每个问题出现的频率、以及对问题进行分词处理并进行词性标注。
其中,对于本申请实施例来说,脏数据可以是包含停用词的数据。例如:停用词可以是一些特殊的符号,如:&、*、@,以及一些敏感词、违禁词等。为了去除停用词,可与预先设置一个停用词表,通过停用词表查找到包含停用词的问题,并从问题中去除停用词。
另外,本申请实施例可以使用一个预设的用户词典对去除脏数据的问题进行分词,并标注词性。其中,用户词典由大量的词语和词语的词性组成,在使用用户词典对问题进行分词时,可以首先将问题中存在于用户词典中的词语切分出来,然后将问题余下的内容每个字作为一个分词切分出来,最后,根据用户词典中记录的词语的词性将问题切分结果中的动词和名词标注词性。
步骤S603,根据词性的标注结果,获取问题包含的业务类名词和操作类动词,并根据所述业务类名词和操作类动词对问题进行分类,每个分类对应形成一个数据集。
由于用户问题通常会涉及到多个业务领域,并且数量巨大,不利于高效率地进行数据聚类,因此,为了提高数据聚类效率,可以根据问题包含的业务类名词和操作类动词对问题集中的问题进行粗分类,并将每个粗分类的问题作为一个数据集,对每个数据集分别使用本申请的方法进行数据聚类,从而提高数据聚类的效率和灵活性。
其中,通过业务类名词可以将用户问题按照它们涉及的业务领域进行分类。例如问题“云盾设备授权”“云盾设备许可”“云盾设备回收”“云盾设备升级”“云盾设备销毁”中均含有业务类名词“云盾”,因此,这些问题可以划分到一个业务领域的分类中。
进一步地,通过操作类名词可以对同一业务领域的用户问题按照具体的操作类别进行分类。例如问题“云盾设备授权”“云盾设备许可”“云盾设备回收”“云盾设备升级”“云盾设备销毁”中分别含有操作类动词“授权”“许可”“回收”“升级”“销毁”,因此可以根据这些操作类动词上述分题划分到多个操作类别中。
需要注意的是,在通过业务类名词和操作类动词对问题进行分类时,要考虑到近义词对分类的影响,例如操作类动词“授权”和“许可”互为近义词,因此“云盾设备授权”和“云盾设备许可”应该被划分到同一个操作类别中。
其中,确定问题中的近义词可通过预设的近义词表实现。
由此,本申请实施例对问题集进行了粗划分,生成数据集,每个数据对应某一业务领域的一个具体的操作类别,因此,在数据聚类过程中,可以实现对一个具体操作类别的问题进行聚类,从而提高数据聚类的精度。
下面是本申请的装置实施例,可用于执行本申请的方法实施例。该实施例可以应用于服务器、PC(个人电脑)、平板电脑、手机、虚拟现实设备和智能穿戴设备等多种设备中。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。
图12为本申请实施例提供的一种用于构建知识库的数据聚类装置的结构示意图。如图12所示,该装置包括:
聚类参数获取模块701,用于获取数据集的每个数据点的局部密度和互斥距离,每个数据点对应一条问题;
聚类中心确定模块702,用于根据局部密度和互斥距离确定至少一个数据点作为聚类中心;
聚类簇生成模块703,用于对每个聚类中心生成聚类簇,所述聚类簇包括聚类中心周围预设聚类区域内的所有数据点;
后处理模块704,用于根据位于聚类簇之外的剩余数据点与聚类中心的距离,将剩余数据点添加到聚类簇中。
由以上技术方案可知,本申请实施例提供了一种用于构建知识库的数据聚类装置,该装置用于获取数据集的每个数据点的局部密度和互斥距离,每个数据点对应一条问题;根据局部密度和互斥距离确定至少一个数据点作为聚类中心;对每个聚类中心生成聚类簇,所述聚类簇包括聚类中心周围预设聚类区域内的所有数据点;根据聚类簇之外的剩余数据点与聚类簇的聚类中心的距离,将剩余数据点添加到聚类簇中。从而,本申请基于局部密度最大值的聚类思想,根据数据点的局部密度和簇间距离动态地选择局部密度大的数据点作为聚类中心,并且多个聚类中心之间能够保持较为分散的距离,从而提高数据聚类质量,当本申请的方法用于生成智能问答系统的知识库时,能够提高问题聚类质量,使智能问答系统为用户提供更可靠的智能问答服务。
本领域技术人员在考虑说明书及实践这里公开的申请后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。