查找描述对计算问题的解决方案的文档的制作方法

文档序号:13080259阅读:242来源:国知局
查找描述对计算问题的解决方案的文档的制作方法与工艺



背景技术:

为了向用户提供支持,许多公司提供包括技术文章、常见问题(faq)解答以及其他类型的信息的数据库的信息存储库(被称为知识库)。用户可以在知识库中搜索以从知识库中标识与特定难题或问题相关的技术文章。相关的技术文章可以包括(1)信息性的或仅提供建议或指引的文章,以及(2)为难题或问题提供解决方案的文章。就大的知识库而言,用户可能花费大量的时间将提供解决方案的那些文章与仅仅是信息性的文章区分开。



技术实现要素:

提供本发明内容来以简化的形式介绍概念的选择,并将在以下的具体实施方式中进一步描述。该发明内容不旨在标识所要求保护的主题的关键特征或必要特征,也不被用来确定或限制所要求保护的主题的范围。

当计算设备存在问题(例如,难题、错误、性能慢、频繁重启或崩溃、错误日志等)时,检测器接收(或取回)与计算设备相关联的数据。数据可能包括参数键值对。检测器基于数据创建查询并且将查询分发到一个或多个匹配引擎,诸如精确匹配引擎、接近度匹配引擎或两者。匹配引擎在数据库文档索引中查找匹配项。对来自匹配引擎的结果进行聚合和排名。确定已排名的结果中的个体文档的相关性得分(例如,使用分类器或其他机制)。在一些情况下,用户可以提供关于结果相关性的反馈,并且反馈可以用于重新校准如何确定相关性得分。

附图说明

参照附图对具体实施方式进行描述。在附图中,附图标记的最左侧的数字标识附图标记首次出现的附图。不同附图中相同的附图标记指示相似或相同的项目。

图1是根据一些实现方式的包括用于检测问题以及识别具有解决方案的文章的系统的三个阶段的说明性架构。

图2是根据一些实现方式的包括客户站点以及用于检测问题以及标识解决方案的文章的检测器的说明性架构。

图3是根据一些实现方式的包括处理过滤器的流水线的说明性系统。

图4是根据一些实现方式的用于执行命名实体识别的说明性系统。

图5是根据一些实现方式的用于执行约束评估的过程的流程图。

图6是根据一些实现方式的用于提取相关查询的过程的流程图。

图7是根据一些实现方式的包括基于快照来创建查询的示例过程的流程图。

图8是根据一些实现方式的包括基于快照来创建多个查询的示例过程的流程图。

图9是根据一些实现方式的包括解析与计算设备相关联的快照的示例过程的流程图。

图10图示了可以用于实现本文中所描述的模块、功能和技术的计算设备和环境的示例配置。

图11示出了根据一些实现方式的用于构建和训练分类器的说明性过程。

图12示出了根据一些实现方式的用于创建和过滤确定性有限词自动机(dfwa)的说明性过程。

具体实施方式

本文中所描述的是用于基于与软件问题相关联的信息来从数据库(例如,知识库(kb)或其他信息存储库)中检测和标识对该软件问题(例如,错误、错误配置、与性能、安全性、可靠性、系统管理等有关的问题等等)的解决方案(例如,修复)的文档的技术和系统。这些问题可能包括难题、错误、与性能有关的问题、与安全有关的问题、与可靠性有关的问题、系统管理问题等。虽然软件配置问题被用作软件问题的示例,但是本文中所描述的技术和系统可以用于检测和标识与计算设备相关联的对其他类型的问题(包括软件问题、硬件问题等)的解决方案。知识库(kb)是用于存储信息(诸如与产品、服务等相关联的信息)的数据库。虽然本文中的示例描述了从知识库中取回技术文章,但是本文中所描述的系统和技术可以用于取回电子文档,诸如在线论坛的帖子、知识库中的技术文章、常见问题(faq)、文章(例如,报纸文章、杂志文章等)、其他类型的电子文档或其任何组合。例如,销售产品的公司可以提供包括说明书、操作手册、维修手册、已知问题以及与产品相关联的其他信息的知识库。另外,当产品的用户发布问题或者创建关于产品的故障报告时,专家(例如,具有关于产品的详细知识的人)可以对问题或故障报告做出回应。如果当前不在知识库中,则问题或故障报告和专家的回应可能会被添加到知识库中,以使得具有类似问题的其他用户能够在知识库中找到回应。例如,如果用户创建详细说明难题的故障报告,则专家可以通过指示对该难题的修复(或变通方案)可用来进行回应。知识库的管理员可以确定哪些信息被添加到知识库中(例如,根据用户对难题的描述和专家的回应)。在将信息添加到知识库之前,管理员可以通过编辑信息、添加链接到知识库中的相关条目等来进行修改。如果第二用户遇到相同(或类似)难题,则第二用户可以搜索知识库以查找专家的回应,然后将信息应用于回应来解决问题。因此,因为信息包括对难题的描述以及由专家提供的、与难题相关的回应,所以存储在知识库中的信息可能是可信赖的。

配置问题可能会对计算设备的性能和可用性/停机时间产生重大影响。比如,用户认证系统中的错误配置可能会导致登录问题。配置问题可能有多种原因,包括错误补丁、卸载失败(例如,悬空的文件引用)、用户尝试的手动修复等。由于若干原因,对错误配置的故障排除可能很困难、耗时和/或昂贵。首先,现在的软件配置可能是复杂的并且大的,例如。包括数百个参数和设置。鉴于具有众多第三方软件包的多个应用程序的广泛安装基础,指定通常的或理想的配置状态或要求开发人员手动指定每个参数的正确值可能是困难的。其次,配置问题可能表现为无声故障,使用户没有任何关于原因的线索,从而导致生产率、数据、时间和/或努力的损失。

kb文章可以描述软件配置问题及其对应的解决方案。通过使得系统能够准确了解软件配置问题,系统可以自动标识对应的解决方案。查找准确的匹配可能是困难的,因为(a)kb文章采用自然语言文本编写,并且文章可能涵盖广泛的问题集合而非特定问题,以及(b)配置文件通常包含大量的参数和设置。为了查找准确的匹配,本文中所描述的技术和系统使用三个关键思想的新颖组合:(a)语义匹配,(b)将匹配机制与基于策略的排名分开,以及(c)在线学习以改进结果排名。机制和策略的分开是一软件设计原则,其说明了机制(例如,系统实现方式的部分,其控制操作授权和资源分配)应当与关于授权哪些操作以及分配哪些资源的策略分开,而不影响它们。

对kb文章中的自由形式文本进行归一化,构建特征向量,并且构造反向索引以使得能够标识解决方案。包括<参数键,值>对集合的计算设备的快照被解析并且转换成一系列查询。这些查询被分发到可以并行执行的一个或多个特征匹配器(例如,精确匹配、接近匹配等)。匹配的kb文章的准确性得分可以被输入到排名引擎,其基于指定策略(例如,文章流行度、专家指引、客户反馈等)来聚合对应的最终得分排名。另外,机器学习可以用于训练用于过滤相关结果的分类模型。

说明性架构

图1是根据一些实现方式的包括用于检测问题以及标识解决方案的文章的系统的三阶段的说明性架构100。

图1中的系统自动(例如,没有人类交互)地使用文档数据库(诸如技术文章知识库(kb))在计算设备上查找配置问题(例如,错误配置)。知识库中的技术文章可能包括(1)信息性的或提供建议(例如,指引)的文章,以及(2)为特定问题或特定类型的问题提供解决方案(例如,修复)的文章。技术文章可能包括被编写以为软件/硬件产品的客户提供自我支持的文章。为了便于理解并且纯粹为了说明的目的,图1中的系统被描述为解决配置参数相关的错误配置。然而,应当理解,本文中所描述的系统和技术可以应用于标识对其他类型问题(包括软件问题、固件问题、硬件问题等)的解决方案。

图1中的系统通过自动确定配置问题并且标识在kb文章中描述的对应的解决方案来提供配置诊断作为服务(例如,基于云的服务)。在一些情况下,在kb文章中标识的解决方案可以被提供给管理员或用户,而在其他情况下,可以自动实施在kb文章中标识的解决方案。

概述

可以捕获计算设备的状态的快照并用于识别解决方案。快照可以包括与计算设备相关联的数据,诸如与计算设备相关联的参数及其对应的值。例如,如果计算设备设置为自动地登录用户(例如,不提示用户输入用户名和密码),则快照可能包括autologin=true,表示布尔参数键“autologin”被设置为值“true”。在某些情况下,快照可以包括错误日志、存储器转储(例如,发生问题时的内存内容)、注册表文件或与计算设备相关的其他信息。拍摄捕获计算设备上至少一些配置文件的内容的快照。从每个快照中提取配置参数键和值设置(例如,<参数键,值>对),并与kb文章进行比较以识别匹配的文章。例如,<enabledhcp,1>对表示指示动态主机控制协议(dhcp)的状态的称为enabledhcp的参数密钥被设置为true(例如,dhcp被启用)。找到匹配后,识别配置问题,并提供匹配的kb文章,以使用户能够应用匹配的kb文章中描述的解决方案。用于识别匹配的kb文章的技术包括(1)语义匹配,(2)将匹配机制与基于策略的排名分开,以及(3)在线学习以改善准确性合结果排名排名。因为kb文章是自然写作的(例如,自由形式的文本),因此kb文章被处理并转换为规范(例如,标准化或归一化)表示,建立了用于执行匹配的特征向量,构建了反向索引以在kb文章中执行快速查找特征值。

使用来自配置快照的<参数键,值>对,系统基于(a)精确关键字,(b)关键字彼此的接近度,(c)参数键的同义词和缩写,以及(d)参数设置的约束(例如,数据类型、格式、值范围等)来并行地(例如,基本上同时地)执行特征匹配。结合其他技术,系统使用两种具体技术:(1)与命名实体解析相结合的同义词扩展和(2)使用抽象语法树对文本的约束评估。另外,通过聚合基于个体的<参数键,值>对来匹配的kb文章的准确性得分,然后基于指定策略来计算整个配置快照的最终排名,将该机制与策略分开。这种机制与策略的分开使得应用程序能够使用任何所需的技术来对匹配的文章进行排名,例如,使用流行度得分、专家指引或客户反馈。为了提高结果的准确性(例如,匹配的kb文章),可以使用具有标签的kb文章来训练分类器。然后,经训练的分类器可以用于过滤相关结果。

图1的系统解决了当将问题映射到解决方案时所牵涉到的三个关键权衡:(i)准确性与相关性,(ii)完整性与排名,以及(iii)自动化与人为驱动分析。首先,搜索引擎通常优化查询相关性以取回具有相关文本或链接的文档,同时取回尽可能少的非相关文档。图1的系统被设计成使用语义匹配来执行配置问题到对应的kb解决方案的准确映射,并且评估对配置参数值的约束。第二,除了专注于解决单个错误配置之外,图1的系统还标识kb文章中的多个错误配置和对应的解决方案。相比之下,搜索引擎通常专注于将最高排名分配给最相关的文章。第三,系统被设计成解析kb文章中的自然语言文本,以标识配置问题的准确解决方案。

架构100包括三个阶段:离线索引构建阶段102,在线查询处理阶段104和在线学习阶段106。在离线索引构建阶段102中,知识库(kb)文章108由文档处理110进行处理,该文档处理110包括文档解析116和文档分析118。文档解析116构建每个知识库文章的中间规范(例如,归一化或标准化)表示,其被解析以标识关键字和关键短语的。文档分析118使用过滤器流水线来提取用于索引和查询的特征向量。在通过文档处理110处理知识库文章108之后,索引引擎112用于创建反向索引114以使得能够进行快速匹配。反向索引114仅用作示例,并且在一些实现方式中,可以创建另一类型的索引并且用于实现类似的结果。

离线索引构建阶段102包括构建响应于几个不同类型的查询(例如,自由形式查询、模糊匹配查询等)的索引(例如,反向索引114)。为了构建索引,标识要从原始kb文章108中提取并且搜索的特征的类型。以可缩放的方式提取特征,以便能够快速切有效地索引具有大量文档的数据库。另外,使用技术以评估自由形式文本中配置参数键值对的约束。

文档处理110对kb文章108进行预处理,以使经处理的文章能够被索引。文档处理110可以包括使用文档解析116解析kb文章108。文档解析116可以包括用于多种文档格式的解析器,包括可扩展标记语言(xml)、超文本标记语言(html)、逗号分隔值(csv)、纯文本或其他类型的文档格式。来自kb文章108的每个输入文档可以被解析为中间表示,其可以被存储、进一步处理、或两者均有。然而,从文档中剥离元数据标签可能导致相邻文本的语义上下文的丢失。例如,展平(flattening)kb文章中的html表格将导致标题列信息与行值中的每个行值之间的关联丢失。为了解决这个挑战,文档解析116展平输入文档(例如,kb文章108中的一个kb文章)如下。常规文本(例如,段落标签(例如,<p>、<span>)内的文本)被“照原样”转换为纯文本,无需任何修改。为了保留表中的语义信息,文档解析116通过将层级文档结构变换成对应的轻量级数据交换格式(诸如例如,对象符号(json)格式)来复制在每行的标题中包括的信息。例如,以下html表:

可以使用json进行解析和表示,如下:

[{

“事件id”:1066,

描述:“这个事件...”

},

{“事件id”:223,

描述:“该误差描述...”

},

{“事件id”:1066,

描述:“当用户...”

}]

文档分析118可以包括从解析后的kb文章108中提取内容以进行索引。为了构建索引(例如,反向索引114),kb文章108内部的自然语言文本可以被转换成被称为术语的细粒度表示,并且可以对该术语进行索引。为了确定哪些术语被选择用于索引,文档分析118考虑以下各项:(1)术语是否提供上下文信息,(2)术语是否是技术术语(例如,专门术语),(3)约束评估(下文详细进行描述),以及(4)kb文章108中的术语的同义词。

对于kb文章108中的每个kb文章108,通过使用词类(pos)标签模块来标识相关形容词来处理每个句子中的文本,以描述每个kb文章与解决问题的关系。形容词在每个kb文章中的相关性可以被分类为二进制特征,例如,相关或不相关。例如,因为由于使用诸如“推荐”、“建议”、“如何”等之类的术语而导致文本可能无法提供解决方案,所以二进制“0”指示kb文章是“未命中”。因为文本可能由于使用诸如“关键”、“必要”、“性能下降”等之类的术语而提供了解决方案,所以二进制“1”指示kb文章是“命中”。当在kb文章中标记文本时,命名实体可以用于标记主题。

示例表达式的pos标记可以如下所示:in/inthe/dtmanagement/nnpartition/nndoes/vbznot/rbneed/vbmore/jjrthan/in64/cdvps/nnsto/toperform/vbadequately/rb(详见表1)。通过执行命名实体检测,确定vp(虚拟处理器)是句子中的主题,因此[ne]被附加在命名实体之后:in/inthe/dtmanagement/nnpartition/nndoes/vbznot/rbneed/vbmore/jjrthan/in64/cd[vps/nns][ne]to/toperform/vbadequately/rb。

在从kb文章标记所有提取的句子之后,存在可以确定kb文章的相关性的几条其他信息。例如,指示设置一个或多个参数值的kb文章可能暗示kb文章被编写以修复特定问题。例如,将enabledhcp设置为1(指示为真)启用动态主机控制协议(dhcp),使得服务器能够自动将互联网协议(ip)地址分配给计算机。首先,具体关键字的出现可能指示kb文章包括解决问题的信息。具体关键字可以包括:(a)比较级形容词或动词,诸如更多、更大、更强、更小、更少、更早等等;(b)最高级形容词或动词,如最多、最少、高达、极限、上限、下限等,(c)意思是“等于”的动词,诸如等于、设置为等等;(d)数字的指示,诸如整数、浮点、版本、布尔等等;以及(e)否定,诸如不、否等等。第二,除了出现关键字之外,还可以确定关键字的顺序和关键字之间的距离。第三,特定上下文中出现某些特殊词语,诸如在比较级形容词之后出现“比”,等于之后出现“to”,数字和比较级形容词之间出现“和/或”等等,上述词和结构的出现指示句子包括值类型表达式的高可能性。两个词a和b之间的距离函数dist(a,b)可以被定义为:

其中a和b是句子中的两个词,并且maxdistance被设置为特定阈值(比如,20)。

基于上述三条信息,定义了以下特征:

表1-特征定义

表2-词类缩写词

kb文章108可以包括为技术术语或参数键提供含义的上下文词。例如,除了在配置快照(例如,域特定信息)中捕获与参数键和值有关的信息的词之外,kb文章108可以包括与词相关联的上下文信息(例如,围绕每个词的上下文),其可以促进准确匹配。例如,在句子“setthetcptimedwaitdelaysettingto30”中,可以将参数键“tcptimedwaitdelay”与上下文“30”一起进行索引,以使得能够准确匹配和从kb文章108取回相关的文章。为了解决标识上下文词的问题,向量空间模型可以用于将kb文章108中的每个kb文章108表示为存储在反向索引114中的词袋。在一些实现方式中,反向索引114的反转文件结构可以不仅包括个体术语以及这些术语出现在其中的文档,而且还包括位置偏移量,以实现接近度搜索查询(例如,术语x在术语y附近)。例如,位置偏移量可以标识在特定kb文章中第一术语与第二术语相距多少位置。

kb文章108可以包括技术术语。在一些情况下,技术术语可以使用特定类型的拼写,诸如骆驼拼写法(骆驼拼写法)词,其中写入复合词或短语,使得每个词或缩写以大写字母开头。技术术语getmethod和securitylogoverwrite是骆驼拼写法词的示例。单独使用关键字匹配,查找“securitylog”的查询不太可能与securitylogoverwrite匹配。然而,通过在执行文档分析118时考虑许多技术术语被使用缩写和复合词表达的事实,查找“securitylog”的查询将能够与securitylogoverwrite匹配。

标识对配置问题的解决方案的查询可以导致对约束的评估。例如,查询“numoflogicalprocessors=6”可以取回逻辑上适用于查询的匹配文本,诸如“逻辑处理器的数量应小于或等于8”。在这种情况下,可以枚举数值,例如,“lessthanorequalto8”可以用集合[1,8]代替,使得对“6”的搜索取回文本“lessthanorequalto8”。

与仅搜索术语相比较,搜索术语以及术语的同义词可以产生显著地更多的匹配项。因此,可以将查询中对的术语的搜索扩展为包括该术语的同义词。例如,可以扩展对“sql”的查询,以包括对同义术语的查询,诸如“sqlserver”、“sqlserverdatabase”、“sqlengine”等。可以在运行时执行扩展查询术语以包括同义词(例如,当接收到查询时(“查询时同义词扩展”)),或在离线时(在索引期间(“索引时同义词扩展”))。确定在查询时(例如,运行时间)还是在索引时(例如,离线)执行同义词扩展涉及到典型时空折衷。例如,在查询时的同义词扩展可能会消耗较少的索引空间,但是因为在收到查询后执行多个查询(每个同义词一个查询),所以可能会增加查询延迟。相比之下,在索引时的同义词扩展可能会消耗更多的空间,以便索引多个术语的同义词,但是可能会减少查询延迟。

另外,图1中的系统1执行智能同义词扩展。例如,句子“installsqlserver”中的表征“sql”的朴素同义词扩展可能会产生“install[sql,sqlserver]server”。为了解决这个问题并且执行智能同义词扩展,首先确定“sqlserver”是个命名实体,以使得能够在正确的候选短语中执行同义词扩展,例如,同义词扩展在“sqlserver”上而非在“sql”上执行。

为了解决标识术语是否是技术术语、约束评估以及kb文章108中术语的同义词的问题,可以在离线索引建立阶段102期间以及在在线查询处理阶段104期间使用多个过滤器。

在在线查询处理阶段104中,反向索引114用于自动取回kb文章108的一部分,其包括针对特定配置快照的配置问题的解决方案。例如,可以接收(或取回)与计算设备相关联的配置快照。配置快照可以包括一个或多个参数键值对,例如,与计算设备相关联的配置参数和配置参数的对应值。可以使用语义匹配来根据kb文章108的反向索引114来查询来自快照的配置参数键和值设置。为了标识反向索引114中的匹配项,可以将配置参数键和值设置转换为查询,并且处理每个查询。例如,查询120(例如,从配置快照中的配置参数键和值设置中导出)可以被转换为归一化形式并且分发到一个或多个匹配引擎132。匹配引擎可以基本上在同一时间(例如,并行地)执行多个搜索,以取回kb文章108的一部分,其中每个取回的kb文章具有对应的得分。可以聚合来自匹配引擎中的每个匹配引擎的结果以创建最终的结果集合。

可以使用查询处理122来处理每个查询120。查询处理122可以包括查询解析124、查询分析126和查询模糊128。在使用查询处理122处理查询120之后,可以创建多个查询并且使用查询分发124来分发。多个查询中的每个查询可以被分发给多个匹配引擎126中的一个匹配引擎以确定反向索引114是否包括匹配项。

根据反向索引匹配配置快照的输入查询120可以包括以下一项或多项:(1)处理一致性,(2)模糊,以及(3)匹配逻辑。处理一致性包括通过以类似于在离线索引建立阶段102期间处理kb文章108的方式处理查询120,来从kb文章108取回匹配文章。例如,在离线索引构建阶段102期间,来自kb文章108的文档可以被转换成小写,以实现不区分大小写的匹配。类似地,可以使用查询分析(模块)126对每个查询(例如,查询120)进行处理。查询分析模块126可以通过使用通用术语(例如,numeric、boolean、enumerated)重写任何值类型(例如,如7或七之类的数字、如真或假之类的布尔词、诸如{1,2,4}之类的枚举集合)来准备查询120的抽象表示,并且单独地存储值以由匹配引擎126进行约束评估。在在线查询处理阶段104期间,查询分析模块126执行的处理可以类似于在离线索引建立阶段102期间对输入语料库(例如,kb文章108)执行的处理。图3图示了查询处理122可以用来处理查询120的各种过滤器。

查询模糊(模块)128可以基于原始查询120来构造附加查询。对于一些查询,使用精确关键字可能不返回任何结果。例如,输入查询“lsacrashonauditfailflag”的搜索可能只返回包含来自该输入查询的所有术语的文档,但是可能不会返回例如缺少“auditflag”的文档。因此,从原始查询120创建具有近似项的附加查询(例如,“近似查询”)可以产生更多的匹配的kb文章。近似的字符串匹配(被称为模糊字符串搜索)是查找与模式近似(而非精确)匹配的字符串的技术。可以通过查找给定的字符串内部的近似的子字符串匹配并且查找与模式近似(但不精确)匹配的字典字符串,来接近近似的字符串匹配。给定查询120作为输入,查询模糊模块128可以构造查询120中的术语的幂集,以创建与包含来自查询120的术语子集的文档匹配的近似搜索。

对于诸如“errorid823”之类的查询,由于术语之间存在附加词,所以精确搜索或甚至近似搜索可能不会返回包括文本“theerroridwasloggedtobe823”的文档。在这种情况下,查询模糊模块128可以创建允许其他术语出现在输入查询术语之间的多个查询(例如,放松查询)。查询分发器130可以采用由查询模糊128创建的多个查询,并且基本上并行地调用多个匹配引擎132。匹配引擎132中的每个匹配引擎可以执行不同类型的匹配。例如,匹配引擎132可以包括精确匹配引擎134、接近匹配引擎136和其他类型的匹配逻辑138。来自kb文章108的匹配文档通过匹配引擎132识别,通过排名引擎140聚合并且排名,并且提供(例如,输出)排名后的结果142。

为了执行从kb文章108自动取回文章,识别配置快照内的个体配置参数与kb文章108之间的关系。例如,给定具有约束的参数键-值对,图1的系统100取回满足真值条件的kb文章108的一部分。为了说明,给定查询“numoflogicalprocessors=7”,系统100取回其中逻辑处理器的数目被设置为7的kb文章。因为kb文章108可能是以自然文本编写的,所以系统100可以将numoflogicalprocessors映射到自然文本,诸如“setthelogicalprocessorsto7”。另外,正在搜索的值可能不包括在任何kb文章中,例如,包括“thenumberoflogicalprocessorsislessthan8”的kb文章不包括7,但仍然满足约束。系统100可以使用至少两种类型的匹配器:(1)精确匹配(引擎)134和(2)接近度匹配(引擎)136。精确匹配引擎134可以使用基本搜索机制,其寻找包含精确形式的键-值对的文档。当约束被包括在查询120中时,接近度匹配引擎136可以使用基于接近度的近似匹配以及约束评估,来查找满足约束的处于彼此的给定接近度内的两个术语。在查询分析126期间,当前表征(例如,术语)可以包括相对于先前表征的位置,其支持使用反向索引114来执行接近度匹配。

接近度匹配136可以包括至少两个阶段,例如,取回阶段和约束评估阶段。对于输入查询120,除了取回相关文档(例如,kb文章108的文章的一部分)之外,接近度匹配136还可以跟踪与查询120匹配的术语出现的位置。例如,可以在反向索引114中跟踪(例如,存储)术语出现的位置。另外,接近度匹配136可以执行修剪以去除超出指定距离的匹配。例如,当给接近度匹配136提供约束“logical,processors,distance=1”时,可以取回包括彼此相邻的术语“logical”和“processors”的的文档。随后,在在线查询处理阶段104期间,可以使用反向索引114来获得匹配的位置偏移之间的词。注意,将距离值设置得太高可能产生假肯定(例如,“logical”和“processors”出现在不同的句子中),而将它设置太低可能会导致假否定(例如,将距离=1用于句子“theprocessorisalogicalone”可能不会输出“logicalprocessor”)。使用并置分析,将距离设置为10和20之间(并且包括)的范围内的值提供了很好的折衷。例如,在一些实现方式中,距离可以被设置为15。在一些其他实现方式中,表示句子边界的标点符号(例如,“。”、“?”)也可以用于确定距离。

在一些情况下,约束评估阶段可以在取回相关文档以及输入查询术语的匹配位置之间的词集合之后被执行。为了执行真值条件评估,可以使每个匹配通过表征提取过程,这在图5中更详细地描述。在一些情况下,可以即时(例如,基本上实时地)执行真值条件评估。基于语言分析,表征提取过程可以使用(a)自然文本中经常使用的比较表达式(例如,“lessthanorequalto”、“setto”、“greaterthan”等)和(b)用于推断值的类型系统(例如,数值、布尔型、浮点型、版本号、枚举集合等)。使用该信息,可以提取比较表达式以及任何周围值。可以构造抽象语法树(ast)以使得个体表达式能够被评估。查询分析126可以对在输入查询120中查找到的值进行抽象化(例如,使用值-类型过滤器),并且用通用类型替换值。可以构造ast,其中运算符作为根节点,操作数(例如,从查询和取回到的文档提取的值)作为叶节点。可以在存储器中编译ast并且即时(例如,基本上实时地)评估ast,以获得真值条件。可以返回满足真值条件的匹配,以便排名引擎140进行后续排名。

例如,当查询120包括“numoflogicalprocessors8”时,查询分析126可以对查询120进行过滤,以获得“numlogicalprocessor8”。查询120中的值-类型“8”可以被提取为单独的字段,并且用通用术语(例如,“numeric”)替代。可以使用规范化的查询“numlogicalprocessornumeric”和所取回的相关文档标识符来执行接近度搜索。对于每个匹配,可以从反向索引114获得位置信息以及位置偏移之间的文本。可以解析自然文本,并且可以创建对应的表征表示(例如,“lessthan”可以由“<”表示,“eight”可以由“8”表示,“greaterthan”可以由“>”表示等)。可以构造ast,其中叶表示要比较的值。ast的根节点可以表示要在叶上执行的操作类型(例如,<、>、=、≤、≥等等)。可以编译ast(例如,使用编译器)来确定条件是否被满足。可以提供匹配文档,用于排名引擎140进行排名。在图5中更详细地描述了创建和评估ast的过程。

排名引擎140可以对来自kb文章108的候选(例如,匹配)文章进行评分和排名。因为可以使用多个匹配引擎132(还参见图6),所以排名可以在多个阶段中发生。对于来自精确匹配134的结果,可以使用经修改的术语频率-逆序文档频率(tf-idf)度量来对所取回的结果评分。在一些情况下,tf-idf还可以用于对来自执行模糊(例如,近似)匹配的结果进行评分。在tf-idf中,特定文档中的每个术语都与其在该特定文档中出现的次数相关联。然后根据术语跨语料库(例如,kb文章108)的常见度来对这些术语进行加权。tf-idf背后的原理是,与更频繁出现的术语相比,很少出现的术语与文档的含义更密切地相关。可以对文档d和查询q计算得分s(q,d)如下:

其中c(q,d)是在文档d中查找到的来自查询q的查询术语的数目与查询q中的术语的总数目的归一化比例。因此,所有查询术语在特定文档中的存在将增加该比例,并且一个或多个查询术语在特定文档中的缺失将降低该比例。

查询模糊模块128可以“模糊”至少一些查询(例如,查询120)。与来自原始查询的命中相比较,来自“模糊”查询的命中获得较低的得分。因此,定义模糊因子f(q)以考虑“模糊”。f(q)被定义为模糊查询q和原始查询q之间的距离的倒数,其中距离被定义为需要被添加到q以获得q的术语的数目。注意,对于q=q,f(q)=∞(例如,无穷大),从而给出无效得分。为了处理这种情况并且防止在分母中为零,通过将1加到分母上来应用拉普拉斯校正,其在q=q时得出f(q)=1。

在等式(1)中,tf(d)是文档d中术语t的频率。因此,给定术语出现得较多的文档获得较高的得分。在等式(1)中,idf(t)是逆文档频率,其测量术语在所有文档中是常见的还是罕见的,并且通过采用文档d的总数目和包含术语t的文档的数目的比例来确定,如下:

为了对接近度匹配的结果进行评分,考虑了术语之间的可允许位置距离。接近度匹配的得分与术语之间的位置距离成反比,例如,匹配的术语之间的距离越大,所分配的得分越小。接近度匹配项的得分可以使用以下公式来计算:

在等式(3)中,与在等式(2)中一样,c(q,d)是在文档d中查找到的来自q的查询术语的数目与查询q中的术语的总数目的归一化比例。lavg是文档的平均长度,而l(d)是文档d的长度。f(q)是先前确定的模糊因子,被计算为1/(d1+d2),其中d1是查询q与原始查询q的距离,而d2是为了近似q在匹配的文档中术语的位置移动的数目。例如,当q=q=“crashonaudit”时,因为q=q,所以没有模糊,因此d1=0。然而,对于匹配的文本“auditflaghadthecrashbit”,d2=5,因为需要4个位置移动以将“crash”移动到“audit”的位置,然后需要1个位置移动以将“audit”移动到下一位置,从而导致最终的模糊因子为1/5(例如,0.2)。

排名引擎140从匹配器134,136和138接收聚合结果。系统100可以使用各种技术来聚合来自匹配器134,136和138中的每个匹配器的结果。例如,在线查询处理阶段104可以在排名加权的情况下执行线性聚合:

在等式(4)中,wx是分配给匹配器mx的权重,而n是所实施的匹配器的总数目。使用灵敏度分析,可以使用设置wexact=1.0和wproximity=0.25。经排名的结果142包括来自kb文章108的前k个文章,这前k个文章是按照所有检测到的错误配置的得分进行排序的,并且是基于相关性进行过滤的。

在在线学习阶段106中,人类的指导可以用于提高经排名的结果142的准确性和排名。可以使用已经例如由专家标记的kb文章的训练集合,来训练分类器144(例如,经由机器学习)。在提供结果146之前,分类器144用于基于相关性来对经排名的结果142进行分类。可以提供交互式用户接口148以接收用户反馈150。用户反馈150可以用于分类器144的重新校准152。例如,用户反馈150可以用于重新校准分类器144,以在结果146中去除(或降级)用户反馈150指示不相关的kb文章。

因此,系统100可以用于识别计算设备中的配置问题。系统100可以使用多个服务器来实施,并且可以作为基于云的服务被访问。在离线索引建立阶段102中,对kb文章108进行解析和分析以创建索引(例如,反向索引114)。在在线查询处理阶段104中,接收包括具有配置问题的计算设备的配置快照的查询120。查询120可以由计算设备的软件应用或操作系统发送。在在线查询处理阶段104中,可以以类似于在离线索引建立阶段102中处理kb文章108的方式来处理查询120。查询120中的术语可以被解析和分析。在一些情况下,查询120中的术语可以被模糊,以识别具有来自查询120的类似术语而非精确术语的kb文章。来自查询120的术语和模糊后的术语被分发给多个匹配引擎,至少包括至少精确匹配引擎和接近度匹配引擎。来自匹配引擎132的结果被聚合和排名,以提供经排名的结果。在在线学习阶段,可以使用机器学习技术(例如,支持向量机、贝叶斯等)来创建分类器144。可以请求用户反馈并且将其合并到分类器144中。这样,系统100可以提供结果146,该结果146包括描述解决计算设备的配置问题的解决方案的kb文章108的一部分。

图2是根据一些实现方式的包括客户站点和用于检测问题并且识别具有解决方案的文章的检测器的说明性架构200。例如,检测器202可以监测客户站点204处的多个计算设备。周期性地(例如,以预先确定的间隔)或者响应于识别出配置问题,检测器202可以接收配置快照206。配置快照206中的每个配置快照可以与客户站点204处的特定计算设备相关联。检测器202可以自动(例如,没有人类交互)(i)取回(例如,拉动)配置快照206,(ii)接收(例如,推送)配置快照206,或其任何组合。例如,检测器202可以从客户站点204处的个体计算设备周期性地取回配置快照206。作为另一示例,以预先确定的时间间隔(例如,每天),检测器202可以请求客户站点204处的个体计算设备向检测器202发送配置快照206。作为另一示例,客户站点204处的每个个体计算设备可以自动地向检测器202发送配置快照206。作为又一示例,如果检测器202确定客户站点204处的特定计算设备存在问题,则检测器202可以请求特定计算设备发送配置快照206。基于配置快照206,检测器202可以识别来自kb文章108的建议修复,并且向客户站点204处的人员(例如,站点管理员、最终用户等)提供建议修复208。

检测器202可以从配置快照206提取参数键-值对210。例如,为了检测配置问题,参数键-值对210可以包括与客户站点204处的计算设备相关联的配置参数及其对应的值。检测器202可以将配置快照206解析成多个独立的键-值型查询的集合212。每个查询被转换成抽象形式(例如,使用图1的查询处理122),并且被分发到多个匹配器(例如,匹配引擎132)。最后,来自每个匹配器的结果被发送到排名引擎(例如,排名引擎140),该排名引擎聚合得分并且显示具有最高得分的kb文章作为建议修复208。在一些实现方式中,检测器202可以提供可视仪表板216,其显示各种类型的信息。例如,可视仪表板216可以标识:当前在客户站点204处有多少台计算机已经被识别为具有配置问题,已经为配置问题提供了多少个建议修复208,在预先确定的间隔中(例如,在最近24小时、上周、上个月等中)修复了多少个配置问题,与客户站点204有关的其他信息,或其任何组合。

图3是根据一些实现方式的包括处理过滤器的流水线的说明性系统300。系统300图示了在使用索引来查找匹配文章之前,如何使用过滤器的流水线从kb文章提取表征以用于索引,以及如何使用至少一部分过滤器来处理查询。

索引阶段

在kb文章108的解析期间,每个文本序列被建模为确定性有限词自动机(dfwa),例如,用于对输入文本的处理建模的自动机。dfwa包括状态q(例如,表征位置)的有限集合和转换函数d,转换函数d将状态和输入符号作为自变量,并且返回状态。给定术语序列dfwa,执行文本表征化302。文本表征化302包括过滤,诸如丢弃标点符号,从字符移除重音,将词改变为基本形式(词族化(lemmatizing),例如,将词的不同变形形式组合在一起,使得它们可以作为单个项目被分析)等等。文本表征化302输出被进一步处理的表征流304。图12更详细地描述了创建和过滤dfwa。

为了支持对技术词汇的查询并且支持对自然文本的约束评估,可以使用多个过滤器来执行规范化306。规范化306可以将表征流304中的表征转换成标准化(例如,归一化)格式。骆驼拼写法过滤器308将以骆驼拼写法编写的术语扩展为组成词,以实现自由形式搜索。存在通常在与计算设备有关的技术文章中出现的五种类型的骆驼拼写法词。(1)标准类型的“骆驼拼写法”可以用于源代码或配置实体中的类型名称和引用,例如,getmethodname。(2)内部类型的“骆驼拼写法”可以用于标识符名称,例如,methodname。(3)第三类型的“骆驼拼写法”可以针对最后一个术语使用全部大写字母,例如,getbit。(4)第四类型的“骆驼拼写法”可以使用所有大写字母来标识缩写或布尔位,例如,enabled。(5)骆驼拼写法和大写字母的混合可以用于将缩写包括在词内词,例如,weakrsakeys。当输入包括骆驼拼写法词时,骆驼拼写法过滤器308输出原始表征及其组成词。例如,术语“securitylogoverwrite”被转换成表征[securitylogoverwrite,security,log,overwrite]。

值类型过滤器310对自然文本执行约束评估。在索引阶段(例如,离线索引建立阶段102)期间,可以通过向索引提供关于值类型(例如,对于8为numeric,对于真为boolean)的信息来提高索引阶段的准确性和速度,其中具有与值相同的表征位置。因此,给定dfwa,值类型过滤器310检测表征的类型(例如,诸如1,2,3之类的数字,诸如真/假之类的布尔值,诸如1.0.0.1之类的版本号),并且输出替换表征,其具有与输入表征相同的位置。例如,kb文章可能包括“insql,ifthenumberoflogicalprocessorsislessthanorequalto8,settheinmemorybittotrue···”。在索引期间创建的信息可能指示“8”是数字字段,并且“true”是布尔字段。例如,“insql,ifthenumberoflogicalprocessorsislessthanorequalto8numeric,settheinmemorybittotrueboolean···”。注意,8/numeric和true/boolean的位置信息在索引(例如,反向索引114)中相同,例如,分别为15和21。创建索引时存储在索引中的值信息可以在查询处理阶段期间被使用,以提供更快更准确的约束评估。

小写过滤器312输出来自表征流304的输入表征的小写版本。注意,在应用骆驼拼写法过滤器308之后使用小写过滤器312,因为否则骆驼拼写法词的属性可能不被保留,并且扩展可能不可行。在一些实现方式中,过滤器308,310和312可以连续地被执行,其中首先应用骆驼拼写法过滤器308,随后是值类型过滤器310,然后是小写过滤器312。

在执行同义词搜索之前,截断314通过滤除常用的词或短语来减少同义词扩展的候选数目。截断314可以包括禁用词过滤器316,该禁用词过滤器316滤除编写kb文章108的语言中的频繁出现的词。例如,对于以英文编写的文章,禁用词过滤器314滤除常用词,诸如‘a’、‘the’、‘and’、‘my’、‘i’等等。

在同义词扩展318中,命名实体过滤器320可以用于在使用同义词扩展命名实体之前识别命名实体。同义词扩展318可以使用一个或多个字典。例如,在一些实现方式中,基于来自kb文章108的词来创建第一字典,并且第二字典包括将词分组成同义词集合的词汇数据库(例如,类似于),并且记录同义词集合之间的多个关系以及每个同义词集合的成员。第二字典可以是字典和辞典的组合。

命名实体过滤器320用于在使用同义词扩展命名实体之前识别命名实体。例如,在“installsqlserverinyourmachine”句子中,命名实体过滤器320辨识出“sqlserver”是命名实体,因此是同义词扩展的候选。当命名实体过滤器320辨识出一个或多个表征的集合将被分组为命名实体时,命名实体过滤器320通过将该组中的表征的位置信息调整到命名实体中的第一表征的位置来修改dfwa。

命名实体过滤器320可以执行几个步骤来辨识命名实体。首先,自由形式文本可以使用重复模式挖掘和统计自然语言处理,来从输入语料库(例如,kb文章108)自动获得命名实体的列表。例如,识别最频繁出现的短语。残留逆文档频率(ridf)可以用于识别来自最频繁出现的短语的重要短语。例如,具有高ridf的短语是特定于域的短语,并且具有不能归因于偶然发生的分布。第二,可以为快速命名实体查找创建特定数据结构。例如,在从kb文章108识别出命名实体集合之后,作为预处理步骤,命名实体过滤器320建立图形,以支持快速查找。在图形中,节点表示词,并且如果词一起出现在命名实体集合中的短语中,则词边连接这些词。例如,给定词[sql,sqlserver,sqlserverdatabase,sqlserver2005],最终的图形包括四个节点(sql,server,database,2005),以及来自sql->server,server->database以及和server->2005的边缘。构造图形的过程在图4中更详细地描述。第三,该图形用于在创建索引期间执行命名实体辨识。

通过在索引构建阶段期间执行同义词扩展,可以减少查询延迟。另外,技术词汇的同义词很少改变,因此将同义词存储在索引(例如,反向索引114)中不需要频繁地重新创建索引以合并新的同义词。同义词过滤器322以与命名实体过滤器322类似的方式操作,除了查找到具有同义词的表征之后,所有同义词被添加到dfwa,并且同义词的位置值被设置为原始表征的位置值。

为了考虑到语言中的通用词,可以使用词汇数据库(db)过滤器324来添加来自词汇数据库(诸如)的同义词。注意,同义词过滤器322通常用在命名实体过滤器320之后,以防止不正确的同义词扩展。

归一化326可以被执行以将词归纳为其根形式,使得根词的不同形式是等效的。例如,术语upgraded、upgrading、和upgrade都可以被归一化为根形式,诸如‘upgrade’、‘upgrad*’、‘upgrad’等。词干提取过滤器328可以用于识别每个表征的词干词。在许多情况下,词的语义意思可能比词本身更重要。例如,“upgradingsoftware”和“upgradestosoftware”描述相同的概念,例如,软件升级。因此,将词转换成其根(例如,词干)形式是有用的。词干提取过滤器328使用词干提取算法,以从英文词去除常见形态韵尾和音调韵尾(例如,词‘connection’、‘connections’、‘connected’、以及‘connecting’都被解析为词干‘connect’)。

查询处理阶段

在查询处理阶段(例如,图1的在线查询处理阶段104)期间,接收查询212。查询212包括配置快照(或用于执行kb文章108的搜索的其他信息)。查询212的文本通过文本表征化被表征化以创建表征流304。使用骆驼拼写法过滤器308、值类型过滤器310和小写过滤器312对表征流304执行规范化306。禁用词过滤器316可以用于去除对查询212的意义没有显著贡献的禁用词(例如,如“a”、“the”等之类的词)。所得到的表征被归一化,例如,使用词干提取过滤器328,以将表征归纳为词干。然后使用从表征导出的词干来执行索引的搜索。

图4是根据一些实现方式的用于执行命名实体辨识的说明性系统400。图3中描述的过程包括处理技术文章(例如,图1的kb文章108)以识别命名实体的列表。命名实体过滤器320在离线索引建立阶段102期间建立图形,以在运行时(例如,在线查询处理阶段104)期间支持快速查找。例如,命名实体引擎402可以用于创建图形404。在图形404中,每个节点表示词,并且每个边连接在命名实体列表中的短语中一起出现的词。例如,表征流304可以包括短语“sqlserverisupdated”。命名实体过滤器320识别出命名实体[sql,sqlserver,sqlserverdatabase,sqlserver2005]。图形404包括四个节点(sql,server,database,2005)以及边sql->server、server->database和server->2005。

当正在创建索引时,图形404可以用于执行命名实体辨识。在索引期间,对于每个表征,确定该表征是否作为命名实体而存在,例如,图形是否包括具有该表征的字符串作为其值的节点。如果图形包括具有该表征的字符串作为其值的节点,则确定下一表征是否在图形中作为该表征的字符串的邻居而存在。如果存在这样的下一表征,则该下一表征与该表征(例如,先前表征)级联,并且被推送到堆栈上。只要下一表征作为先前表征的邻居而存在,就继续执行此过程。当下一表征不存在时,弹出堆栈,并且给所级联的字符串赋予与堆栈中的第一条目相同的位置。例如,输入表征流406可以包括“sqlserverisupdated”。图4中示出了原始表征序列408。执行命名实体辨识410,并且在最终表征序列412中,“server”的位置信息被设置为“sql”的位置信息。

示例过程

在图5、图6、图7、图8以及图9的流程图中,每个框表示可以以硬件、软件或其组合来实施的一个或多个操作。在软件的上下文中,框表示计算机可执行指令,当由一个或多个处理器执行时,这些指令使得处理器执行所记载的操作。通常,计算机可执行指令包括执行特定功能或实现特定抽象数据类型的例程、程序、对象、模块、组件、数据结构等。描述框的次序不旨在被解释为是限制,并且任何数目的所描述的操作可以以任何次序和/或并行地组合以实施该过程。为了讨论的目的,如上文所描述的,参考架构/系统100,200,300和400来描述过程5,6,7,8,和9,但是其他模型、框架、系统和环境也可以实现这些过程。

图5是根据一些实现方式的用于执行约束评估的过程500的流程图。该过程500可以在在线查询处理阶段104期间被执行。

在502处,接收并且处理查询。例如,在图1中,使用查询处理122来处理查询120。为了说明,可以使用来自图3的过滤器的至少一部分(例如,可以不使用同义词扩展318和归一化326),对查询“numoflogicalprocessors7”执行查询分析,以获得“numlogicalprocessor7”。查询中的值-类型“7”被提取到单独的字段中,并且用通用术语“numeric”代替。

在504处,识别与查询中的术语匹配的文档。例如,在图1中,使用通用查询“numlogicalprocessornumeric”执行接近度搜索,并且取回相关的文档标识符。例如,可以识别具有文档标识符(id)3,67和124的三个文档。

在506处,可以确定这些文档中的每个文档中的每个匹配词的位置信息。从索引(例如,图1的反向索引114),为每个匹配获得位置信息以及位置偏移之间的文本。

在508处,可以使每个匹配通过表征提取模块来提取表征。表征提取模块解析自然文本,并且构造对应的表征表示。例如,“lessthan”由表征“<”表示,“seven”由“7”表示,“greaterthan”由“>”表示等等。表征提取模块可以使用两条信息:(1)自然文本中经常使用的比较表达式(例如,“lessthanorequalto”、“setto”、“greaterthan”等)和(2)确定(例如,推断)值(例如,数值、布尔、浮点、版本号、枚举集合等)的简单类型系统。使用这两条信息,表征提取模块可以提取比较表达式以及任何周围的值。例如,可以从文档id为3,67以及124的文档中提取表征“7”以及“≤”、“>”和“=”。

在510处,为要评估的个体表达式构造抽象语法树(ast)。构造ast,其中叶表示要被比较的值,并且根节点表示要在叶上执行的操作的类型(例如,<、>、=等等)。在图5中图示了文档id3,67和124的ast。

在512处,可以评估约束。例如,ast可以被编译在存储器中并且被评估以获得真值条件。返回满足真值条件的匹配以进行后续排名。在一些情况下,真值条件评估可以“即时”(例如,基本上实时地)被执行。

在514处,其约束评估为true的(多个)文档被提供用于后续排名。在该示例中,与文档标识符3相对应的文档(其约束评估为true)被取回并且被提供以用于排名(例如,通过排名引擎140)。

图6是根据一些实现方式的用于提取相关查询的过程600的流程图。过程600可以在图1的在线查询处理阶段104和在线学习阶段106期间被执行。

在602处,接收查询q。在604处,查询q被“模糊”以创建一个或多个模糊查询。例如,在图1中,查询处理122可以接收查询120,并且执行查询模糊128以创建模糊查询。

在606处,可以确定精确匹配(例如,对于查询和模糊查询)。在608处,可以确定接近度匹配(例如,用于查询和模糊查询)。例如,在图1中,查询120和模糊查询可以被分发到多个匹配引擎132,诸如精确匹配引擎134和接近度匹配引擎136,以确定精确匹配和接近度匹配。

在610处,来自匹配引擎的结果可以被聚合和排名。例如,在图1中,排名引擎140可以对匹配引擎132的输出进行聚合和排名,以创建经排名的结果142。

在612处,可以例如通过确定包括在结果中的个体文档的相关性得分,来识别相关结果。在616处,可以提供相关文章(例如,与解决诸如配置问题之类的特定问题相关)。例如,在图1中,分类器144可以从经排名的结果142中识别相关项目(例如,并且丢弃非相关项目,以产生结果146)。

图7是根据一些实现方式的包括基于快照(例如,与计算设备相关联的数据)创建查询的示例过程700的流程图。过程700可以由图2的检测器202执行。虽然使用具有配置问题的计算设备的快照的示例来描述图7、图8和图9中的过程,但是本文中所描述的系统和技术可以在其他情形下应用于从知识库识别技术文章,包括识别具有其他类型的问题的解决方案的文章。

在702处,接收与具有配置问题的计算设备相关联的快照(例如,数据)。在704处,基于快照来创建查询。例如,在图2中,检测器202可以从客户站点204处的一个或多个计算设备接收配置快照206,并且创建查询212,以从kb文章108识别建议修复208。在一些情况下,快照可以包括错误日志、存储器转储(例如,出现问题时的存储器的内容)、注册表文件、或与计算设备相关联的其他信息。

在706处,从文章知识库中识别与查询中的术语精确匹配的第一文章集合。在708处,从文章知识库中识别与查询中的术语近似匹配的第二文章集合。在710处,第一文章集合和第二文章集合被聚合。在712处,对聚合的文章进行排名以创建经排名的结果。例如,排名引擎140可以聚合来自精确匹配引擎134的第一文章集合和来自接近度匹配引擎136的第二文章集合,然后对该聚合的文章集合进行排名以产生经排名的结果142。

在714处,确定经排名的结果中的每个文章的相关性得分。例如,可以从经排名的结果中丢弃相关性得分低于预先确定的阈值的文章。在716处,显示来自经排名的结果的文章的至少一部分。在720处,经由用户接口接收用户反馈。在722处,基于用户反馈来重新校准如何确定相关性得分,以改善随后的相关性得分。例如,在图1中,分类器144可以确定经排名的结果142中的每个经排名的结果的相关性得分,丢弃相关性得分低于预先确定的阈值的文章,并且在结果146中显示剩余的文章。用户反馈150可以经由用户接口148来接收,而分类器144基于用户反馈150来重新校准。

因此,检测器可以接收包括计算设备的配置的参数键-值对的快照。检测器可以解析配置快照,并且创建多个查询。检测器可以将多个查询分发到多个匹配引擎,其搜索文章知识库的索引,以识别包括计算设备的配置问题的解决方案的文章(而不仅仅是信息性文章)。

图8是根据一些实现方式的包括基于快照来创建多个查询的示例过程800的流程图。该过程800可以由图2的检测器202执行。

在802处,接收与具有配置问题的计算设备相关联的快照(例如,信息)。在804处,基于快照来创建多个查询。例如,在图2中,检测器202可以从客户站点204处的一个或多个计算设备接收配置快照206,并且创建查询212以从kb文章108识别建议修复208。在一些情况下,快照可以包括错误日志、存储器转储(例如,出现问题时的存储器的内容)、注册表文件、或与计算设备相关联的其他信息。

在806处,多个查询被分发到多个匹配引擎(例如,包括精确匹配引擎和接近度匹配引擎)。例如,在图1中,查询分发器130可以将由查询处理122产生的多个查询分发给匹配引擎132。

在808处,使用知识库的索引从文章知识库中识别一个或多个文档。例如,在图1中,匹配引擎132使用反向索引114来识别匹配的文章,其被排名引擎140聚合和排名。在810,812,814以及816中更详细地描述从文章知识库中识别一个或多个文档的过程。

在810处,每个查询的文本可以被表征化以创建表征流。在812处,可以确定每个文档中的匹配词的位置信息。在814处,基于表征,可以为文档中的每个文档创建抽象语法树。在816处,可以评估每个抽象语法树以识别这些文档中的、描述配置问题的解决方案的至少一个文档。例如,参见图5及附带描述。

在818处,提供一个或多个文档作为配置问题的候选解决方案。例如,在图1中,结果146被提供作为候选解决方案。

因此,检测器可以接收包括计算设备的配置的参数键-值对的快照。检测器可以解析快照并且创建多个查询。检测器可以将多个查询分发给多个匹配引擎,其搜索文章知识库的索引,以识别与计算设备的配置问题匹配的文章。匹配的文章可以被表征化,并且可以使用所得到的表征来构造和评估抽象语法树,以识别哪些匹配的文章包括解决计算设备的配置问题的解决方案(例如,而不仅仅是信息)。

图9是根据一些实现方式的包括解析与计算设备相关联的配置快照的示例过程的流程图。该过程900可以由图2的检测器202来执行。

在902处,解析与计算设备相关联的快照(例如,数据)以创建表征流。在904处,每个表征被转换成标准格式。在906处,表征流被扩展。例如,在图2中,解析配置快照206以创建查询212。在图3中,查询212被表征化以创建表征流304。表征流可以被扩展以包括表征的同义词。

在908处,对表征流中的一个或多个表征进行词干提取(stem)。例如,在图3中,词干提取过滤器328可以用于对表征流304中的至少一个表征进行词干提取。

在910处,每个表征序列被建模为确定性有限词自动机。例如,在图4中,在解析表征流304之后,创建图形404。

在912处,将表征流的至少一部分作为输入提供给多个匹配引擎,以搜索文章知识库的索引。例如,在图1中,查询分发器130将查询分发给匹配引擎132。

在914处,基于由匹配引擎查找到的匹配,从文章知识库中取回一个或多个文章。例如,在图2中,基于配置快照206来提供建议修复208。

因此,检测器可以接收包括计算设备的配置的参数键-值对的快照(例如,信息)。检测器可以解析配置快照以产生表征流。表征可以被转换成标准化格式,并且通过将表征的同义词添加到表征流来被扩展。每个表征序列可以被建模为确定性有限词自动机。检测器可以将多个查询分发到多个匹配引擎,其搜索文章知识库的索引,以识别与计算设备的配置问题相匹配的文章。匹配的文章可以包括解决计算设备的配置问题的解决方案(例如,而不仅仅是信息)。

示例计算设备和环境

图10图示了可以用于实施本文中所描述的模块和功能的计算设备1000(例如,托管检测器202的服务器)和环境的示例配置。计算设备1000可以包括至少一个处理器1002、存储器1004、通信接口1006、显示设备1008、其他输入/输出(i/o)设备1010和一个或多个大容量存储设备1012,这些部件能够诸如经由系统总线1014或其他合适连接彼此通信。

处理器1002可以是单个处理单元或多个处理单元,所有处理单元都可以包括单个或多个计算单元或多个核。处理器1002可以被实现为一个或多个微处理器、微计算机、微控制器、数字信号处理器、中央处理单元、状态机、逻辑电路、和/或基于操作指令来操纵信号的任何设备。除了其他能力之外,处理器1002可以被配置成获取和执行存储在存储器1004、大容量存储设备1012或其他计算机可读介质中的计算机可读指令。

存储器1004和大容量存储设备1012是用于存储由处理器1002执行以执行上文所描述的各种功能的指令的计算机存储介质的示例。例如,存储器1004通常可以包括易失性存储器和非易失性存储器(例如,ram、rom等)。进一步地,大容量存储设备1012通常可以包括硬盘驱动器、固态驱动器、可移动介质(包括外部和可移动驱动器)、存储卡、闪存、软盘、光盘(例如,cd、dvd)、存储阵列、网络附接存储装置、存储区域网络等等。存储器1004和大容量存储设备1012在本文中可以被统称为存储器或计算机存储介质,并且可以是能够存储计算机可读的处理器可执行的程序指令作为计算机程序代码的非暂态介质,计算机程序代码可以由作为特定机器的处理器1002执行,所述特定机器被配置成用于执行本文中实现方式中描述的操作和功能。

如上文所讨论的,计算设备1000还可以包括用于例如经由网络、直接连接等与其他设备交换数据的一个或多个通信接口1006。通信接口1006可以便于各种各样的网络和协议类型内的通信,包括有线网络(例如,lan、电缆等)、和无线网络(例如,wlan、蜂窝、卫星等)、因特网等等。通信接口1006还可以提供与外部存储装置(未示出)的通信,诸如在存储阵列、网络附接存储装置、存储区域网络等中。

在用于向用户显示信息和图像的一些实现方式中可以包括诸如监测器之类的显示设备1008。其他i/o设备1010可以是从用户接收各种输入并且向用户提供各种输出的设备,并且可以包括键盘、遥控器、鼠标、打印机、音频输入/输出设备等。

存储器1004可以包括可以用于从文章知识库中识别包括特定问题(诸如配置问题)的解决方案的一个或多个文档的模块和软件组件。例如,存储器1004可以包括应用1016、操作系统1018、反向索引114(或其他类型的索引)、查询处理122、匹配引擎132、排名引擎140、分类器144、结果116、kb文章108(或其他文档)、以及如本文中所描述的其他类型的应用和数据。

经训练的分类器

图11示出了用于建立和训练图1的分类器144的说明性过程1100。在框1102处,建立分类器。例如,可以编写实现一个或多个算法的软件指令以建立分类器144。算法可以实现机器学习、模式识别和其他类型的算法,诸如支持向量机。

在框1104处,可以使用训练文档1106来训练分类器。训练文档1106可以包括已经由人(例如,专家)预先分类的文档。

在框1108处,可以指示分类器对测试文档1110进行分类。测试文档1110可能已经由人类、另一分类器或其组合进行了预分类。可以确定分类器144已经对测试文档1110进行分类的准确性。如果准确性不满足所需准确性,则在1112处,可以调整分类器以获得所需准确性。所需准确性可以是预先确定的阈值,诸如百分之九十、百分之九十五、百分之九十九等。例如,如果分类器在分类测试文档时的准确性为百分之八十,而所需准确性为百分之九十,则可以通过基于分类测试文档1110的结果修改算法来进一步调整分类器。可以重复(例如,迭代地)框1104和1112,直到分类器的准确性满足所需准确性为止。另外,用户反馈150可以用于调整分类器(例如,执行图1的重新校准152)。用户反馈150可以被添加到训练文档1106中。

当分类器在1108处分类测试文档1110时的准确性满足所需准确性时,该过程可以进行到1114,其中可以使用验证文档1116来验证分类器的准确性。验证文档1116可能已经由人、由另一分类器或其组合进行了预分类。验证过程可以在1114处被执行,以确定分类器是否展现了朝向训练文档1106和/或测试文档1110的任何偏置。例如,验证文档1116可以是不同于测试文档1110或训练文档1106两者的文档。在1114处验证分类器的准确性满足所需准确性之后,经训练的分类器1118可以用于对技术文章进行分类。如果在1114处分类器的准确性不满足所需准确性,则可以在1104处使用附加的训练文档对分类器进行训练。例如,如果分类器展现了对来自训练文档1106和/或测试文档1110的词的偏置,则可以使用其他训练文档来训练分类器,以减少这种偏置。

因此,分类器144可以使用训练文档进行训练并且被调整以满足所需准确性。在已经验证了分类器144的所需准确性之后,分类器144可以用于确定由匹配引擎识别的技术文章的相关性得分,并且去除相关性得分不满足预先确定的阈值的文章。

创建和过滤dfwa

图12示出了根据一些实现方式的用于创建和过滤确定性有限词自动机(dfwa)的说明性过程1200。在1202处,构造dfwa(例如,使用知识库文章)。在1206处,添加状态s。在1208处,该过程等待接收表征。在1210处,当不再接收到表征时,已经创建了dfwa,并且构造dfwa的过程结束。例如,如图12所示,对句子“insql,ifthenumberoflogicalprocessorsislessthanorequalto8,settheinmemorybittotrueandusethesamenumberofdatafilesaslogicalprocessors”进行解析,以创建dfwa的示例。

在1204处,使用过滤器来修改在1202处创建的dfwa。例如,过滤器可以用于从dfwa中去除标点符号。在1212处,该过程进行到1214,以等待接收表征(例如,从dfwa)。如果在1214处接收到表征,则在1216处理表征。处理表征包括:在1218处确定表征的类型以及是否存在处理该类型的表征的处理机。例如,如果表征被识别为标点符号的类型,并且存在标点符号处理机,则可以从dfwa中去除该状态。可以重复步骤1214,1216和1218,直到dfwa中的表征已被处理(例如,过滤)为止,并且过程在1220处结束。在图12中图示了已经由标点符号过滤器修改的dfwa的示例。

在图5中,过滤器的流水线用于从kb文档中提取表征进行索引。为了提取表征,来自kb文章的文本序列被解析为dfwa。dfwa包括有限状态集合q(例如,表示表征位置)以及转换函数d,转换函数d采用状态和输入符号作为自变量,并且返回状态。给定术语序列dfwa,执行文本表征化,其中执行附加过滤,诸如丢弃标点符号,从字符中去除重音,或将词改变为基本形式(词族化)。在对文本流进行表征化之后提取的最终术语被称为表征。过滤过程可以被视为dfwa的顺序变换,例如,每个过滤器可以使用两种操作中的一个操作来修改dfwa:状态或转换函数的扩展或修剪。图6图示了dfwa是如何从例句构造的以及如何通过标点符号过滤器以去除标点符号。注意,在执行1204之后,已经从dfwa中去除“逗号”和“句号”,并且转换函数已经被修改以反映向新状态的转换,例如,在状态2之后,遇到词“if”将使dfwa转换到状态4。

本文中所描述的示例系统和计算设备仅仅是适用于一些实现方式的示例,并且不旨在暗示对可以实现本文中所描述的过程、组件和特征的环境、架构和框架的使用或功能的范围的任何限制。因此,本文中的实现方式与许多环境或架构一起操作,并且可以在具有处理能力的通用和专用计算系统或其他设备中被实现。通常,可以使用软件、硬件(例如,固定逻辑电路)或这些实现方式的组合来实现参考附图所描述的功能中的任一功能。本文中所使用的术语“模块”、“机制”或“组件”通常表示软件、硬件或软件和硬件的组合,其可被配置成实现规定的功能。例如,在软件实现方式的情况下,术语“模块”、“机制”或“组件”可以表示当在一个处理设备或多个处理设备(例如,cpu或处理器)上执行时执行指定任务或操作的程序代码(和/或声明型指令)。程序代码可以被存储在一个或多个计算机可读存储器件或其他计算机存储设备中。因此,本文中所描述的过程、组件和模块可以由计算机程序产品来实现。

如本文所使用的,“计算机可读介质”包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据之类的信息的任何方法或技术来实现的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程rom(eeprom)、闪速存储器或其他存储器技术、光盘rom(cd-rom)、数字多功能盘(dvd)或其他光学存储器、磁带盒、磁带、磁盘存储装置或其他磁存储设备,或可以用于存储由计算设备访问的信息的任何其他非传输介质。

相比之下,通信介质可以在诸如载波之类的调制数据信号中体现计算机可读指令、数据结构、程序模块或其他数据。如本文中所定义的,计算机存储介质不包括通信介质。

此外,本公开提供了各种示例实现方式,如在附图中所描述和所图示的。然而,本公开不限于本文中所描述和图示的实现方式,而是可以扩展到其他实现方式,如本领域技术人员已知的或将变得已知的。在本说明书中对“一个实现方式”、“该实现方式”、“这些实现方式”、“一示例”、“一些示例”、“一些实现方式”等等的引用意味着所描述的特定特征、结构或特点包括在至少一个实现方式或示例中,并且在说明书中的各个地方出现这些短语不一定都指代相同的实现方式。除非另有说明,否则所提供的各种实现方式和示例不旨在是相互排斥的,并且可以单独使用或彼此组合使用。

示例

一个或多个计算机可读存储介质存储指令,所述指令当由一个或多个处理器执行时,对一个或多个处理器进行编程以执行操作,这些操作包括:接收与具有配置问题的计算设备相关联的配置快照。该配置快照包括一个或多个参数键-值对。一个或多个参数键-值对中的每个参数键-值对包括与计算设备相关联的配置参数和该配置参数的对应值。这些操作还包括:基于配置快照来创建查询。可以通过以下方式基于配置快照来创建查询:(i)解析配置快照的内容以创建表征流,(ii)对表征流中的个体表征进行归一化以创建归一化表征,(iii)从归一化表征去除禁用词以创建截断的表征,(iv)对截断的表征中的个体令牌执行同义词扩展以创建扩展的表征,(v)对来自扩展的表征的个体表征进行词干提取以创建归一化表征,以及(vi)基于归一化表征来创建查询。这些操作还包括:从文章知识库中识别与查询中的术语精确匹配的第一文章集合。这些操作还包括:从文章知识库中识别与查询中的术语近似匹配的第二文章集合。识别第二文章集合是与识别第一文章集合同时地被执行的。这些操作还包括:聚合第一文章集合和第二文章集合,以创建聚合的文章。另外,这些操作包括:对聚合的文章进行排名,以创建经排名的结果,以及提供经排名的结果。这些操作包括:使用经训练的分类器来确定经排名的结果中的每个文章的相关性得分。这些操作还包括:基于至少一个文章的相关性得分来从经排名的结果中丢弃该至少一个文章。这些操作还包括:显示来自经排名的结果的剩余文章,经由用户接口从一个或多个用户接收对剩余文章的反馈,以及基于反馈来重新校准经训练的分类器。

服务器可以包括一个或多个处理器和一个或多个计算机可读存储介质,其存储可由一个或多个处理器执行的以执行各种操作的指令。服务器接收与计算设备相关联的配置快照。计算设备具有配置问题。服务器基于配置快照来创建多个查询,并且将多个查询分发到多个匹配引擎,包括用于识别与多个查询中的词的精确匹配的精确匹配引擎以及用于识别与多个查询中的词的近似匹配的接近匹配引擎。多个查询中的每个查询的文本被表征化,以创建表征流。使用骆驼拼写法过滤器、值类型过滤器或小写过滤器中的至少一个来归一化表征流中的表征。禁用词过滤器用于从表征流中去除禁用词。表征流被扩展为包括与表征流中的至少一个表征相关联的一个或多个同义词。服务器可以将多个查询分发到精确匹配引擎,同时(例如,在大约同一时间),服务器可以将多个查询分发到接近匹配引擎。使用文章知识库的索引,服务器从文章知识库中识别一个或多个文档,其包括来自多个查询中的每个查询的关键字。服务器确定匹配词在一个或多个文档中的每个文档中的位置信息,针对一个或多个文档中的每个文档,基于表征来构造抽象语法树,并且基于来自表征流的表征来评估每个抽象语法树,以识别一个或多个文档中的、描述配置问题的解决方案的至少一个文档。服务器提供一个或多个文档作为配置问题的候选解决方案。

一种计算机实现的方法包括:解析与计算设备相关联的配置快照,以产生表征流。该配置快照包括与计算设备的配置相关联的参数键-值对。通过以下各项将表征流中的每个表征转换成标准化格式:将骆驼拼写法格式的表征扩展为组成词;检测表征流中的至少一个表征的类型,诸如检测每个表征是否是数值类型、布尔类型、版本类型、枚举集合;以及将每个表征转换成小写。通过在表征流中添加至少一个表征的一个或多个同义词并且通过向表征流中添加模糊表征,来扩展表征流。表征流中的一个或多个表征被词干提取为根形式。将表征流的至少一部分作为输入提供给多个匹配引擎,以搜索文章知识库的索引。基于由匹配引擎查找到的匹配来从文章知识库中取回一个或多个文章。

结论

尽管主题已经以特定于结构特征和/或方法动作的语言进行了描述,但是所附权利要求中限定的主题不限于上文所描述的具体特征或动作。相反,上文所描述的具体特征和动作被公开为实施权利要求的示例形式。本公开旨在涵盖所公开的实现方式的任何和所有的修改或变化,并且后面的权利要求不应当被解释为限于说明书中公开的具体实现方式。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1