用户文本分析的制作方法

文档序号:13943540阅读:192来源:国知局



背景技术:

用户经常通过各种手段提供关于服务、软件元素或硬件元素的反馈。在一些情况下,反馈涉及软件或硬件的错误或其他问题,而在其他的一些情况下,反馈涉及询问问题或提供用于改进软件或硬件的建议。在又一些情况下,反馈包括文本或其他信息,诸如关于软件或硬件如何工作的一般描述、用户喜欢或不喜欢的特征、与软件或硬件无关的信息等。例如,用户可以由使用操作系统提供的支持界面让管理员了解用户喜欢的功能以及用户使用操作系统的特定功能所遇到的问题。在很多情况下,反馈由软件或硬件的管理员手动查看和评估,以标识需要修复的软件或硬件的错误或其他议题(issue)。由于反馈是手动评估的,并且通常涵盖多种不同类型的信息(这些信息可能适用或不适用于管理员),因此管理员花费大量时间分析反馈。



技术实现要素:

本公开描述了用于分析自由形式文本以例如确定用户建议的系统、方法和计算机可读介质。在一些情况下,可以接收包括关于来自用户的反馈的自由形式文本的文档。文档(例如,文档的文本)可以被映射到本体(ontology)或其他类型的结构化模型的一个或多个类。本体的映射信息可以用于标识文档中的建议。例如,文档中的单词或短语可以用从本体中标识的类来标记。标记的文档的结构(例如,标记的单词或短语的语法模式)可以用于确定文档的建议,诸如关于对硬件或软件的增强的建议。可以使有关建议的信息可用于评估建议的个体。在一些方面,术语映射的词典可以被自动更新以包括新接收的术语。

提供本发明内容是为了以简化的形式介绍将在下文具体实施方式中进一步描述的概念的选择。本发明内容并非旨在标识所要求保护的主题的关键或基本特征,也不旨在用作确定所要求保护的主题的范围的辅助手段。术语“技术”例如可以是指由上文和贯穿文档描述的上下文所许可的(一个或多个)系统、(一个或多个)方法、计算机可读指令、(一个或多个)模块、算法、硬件逻辑和/或(一个或多个)操作。

附图说明

参考附图来描述具体实施方式。在这些图中,附图标记的最左边的(一个或多个)数字标识该附图标记首次出现的附图。不同附图中的相同的附图标记指示相似或相同的项。

图1是描绘用于实现如本文中描述的自动文本分析的一个示例环境的框图。

图2是描绘根据本文中描述的各种示例的被配置为参与自动文本分析的一个示例计算设备的框图。

图3示出了根据一些示例的一个示例文档。

图4示出了根据一些示例的可以采用的一个示例本体。

图5是描绘在文档的提供、这些文档的文本分析和词典的更新期间的示例模块交互的数据流图。

图6是图示了用于确定文档中的用户建议的示例过程的流程图。

图7是图示了用于自动更新词典的示例过程的流程图。

具体实施方式

概述

本文档涉及数据分析,并且更具体地涉及执行对文档中表达的主题(motif)的自动推断。如本文中使用的,“主题”是用户陈述的高级类别,例如建议、疑问(question)、阻塞议题或问题、或者动作陈述。各种示例涉及用于自动处理用户反馈以确定用户建议的技术和架构。在很多情况下,技术和架构可以分析用户反馈的一个或多个片段以标识建议和/或向个体提供关于建议的信息以供评估。建议可能涉及软件、硬件或者其他项或实体。在一些示例中,管理特定软件元素的管理员可以被通知对特定软件元素进行增强的建议。基于信息,管理员可以修复软件的问题、实现新的特征、和/或执行各种其他动作。

在本文中描述的技术的一些实现中,服务提供商可以收集包括用户反馈的一个或多个文档。一个或多个文档可以从各种来源收集,各种来源诸如在线来源、客户支持门户、电子消息、与顾客或智能个人助理的对话等。一个或多个文档通常可以包括由用户提供的至少某种自由形式的文本(例如,以自然语言的文本)。此外,一个或多个文档可以包括可能与建议相关或不相关的各种信息。例如,文档可以包括有关用户使用软件元素的问题的语句、有关用户已经指示有兴趣的软件元素的特征(例如,用户喜欢的特征)的语句、与软件元素无关的语句等。

服务提供商可以基于知识库来分析文档。文档的个体文本段(例如,语句、短语等)可以用本体的类进行标记。然后可以在经标记的文本段中定位这些类的模式,以确定诸如“问题”或“建议”之类的主题。例如,与关联于特定主题(例如,建议)的语法模式相匹配的经标记的文本段可以被标识为包括该特定主题(例如,建议)。换言之,服务提供商可以确定经标记的文本段描述了可以通过执行任务来解决的问题、建议或其他项。

服务提供商可以使有关在一个或多个文档中找到的建议的信息可用。可以以各种方式使这些信息可用于各种个体。在一些示例中,关于软件实体的建议可以被提供给管理软件实体的个体(例如,在电子邮件中发送,经由接口提供等等)。在另一示例中,个体可以例如经由图形界面请求针对特定实体的建议。在又一示例中,关于建议的信息可以包括建议的排名。例如,如果个体请求查看针对即时通讯应用的重要建议,则服务提供商可以提供跨来自多个用户的银行反馈针对即时通讯应用而标识的建议的排名。

在一些情况下,本文中描述的技术和架构可以规格化用户反馈。例如,通过将用户反馈映射到本体,可以根据各种类的单词或短语对用户反馈进行分组。这可以增加单词跨各种上下文的一致性。例如,用于软件元素的问题的客户术语可以被映射到表示由软件元素的管理员使用的技术术语的类。此外,技术和架构可以以文本被呈现的形式来分析文本(例如,基于周围的单词或短语分析单词或短语)。

在很多情况下,本文中在针对软件或硬件的建议的上下文中描述技术和架构。然而,技术和架构可以适用于各种上下文,诸如在分析消费品反馈的消费者上下文中、在分析车辆反馈的车辆上下文中、在分析消耗品(例如,食物)反馈的消耗品上下文中、在分析服务(例如,餐馆服务或另一商业服务)反馈的服务上下文中等。

如所使用的,术语“文档”是指一个或多个单词的集合,并且包括电子文档和物理文档两者。在电子文档的上下文中,该术语可以涵盖连同元数据一起的人类语言单词,例如,如在文字处理文档或电子表格文档的情况下。术语“反馈记录”是指包括用户反馈的特定类型的文档,例如请求的或未请求的。

一些文档可以包括由生成文档的软件自动填充的某些自动化字段,例如每个字段可以由软件利用与正在使用的软件或生成文档的软件相关的特定数据值来填充。文档还可以包括非结构化数据,诸如传达关于该问题的人产生的自由形式的文本和/或由一个或多个设备生成的登录消息。如下文所更详细讨论的,一些示例实现可以处理这种非结构化数据,以自动地推断各种主题,例如,从单个文档推断出的各个问题、动作或建议以及与使用多个文档推断的网络故障相关联的趋势。

在以下附图的描述中更详细地呈现了根据各种示例的用于分析自由形式的用户文本的一些示例、场景和技术示例。

说明性环境

图1示出了全文分析系统的示例可以在其中操作或者诸如下文所述的推断分析方法可以在其中被执行的示例环境100。在所图示的示例中,环境100的各种设备和/或部件包括:计算设备102(1)-102(n)(在本文中单独地或共同地用附图标记102来指代),其中n是大于或等于1的任何整数;以及计算设备104(1)-104(k)(在本文中单独地或共同地用附图标记104来指代),其中k是大于或等于1的任何整数。在一些示例中,n=k;在其他示例中,n>k或者n<k。虽然被图示为例如台式计算机、膝上型计算机、平板计算机、iot传感器或蜂窝电话,但是计算设备102或104可以包括各种各样的设备类别、类或类型,并且不限于特定类型的设备。

在所图示的示例中,计算设备102(1)-102(n)可以是群集106中的计算节点,例如云服务,诸如microsoftazure或ibmbluemix。云计算许可计算资源作为服务而不是可交付产品而被提供。例如,在云计算环境中,通过诸如互联网的网络提供计算能力、软件、信息和/或网络连接性(例如,通过租用协议)。在所图示的示例中,计算设备104可以是集群106的客户端,并且可以向集群106提交作业和/或从集群106接收作业结果。集群106中的计算设备102(1)-102(n)可以例如共享资源、平衡负载、提高性能、或提供故障转移支持或冗余。在一些示例中,计算设备102中的一些计算设备可以由云服务托管,而其他计算设备可以被托管在客户站点处。计算设备104可以另外地或备选地以群集或分组配置来操作。

作为示例而非限制,计算设备102或104可以包括但不限于:服务器计算机或刀片式服务器,诸如web服务器、映射/化简服务器或其他计算引擎或网络附接存储单元(例如,102(1)),膝上型计算机,瘦客户机,终端或其他移动计算机(例如,102(n)),诸如智能手表或者生物计量或医疗传感器之类的可穿戴计算机,诸如生物计量或医疗传感器的植入式计算设备,或者被配置为监测时间、环境状况、振动、运动或者世界或其中的结构或设备(例如,桥梁或水坝)的其他属性的诸如iot传感器的固定传感器(例如,104(1),在图形上被表示为时钟),计算机导航客户端计算设备,包括全球定位系统(gps)设备的基于卫星的导航系统设备和其他基于卫星的导航系统设备(例如,104(2),在图形上被表示为pda),平板计算机或平板混合计算机(例如,104(3)),智能电话,移动电话,移动电话-平板计算机混合设备,或其他电信设备(例如,104(4)),便携式或基于控制台的游戏设备或者诸如网络使能的电视机、机顶盒、媒体播放器、相机或个人录像机(pvr)的其他娱乐设备(例如,104(5),在图形上被表示为游戏手柄),诸如车辆控制系统、车辆安全系统、或用于车辆的电子钥匙之类的汽车计算机,个人数据助理(pda),台式计算机(例如,104(k)),或者用于包括在被配置为参与或执行本文中所述的根本原因确定的计算设备、电器或其他计算设备的集成部件(例如,用于软件调试或监测目的)。在一些示例中,如所指示的,计算设备(例如,计算设备102(1)和102(2))可以相互通信以参与或执行本文中描述的文本分析或推断。

不同的设备或不同类型的设备可以具有针对文本分析结果的不同用途。例如,诸如计算设备104(2)-104(4)的通常由个人用户使用的设备可以向用户呈现他们的建议已经被接收的确认。诸如计算设备104(k)的通常由系统管理员使用的设备可以将检测到的建议或其中的趋势显示给负责与建议相关的实体的人员。

在一些示例中,计算设备104的用户与例如计算设备102或104的硬件或者在其上运行的软件的提供商进行通信,以提供关于硬件或软件的用户反馈或评论。这样的通信在本文中被称为文档108,并且可以例如从计算设备104电子地传输到计算设备102。这样的传输可以直接来自用户。另外地或备选地,用户可以使用计算设备104(k)将反馈传达给例如客户服务代理,并且代理可以向计算设备102提供相应的文档108。

在一些示例中,文档108可以包括:由计算设备102或104填充的结构化数据,诸如由个体用户撰写的自由形式的用户文本之类的非结构化数据,例如来自用户的自然语言的反馈,由一个或多个计算设备102或104记录的自动化消息或其组合。下文参考图3来讨论文档中的数据类型的示例。例如,在硬件或软件产品或服务的使用过程期间,当这样的产品或服务崩溃或以其他方式发生故障时,或者根据例如来自计算设备102或104或者在其上运行的软件程序的请求,用户可以提供文档108。在本文中例如参考microsoftcortana语音识别和个人助理软件来讨论文档108的各种示例。然而,这些示例不是限制性的。例如,applesiri个人助理软件也可以用于提供文档108。

在一些示例中,(一个或多个)计算设备102分析接收到的文档108以推断用户含义。例如,(一个或多个)计算设备102可以至少部分地基于一个或多个文档108的内容来确定关于软件或硬件的用户建议110或推荐。单个文档108可以对应于一个建议110(例如,“siri应当记录”)或多个建议110(例如,“cortana应当懂我并且应当控制天气”)。(一个或多个)计算设备102可以将建议110的信息传输给(一个或多个)计算设备104,例如传输给诸如工作站的计算设备104(k)、或者与为建议110的主题的软件或硬件(例如,cortana或siri)的管理相关联的用户的其他计算设备104。

在一些示例中,计算设备102或104可以经由一个或多个网络112彼此或与其他计算设备通信。例如,如所指示的,计算设备104可以经由(一个或多个)网络112向计算设备102传输文档108并且从计算设备102接收建议110。在一些示例中,计算设备102或104可以经由网络112与外部设备通信。例如,网络112可以包括诸如互联网的公共网络、诸如机构或个人内部网的专用网络、蜂窝网络、或专用和公共网络的组合。网络112还可以包括任何类型的有线或无线网络,包括但不限于局域网(lan)、广域网(wan)、卫星网络、有线网络、wi-fi网络、wimax网络、移动通信网络(例如,3g、4g等)或其任何组合。网络112可以利用通信协议,诸如例如基于分组或基于数据报的协议,诸如互联网协议(ip)、传输控制协议(tcp)、用户数据报协议(udp)、其他类型的协议或其组合。此外,网络112还可以包括支持网络通信或者形成用于网络的硬件基础设施的多个设备,诸如交换机、路由器、网关、接入点、防火墙、基站、中继器、骨干设备等。网络112还可以包括使用各种拓扑的总线协议支持计算设备102或104之间的通信的设备,例如纵横交换机、无限带宽技术交换机或者光纤通道交换机或集线器。

不同的网络具有不同的特性,例如带宽、时延、可访问性(开放、公布但是安全、或者不公布)或覆盖区域。计算设备104可以在将文档108(例如,同步地或异步地)传达给(一个或多个)计算设备102时使用具有适当特性的网络112。用于例如计算设备104与集群106之间的任何给定连接的网络112的类型可以基于这些特性和交互类型来选择。例如,可以为iot传感器选择低功耗、低带宽的网络,并且可以为智能手机选择低时延的网络。

在一些示例中,网络112还可以包括使能到诸如无线接入点(wap)的无线网络的连接的设备。示例支持通过在各种电磁频率(例如,无线电频率)上发送和接收数据的wap的连接性,包括支持以下的wap:电气和电子工程师协会(ieee)802.11标准(例如,802.11g、802.11n等),其他标准,例如蓝牙,诸如gsm、lte或wimax的蜂窝电话标准,或者其多个或组合。

仍然参考图1的示例,示例计算设备102(2)的细节在插图114处被图示。示例计算设备102(2)的细节可以表示计算设备102或104中的其他计算设备。然而,计算设备102或104中的个体计算设备可以包括附加的或备选的硬件和/或软件部件。计算设备102(2)可以包括诸如经由总线120可操作地连接到一个或多个计算机可读介质118的一个或多个处理单元116,总线120在一些情况下可以包括以下中的一个或多个:系统总线、数据总线、地址总线、外设部件互连(pci)高速(pcie)总线、pci总线、迷你pci总线以及各种本地、外设或独立总线或者其任何组合。在一些示例中,代替网络112或除了网络112之外,多个处理单元116可以通过内部接口总线(例如,pcie)交换数据。尽管在该示例中处理单元116被描述为驻留在计算设备102(2)上,但是在一些示例中,处理单元116也可以驻留在不同的计算设备102或104上。在一些示例中,处理单元116中的至少两个可以驻留在不同的计算设备102或104上。在这样的示例中,同一计算设备102或104上的多个处理单元116可以使用计算设备102或104的接口总线120交换数据,而不同的计算设备102或104上的处理单元116可以经由网络112交换数据。

处理单元116可以是或者包括一个或多个单核处理器、多核处理器、cpu、gpu、通用图形处理单元(gpgpu)、或者例如经由来自模块或api的专门编程被配置为执行本文中描述的功能的硬件逻辑部件。举例而言而非限制,可以在处理单元116中使用或作为处理单元116使用的说明性类型的硬件逻辑部件包括现场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、系统级芯片系统(soc)、复杂可编程逻辑器件(cpld)、数字信号处理器(dsp)以及其他类型的可定制处理器。例如,处理单元116可以表示混合设备,诸如来自altera或xilinx的包括嵌入在fpga结构中的cpu内核的设备。这些或其他硬件逻辑部件可以独立操作,或者在一些情况下可以由cpu驱动。在一些示例中,计算设备102或104中的至少一些可以包括多个类型的多个处理单元116。例如,计算设备102(2)中的处理单元116可以是一个或多个gpgpu和一个或多个fpga的组合。不同的处理单元116可以具有不同的执行模型,例如,如在图形处理单元(gpu)和中央处理单元(cpu)的情况中那样。在一些示例中,处理单元116、计算机可读介质118和存储在计算机可读介质118上的模块或引擎可以一起表示被配置为执行这样的模块或引擎的功能的asic、fpga或其他逻辑器件。

本文中描述的计算机可读介质(例如,计算机可读介质118)包括计算机存储介质和/或通信介质。计算机存储介质包括有形存储单元,诸如以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据之类的信息的任何方法或技术实现的易失性存储器、非易失性存储器、和/或其他永久性和/或辅助性计算机存储介质、可移除和不可移除计算机存储介质。计算机存储介质包括在设备或者为设备的一部分或在设备外部的硬件部件中包括的有形或物理形式的介质,包括但不限于随机存取存储器(ram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、相变存储器(pram)、只读存储器(rom)、可擦除可编程只读存储器(eprom)、电可擦除可编程只读存储器(eeprom)、闪存、压缩碟只读存储器(cd-rom)、数字通用盘(dvd)、光卡或其他光存储介质、磁带盒、磁带、磁盘存储装置、磁卡或其他磁存储设备或介质、固态存储器设备、存储阵列、网络附接存储器、存储区域网络、托管计算机存储装置或存储器、存储装置、设备和/或存储介质,其可以用于存储和维护用于由计算设备102或104访问的信息。

与计算机存储介质对比,通信介质可以在诸如载波的调制数据信号或其他传输机制中实施计算机可读指令、数据结构、程序模块或其他数据。如本文中定义的,计算机存储介质不包括通信介质。

在一些示例中,计算机可读介质118可以存储由处理单元116可执行的指令,处理单元116是如上文所讨论的可以表示被并入计算设备102中的处理单元。计算机可读介质118可以另外地或备选地存储由诸如由上文讨论的任何类型的外部cpu或外部处理器之类的外部处理单元可执行的指令。在一些示例中,例如cpu、gpu或硬件逻辑器件的至少一个处理单元116被并入计算设备102中,而在一些示例中,至少一个处理单元116,例如cpu、gpu或硬件逻辑器件中的一个或多个,在计算设备102的外部。

计算机可读介质118可以存储例如操作系统122、推断引擎124、训练引擎126以及由处理单元116可加载和可执行的其他模块、程序或应用的可执行指令。计算机可读介质还可以存储例如知识库128。在未示出的一些示例中,计算设备102或104之一中的处理单元116中的一个或多个处理单元可以例如经由通信接口130和网络112可操作地连接到计算设备102或104中的不同的一个计算设备中的计算机可读介质118。例如,用于执行本文中的流程图的步骤的程序代码可以例如经由网络112从例如计算设备102(1)的服务器下载到例如计算设备104(k)的客户端,并且由计算设备104(k)中的一个或多个处理单元116执行。例如,存储在计算机可读介质118上的计算机可执行指令可以在执行时将诸如计算设备102或104的计算机配置为执行本文中参考操作系统122、推断引擎124、训练引擎126或知识库128描述的操作。

在一些示例中,推断引擎124可以被配置为处理(一个或多个)文档108以从文档108中推断各种主题(例如,对应于那些主题的用户文本,并且贯穿全文同样如此)。例如,推断引擎124可以标识文档108中所表达的诸如问题、动作、疑问或建议110的主题。例如,表达或包含建议主题的文档108可以包括描述针对实体的(一个或多个)新行为的请求或对实体的(一个或多个)现有行为的改变(例如,添加键盘快捷方式、去除动画)的单词或短语。推断引擎124还可以标识多个文档108上的趋势,诸如与特定设备模型或特定设备配置相关联的建议。推断引擎124可以使用在知识库128中存储的信息来处理文档108,如下文更详细地讨论的。

在一些示例中,一个或多个计算设备104可以包括被配置为与推断引擎124通信或者接收由推断引擎124确定的结果的推断引擎接口(未示出)。例如,推断引擎接口可以包括接收和显示反映由推断引擎124做出的推断的可视化的浏览器,并且计算设备104可以将可视化显示给计算设备104的用户。因此,计算设备104可以由设计工程师或管理者用来帮助分析用户建议110,并且例如相应地设置开发优先级。推断引擎接口还可以被配置为通过使用一个或多个应用编程接口来查询推断引擎124而对其他的(例如,非可视的)输出形式进行操作,以获得来自推断引擎124的输出。

计算设备102的计算机可读介质118可以存储操作系统122。在一些示例中,不使用操作系统122(通常称为“裸机”配置)。在一些示例中,操作系统122可以包括如下的部件,该部件使得计算设备102能够或引导计算设备102经由各种输入(例如,用户控件、网络或通信接口、存储器设备或传感器)接收数据并且使用处理单元116来处理数据以生成输出。操作系统122还可以包括呈现输出(例如,在电子显示器上显示图像,将数据存储在存储器中,将数据传输给另一计算设备,等等)的一个或多个部件。操作系统122可以使得用户能够使用用户接口132来与应用程序或与分析引擎126的模块进行交互。另外,操作系统122可以包括执行通常与操作系统相关联的各种功能(例如,存储管理和内部设备管理)的部件。

计算设备102还可以包括一个或多个通信接口130,以使得计算设备102或104与参与根本原因确定或运行应用程序的其他联网计算设备102或104、或者其他计算设备之间能够通过网络112进行有线或无线通信。这样的通信接口130可以包括用于通过网络发送和接收通信的一个或多个收发器设备,例如网络接口控制器(nic),诸如以太网nic或其他类型的收发器设备。处理单元116可以通过相应的通信接口130交换数据。在一些示例中,通信接口130可以是pcie收发器,并且网络112可以是pcie总线。在一些示例中,通信接口130可以包括但不限于用于蜂窝(3g、4g或其他)、wi-fi,超宽带(uwb)、蓝牙或卫星传输的收发器。通信接口130可以包括有线i/o接口,诸如以太网接口、串行接口、通用串行总线(usb)接口、无限带宽技术接口或其他有线接口。为了简单起见,从所图示的计算设备102中省略了这些和其他部件。

在一些示例中,计算设备102或104可以包括用户接口132。用户接口132可以包括被配置用于与用户或者另一计算设备102或104进行通信的一个或多个输出设备。输出设备可以与计算设备102或104是集成的或者是其外围设备。输出设备的示例可以包括显示器、打印机、音频扬声器、蜂鸣器或其他音频输出设备、振动电机、线性振动器或其他触觉输出设备等。

用户接口132可以包括与计算设备102或104是集成的或者是其外围设备的一个或多个输入设备。输入设备可以是用户可操作的,或者可以被配置用于来自其他计算设备102或104的输入。输入设备的示例可以包括例如键盘、小键盘、鼠标、轨迹球、笔传感器或智能笔、光笔或光枪、诸如操纵杆或游戏手柄的游戏控制器、诸如麦克风的话音输入设备、话音识别设备或语音识别设备、触摸输入设备、诸如触摸屏的手势输入设备、抓握传感器、加速度计、另一触觉输入、诸如一个或多个相机或图像传感器的视觉输入设备等。

在一些示例中,计算设备102或104可以包括一个或多个测量单元134。测量单元134可以检测计算设备102或其环境的物理性质或状态。测量单元134的示例可以包括如下的单元,该单元用于检测在计算设备102或104的感测范围中或内的运动、温度、压力、光、声音、电磁辐射(例如,用于无线联网)、或者任何其他可检测形式的能量或物质。来自计算设备104上的测量单元134的信息可以自动地或在用户指导下被并入(一个或多个)文档108中。

在例如智能电话计算设备104(4)的一些示例中,测量单元134可以包括加速度计、麦克风或者前置和后置相机。测量单元134的示例可以包括用于测量物理性质的设备、用于通信的设备或用于接收信息的设备。在一些示例中,测量单元134可以包括网络收发器(例如,通信接口130)、运动传感器、接近检测器(例如,针对附近的生命形式、人或设备)、光传感器(例如,cds光敏电阻器或光电晶体管)、静态成像器(例如,电荷耦合器件、ccd或互补金属氧化物半导体、cmos、传感器)、视频成像器(例如,ccd或cmos)、麦克风、指纹读取器、视网膜扫描仪、虹膜扫描仪或触摸屏(例如,在用户接口132中的显示器(诸如图2的显示器210)中或与其相关联)。

在一些示例中,计算设备102或104可以包括一个或多个传感器136。通信接口130的部件,例如用于蓝牙、wi-fi或lte的收发器,可以是传感器136的示例。这样的部件可以用于例如检测对应于可访问网络的特性的信号。这样的信号还可以通过自动定位网络信息表(例如,蜂窝电话塔位置)中的信息来检测,或者通过查表和由通信接口130的部件进行的检测的组合来检测。用户接口132的部件(例如,触摸屏或电话话筒)也可以是传感器136的示例。测量单元134也可以是传感器136的示例。在一些示例中,特定设备可以同时或选择性地作为通信接口130、用户接口132和一个或多个测量单元134中的两个或更多个的一部分来操作。例如,触摸屏可以是用户接口132的元件并且用于呈现信息和接收用户命令。来自相同触摸屏的信号也可以用于确定用户对计算设备102或104的抓握。因此,这一示例中的该触摸屏也是传感器136。来自计算设备104上的测量单元134的信息可以自动地或在用户指导下被并入到(一个或多个)文档108中。

说明性部件

图2是示出了根据本文中描述的各种示例的可以表示计算设备102或104并且可以被配置为参与推断分析的计算设备200的示例部件的示意图。计算设备200可以实现推断引擎202,其可以表示图1的推断引擎124。计算设备200可以实现训练引擎204,其可以表示图1的训练引擎126。计算设备200可以实现报告引擎206。

在例如提供推断分析或建议分析服务的计算设备102的一些示例中,计算设备200可以实现推断引擎202和训练引擎204而不实现报告引擎206。在例如利用推断服务的计算设备104的一些示例中,计算设备200可以实现报告引擎206而不实现训练引擎204。在例如实现推断服务及其用途两者的计算设备102或104的一些示例中,计算设备200可以实施推断引擎202、训练引擎204和报告引擎206。

计算设备200可以包括或者连接到用户接口208,其可以表示用户接口132。用户接口208可以包括显示器210。显示器210可以包括有机发光二极管(oled)显示器、液晶显示器(lcd)、阴极射线管(crt)或其他类型的视觉显示器。显示器210可以是触摸屏的部件,或者可以包括触摸屏。用户接口208可以包括上文参考用户接口132而描述的各种类型的输出设备。在一些示例中,报告引擎206可操作地耦合到显示器210或另一输出设备。

用户接口208可以包括用户可操作的输入设备212(在图形上被表示为游戏手柄)。用户可操作的输入设备212可以包括上文参考用户接口132而描述的各种类型的输入设备。

计算设备200还可以包括计算设备200可以通过其与输入、输出或i/o设备(为了清楚起见,一些未被描绘)通信的一个或多个输入/输出(i/o)接口214。这样的设备的示例可以包括用户接口208的部件,诸如上文参考用户接口132而描述的用户可操作的输入设备和输出设备。这样的设备的其他示例可以包括功率计、温度传感器以及用于测量计算设备200或其环境或者另一计算设备102或104或其环境的性质的其他设备。计算设备200可以经由i/o接口214与合适的设备或使用合适的电子/软件交互方法进行通信。可以经由i/o接口214接收例如在用户可操作的输入设备212上的用户输入的输入数据,并且可以经由i/o接口214向显示器210提供例如用户接口屏幕的输出数据,例如以用于由用户查看。

计算设备200可以包括一个或多个传感器216,其可以表示如上文参考图1而描述的测量单元134或其他传感器136。传感器216还可以包括用户接口208的部件。在一些示例中,用户接口208可以包括传感器216中的至少一个。例如,用户接口208可以包括包含传感器216的触摸屏。传感器216中的个体传感器可以被配置为输出对应于至少一个物理性质的传感器数据,至少一个物理性质例如设备的物理性质(诸如加速度)、或者设备的环境的性质(诸如温度或湿度)。

计算设备200可以包括一个或多个处理单元218,其可以表示处理单元116。处理单元218可以例如经由i/o接口214而可操作地耦合到用户接口208和/或传感器216。处理单元218可以可操作地耦合到下文讨论的至少一个计算机可读介质220。处理单元218可以包括例如上文描述的处理单元类型,诸如cpu或gpgpu类型的处理单元。在一些示例中,处理单元218可以包括或连接到存储器222,例如随机存取存储器(ram)或高速缓存。

处理单元218可以被配置为执行多个模块中的模块。例如,存储在计算机可读介质220上的计算机可执行指令可以在执行时将诸如计算设备200的计算机配置为执行本文中参考多个模块中的模块而描述的动作或操作,该多个模块例如推断引擎202、训练引擎204和/或报告引擎206的模块。存储在计算机可读介质220中的模块可以包括如下的指令,该指令当由一个或多个处理单元218执行时使一个或多个处理单元218执行本文中参考多个模块中的模块而描述的动作或操作,该多个模块例如推断引擎202、训练引擎204和/或报告引擎206的模块。下文讨论计算机可读介质220中的模块的示例。计算机可读介质220还可以包括操作系统,例如操作系统122。

在所图示的示例中,计算机可读介质220包括数据存储库224。在一些示例中,数据存储库224可以包括结构化或非结构化的数据存储,诸如数据库(例如,结构化查询语言sql、或nosql数据库)或数据仓库。在一些示例中,数据存储库224可以包括具有一个或多个表格、数组、索引、存储的过程等的语料库或关系数据库,以使能数据访问。数据存储库224可以存储用于存储在计算机可读介质220中的过程、应用、部件或模块的操作的数据或者那些模块中由处理单元218执行的计算机指令。在一些示例中,数据存储库可以存储计算机程序指令226(例如,与应用程序、本文中描述的过程、或由处理单元218可执行的其他软件相对应的指令)。在一些示例中,数据存储库224可以存储可以表示图1的知识库128的知识库228。

计算设备200还可以包括通信接口230,其可以表示通信接口130。例如,通信接口230可以包括诸如网络接口控制器(nic)的收发器设备,以通过网络112(以虚线示出)发送和接收通信,例如,如上所述。如此,计算设备200可以具有网络能力。例如,计算设备200可以经由诸如互联网的一个或多个网络112与计算设备102或104(例如,膝上型计算机、计算机和/或服务器)交换数据。如上所述,传感器216可以包括通信接口230的部件。

在一些示例中,处理单元218可以经由总线232来访问计算机可读介质220上的模块,总线232可以表示图1的总线120。i/o接口214和通信接口230也可以经由总线232与处理单元218通信。

存储在计算机可读介质220上的推断引擎202的模块可以包括例如外壳模块或应用编程接口(api)模块的一个或多个模块,其被图示为短语提取模块234、短语过滤模块236、映射模块238、分析模块240和推荐模块242。

存储在计算机可读介质220上的训练引擎204的模块可以包括例如外壳模块或应用编程接口(api)模块的一个或多个模块,其被图示为知识库修改模块244和分类模块246。

存储在计算机可读介质220上的报告引擎206的模块可以包括例如外壳模块或应用编程接口(api)模块的一个或多个模块,其被图示为报告模块248。

在推断引擎202、训练引擎204或报告引擎206中,模块的数目可以变为更高或更低,并且各种类型的模块可以以各种组合来使用。例如,与所图示的模块相关联地描述的功能可以被组合成由更少数目的模块或api来执行,或者可以被分割并由更多数目的模块或api来执行。在一些示例中,短语提取模块234和短语过滤模块236,短语提取模块234、短语过滤模块236和映射模块238,短语提取模块234、短语过滤模块236、映射模块238和分析模块240,推荐模块242和报告模块248,短语提取模块234、短语过滤模块236、映射模块238、分析模块240、推荐模块242和报告模块248,或者知识库修改模块244和分类模块246可以被组合在执行这些模块的下文描述的示例功能中的至少一些示例功能的单个模块中。这样的组合模块可以由推断引擎202、训练引擎204和报告引擎206中的一个或多个共享或者对推断引擎202、训练引擎204和报告引擎206中的一个或多个是可访问的。在一些示例中,计算机可读介质220可以包括模块234、236、238、240、242、244、246或248的子集。

图3示出了可以表示图1的文档108并且可以由推断引擎202例如从用户的计算设备104获得的示例文档300。文档300可以是具有任何类型的内容的物理或电子文档,任何类型的内容包括(例如,结构化的或非结构化的(自由形式的))文本、图像、音频等。在一些示例中,文档300可以包括以下中的一个或多个:来自诸如电子邮件的电子消息的文本;由操作系统(os)或os部件例如通过microsoftwindows或osx中的反馈对话而收集的用户反馈;来自博客文章、社交网站、网站、在线产品评述或者其他在线通信或杂志文章的文本;博客评论;对问卷、调查或评审表的响应;用户与客户服务代理之间或用户与智能软件个人助理之间的对话的全部或部分成绩单或代理笔记;诸如经由短信服务(sms)或aol即时通讯(aim)的来自即时消息的文本;来自即时通讯(im)日志的文本;由诸如windows10、appleosx的系统收集的用户发起的反馈(uif);在故障文档或崩溃报告中提供的用户评论;或者经由客户支持门户提供的文本,客户支持门户例如在线门户,诸如被包括在microsoftoffice365、microsoftazure、googledocs或其他工具中的那些门户或者与其相关联的那些门户。

所图示的文档300包括与数据中心中的特定问题相关的各个部分。例如,文档300包括文档编号部分302,文档编号部分302包括文档300的标识符(例如,唯一标识符,诸如全局唯一标识符guid)。文档文本部分304包括自由形式的用户文本,例如来自用户的以自然语言的反馈。文档数据部分306包括与文档300有关的各种数据字段。在所图示的示例中,文档300由用户“jdoe”于2015年3月14日上午9:26:53通过microsoftwindows用户发起的反馈(uif)系统提交。文档300此后未被修改,如空白的“最近由…修改”和“最近于…修改”字段指示的。在该示例中,除了在文档文本部分304中提供用户文本之外,uif系统还提示用户回答调查提问。所询问的调查提问在调查提问数据库中具有标识(id)#42,并且用户对调查提问的响应是“4”(例如,在1到5的范围内)。

在一些示例中,文档数据部分306包括表示在文档300被创建时用户正在使用的计算设备102或104的类型的“硬件类型”。在所图示的示例中,所示出的文档300由用户使用平板计算机创建。在一些示例中,文档数据部分306包括在文档300被创建时用户正在使用的计算设备102或104的唯一标识值(“硬件id”),例如guid。在一些示例中,文档数据部分306包括来自在文档300被创建时用户正在使用的计算设备102或104的一个或多个传感器136的数据。在所图示的示例中,所示出的文档300由用户在具有在平板计算机处测量的250勒克斯的环境光水平的空间中创建。在一些示例中,文档数据部分306可以包括提供关于如下的计算设备或环境的信息的任何数目或类型的字段,文档300从该计算设备或环境中被创建或提交或者在计算设备或环境中被创建或提交。

在所图示的示例中,某些信息被反映为比其他信息相对不结构化的格式。例如,文档300的文档数据部分306包括可以例如由对应的数据库条目直接表示的很多特定字段,对应的数据库条目表示或包括那些字段中的知识或数据。相比之下,文档文本部分304包括相对不太结构化的信息,包括短语“modernapp(modern应用程序)上的‘全屏’按钮应当在不同的地方”。

对于经训练的人(例如,软件开发者),短语“modernapp上的‘全屏’按钮应当在不同的地方”可以立即传达来自用户jdoe的关于“全屏”按钮的定位的建议。然而,这种知识是以相对不结构化的格式表示的。在一些示例中,推断引擎124可以处理诸如文档文本部分304的相对不结构化的数据,以推断各种主题,例如,诸如软件故障的问题、诸如更换故障电源的动作、或诸如移动modernapp上的“全屏”按钮的建议。

图4示出了用于表示针对领域的领域知识的“语义解释”的示例本体400。本体400包括互相联系的类或者类的等级。在一些实现中,本体中的类和子类被定义并且布置在分类(taxonomy)中,如图4中的嵌套块所表示的。连接符上的标签指示在所连接的类之间被认为是有效的句法或语法交互。表1中阐述了可以在与文档108相关的本体中使用的示例类。与本体400的具体类或子类相对应的单词或短语被称为这些类或子类的“实例”。于2012年6月28日提交的题为“probleminferencefromsupporttickets”的美国申请no.13/535,366以及与本申请同时提交的题为“utilizingsemantichierarchiestoprocessfree-formtext”的美国申请中讨论了本体的另外的示例,这两个申请通过引用并入本文。

表1

本体可以被构建为根据定义的交互来关联各种本体类和子类,并且可以被存储在知识库228中。例如,(一个或多个)文档108中出现的个体短语可以被映射到本体的类。短语到本体400的映射可以被存储在知识库228中,例如,如下文参考图5所讨论的。

本体400可以用于表达不同类之间的关系,其可以提供被包括在建议110中的相关信息的简明表达。每个类或子类可以具有被映射到其的一个或多个短语,并且可以对应于由文档108提供的一些信息。在一些实现中,领域专家或其他个体可以为每个短语选择特定的类/子类,这可能通过工具和/或部分自动化来协助。

示例本体400可以包括来自表1的类中的一个或多个类,来自表1的类例如实体、动作、状况、事件、数量、否定、肯定、情感、建议指示符、情态指示符和疑问指示符。每个类由图4中的对应块表示,例如,动作类402、否定类404、肯定类406、数量类408、实体类410、状况类412、情感类414、建议指示符类416、情态指示符类418和疑问指示符类420。如嵌套块所示,任何特定的类及其子类可以被表示为针对该类的分类中的树或节点图。

图4中的箭头和标签在图形上表示与本体400一致的个体类之间的关系。这些关系表示本体类之间的有效交互。例如,根据本体400,对实体“采取”的动作是有效的交互,如由将动作类402连接到实体类410的箭头所示。相反地,根据本体400,对状况“采取”的动作将不是有效的交互,因为没有对应的箭头图示出动作类402与状况类412之间的这种关系。

实体类410可以对应于表示实体(即,以真实或虚拟意义存在的事物)的短语。在一些示例中,实体可以是技术实体,诸如技术单词或短语。示例包括诸如“xbox”、“playstation”、“linux”和“windows”之类的产品名称、诸如“硬盘驱动器”之类的部件名称、以及诸如“云服务”之类的服务名称。实体类可以包括子类,诸如物理实体子类422或虚拟实体子类424。例如,物理实体可以是有形的对象,诸如加速度计、游戏控制台。虚拟实体可以是无形的对象,诸如协议、引用、变量、库或方法。实体的其他示例可以包括服务(例如云服务)和软件实体。

在一些示例中,实体类410可以具有“未知实体”子类426。未知实体子类426可以结合自由形式的用户文本中不包含可标识实体的语句或其他块使用,如下文参考图5所述。在一些示例中,实体类410可以包括诸如可代替实体或维护实体的子类。

动作类402可以对应于表示对实体或使用实体采取或执行的行为、或者由实体执行的行为的短语。动作可以包括例如用户正试图利用实体完成的行为或者用户期望实体做的行为。动作类的子类可以包括与实体交互和/或改变实体状态的子类,诸如例如物理动作(例如,代替、关断、接通、重启、重新开始、打开等)、维护动作(例如,更新、升级、降级等)、疑难排解动作(例如,测试或检查)、和/或虚拟动作(例如,安装、擦除、复制、访问、动画、构建、更改、导航等)。

状况类412可以对应于描述实体的状态的短语,例如,实体可以具有诸如“非法引用”的故障状况。示例状况可以包括例如“不能执行”、“崩溃”或“间歇性地工作”的实体的性质、模式、或者异常状况(物理或虚拟)。在状况类412的实例中使用的单词和短语可以是例如主观的(例如“崩溃”)或分类属性的(例如“低”或“高”)。示例状况可以包括问题状况428(例如,差错、冻结、问题、困难等)或错误状况430(例如,表示被确定为由于软件而不是其环境的差错而是故障的软件行为)。

数量类408可以对应于对例如实体(例如,两个虚拟桌面)或动作(例如,点击两次)的数量进行计数或描述的单词或短语。一些实现可以使用少量、中等量和大量子类根据上下文来区分反映相对较低、中等和较高数量的短语。数量还可以用于反映严重性,例如,少量可以对应于相对小或低量的事件,而大量可以对应于相对较大或较高量的事件。

否定类404可以对应于否定一个或多个其他单词或短语的单词或短语,例如“没有重新安装先前版本”。否定类可以包括合成式否定子类,其使用动词或名词来否定状况、事件或动作,例如诸如“缺少”、“谢绝”、“拒绝”等短语。否定类404还可以包括使用“不”来否定状况、事件或动作的分析式否定子类。

肯定类406可以对应于表示用户关于自由形式的用户文本中所表示的实体、状况或情绪的置信度的单词或短语,例如通过向单词或短语添加力度或弱化。在示例语句“我确认键盘快捷方式起作用”中,“确认”可以与肯定类406相关联。肯定类406可以包括强肯定子类432,例如,诸如表明确定性或高置信度的“确认”或“赞成”之类的短语。肯定类406还可以包括中性肯定子类434,例如,诸如“不确信”之类的短语。肯定类406还可以包括弱肯定子类436,例如,诸如表明不确定性或低置信度的“不太可能”或“可疑”之类的短语。注意,弱肯定子类中的短语可以是如下的短语,该短语可能不明确指示否定意见,而是倾向于是由个人在猜测例如软件或硬件中的缺失特征或意外行为的性质时使用的。

情绪类414可以对应于表示撰写自由形式的用户文本的用户的感受或信念的单词或短语。例如,在语句“microsoft很好”中,“很好”是作者对实体“microsoft”的感受。其他示例实例包括“真棒”、“糟糕”、“愤怒”、“满意”等。

建议指示符类416可以对应于表示建议的存在的单词或短语。建议指示符类416的示例实例可以包括例如“允许”、“启用”、“改善”、“使其成为可能”、“请”、“你应当”、“应当”等。

情态指示符类418可以对应于指示在自由形式的用户文本中的相关联的动作402是假设的或期望的单词或短语,诸如英语中的情态助动词。情态指示符类418的示例实例可以包括例如“它将很好”、“它将”、“可能”等。在一些示例中,情态指示符类418的实例可以包括例如命令式动词,诸如“添加”、“改变”或“去除”。在一些示例中,建议指示符类416的实例(例如,“你应当”)暗示或包括情态指示符类418的对应实例(例如,“应当”)。如本文中使用的,术语“提交指示符”是指建议指示符类416或情态指示符类418、或其任何组合的实例。

疑问指示符类420可以对应于表示疑问的存在的单词或短语、或者用于引出信息的单词或短语,上述信息例如有关诸如软件或硬件之类的项、或者其他,例如实体、动作或状况。疑问指示符类420的示例实例可以包括例如“这是什么意思”、“这是如何工作的”、“为什么我的程序崩溃”、“如何播放我的视频”或“我的程序安装在哪里?”

可以存在其他类。例如,性质类可以表示实体的静态、易失性、动态或其他性质。隐私类可以对应于指示用户关于对信息或其他实体的访问的期待或期望的单词或短语,例如,“个人”或“公共”。

实体类410的示例实例可以包括产品、特征、服务和部件。例如,实体类410可以表示或包括与特征、产品、软件或事物有关的单词,诸如“帐户”、“密码”、“驱动器”、“键盘”、“鼠标”、“屏幕”、“计算机”、“电话”、“界面”等。

状况类412的示例实例可以包括与实体相关联的状态,例如性质、模式或(异常)状况(物理的或虚拟的),诸如“不能执行”、“崩溃”、“间歇地工作”等。实体的状态可以是二元的(例如,上与下)、主观的(例如,崩溃)、分类属性的(例如,低、高等)、定量的(例如,“等级3”)或其他类型、以及它们的组合。在一些示例中,状况实例可以与动作402、状况412(例如,问题状况428或错误状况430)、疑问420、肯定406、提交指示符(例如,建议指示符416或情态指示符418)、数量408、情感414等相关联。

动作类402的示例实例可以包括表示对实体或使用实体采取或执行的行为、或者由实体执行的行为的单词或短语,诸如“点击”、“浏览”等。

问题状况类428的示例实例可以包括表示实体的问题或议题的单词或短语,诸如“崩溃”、“断开连接”等。

提交指示符类的示例实例(例如,建议指示符类416或情态指示符类418的实例)可以包括与实体的新行为或现有行为的改变相关的单词或短语,诸如“添加新的快捷方式”、“改变api调用/设置名称”、“去除动画”等。例如,建议指示符类416可以包括与由用户进行的特征请求相关的单词或短语。

疑问类420的示例实例可以包括用于引出信息的单词或短语,诸如“这是什么意思”或“这是如何工作的”等。

情绪类414的示例实例可以包括表示用户的感受或信念的单词或短语,诸如“喜欢新的应用程序界面”、“发现令人困惑的动画”等。

领域专家或其他个人可以将例如保留在下文参考短语过滤模块236而讨论的过滤后的子集中的具体单词或短语分配给本体400的一个或多个类或子类。以这种方式,知识库128可以包括文档108中的各种短语到本体400的类和/或子类的映射。本体400可以被构造为根据定义的交互来关联各种本体类和子类,并且可以被存储在知识库128中。

图4示出了领域本体400的一个示例。知识库228可以包括一个或多个领域本体。知识库228可以另外地或备选地包括覆盖至少两个领域中的术语的一个或多个全局或通用本体。

图5是图示了图2所示的模块之间的示例交互的数据流图500。一些模块利用知识库502,其可以表示图2的知识库228。知识库502可以被存储在图2的计算机可读介质220上。知识库502可以包括本体504、词典506和包括一个或多个语法模式的模式集508。词典506可以包括将相应文档的自由形式的用户文本的个体单词或短语映射到模型(例如,本体504)的个体类的字典树(trie)或其他数据结构。模式集508可以包括例如上下文无关语法(cfg)之类的形式语法、或者模型的类的序列与主题之间的映射的其他表示。下文参考短语过滤模块236来讨论模式集508中的模式的其他示例。在一些示例中,本体504隐含地表示在至少部分在词典506与模式集合508之间共享的一组类中。类也可以被称为标识在文档108的自由形式的用户文本中的单词或短语的功能或角色的“标签”。在一些示例中,知识库502还可以包括用于将各种同义术语坍缩(collapse)成标准化术语的同义词列表。例如,术语“浏览器”、“互联网浏览器”和“ie10”可以在软件实体的上下文中各意指相同的事物。以这种方式,例如,同义词列表中针对这些术语中的每一个的条目可以映射到“浏览器”。

一些短语可能不适合在本体400内使用,例如,由于相对于其他短语的降低的特异度。例如,在针对开源项目的源代码的建议的上下文中,出于理解建议的目的,与短语“中断处理程序”相比,短语“处理程序”可能缺乏特异度。短语“中断处理程序”更具体,并且为语义解释提供更多的上下文。由于这个原因,在一些实现中,知识库228可以包括被确定为足够具体以用于映射到本体的短语。例如,可以在知识库228中将二元语法“中断处理程序”映射到本体400模型的特定类和/或子类,并且可以从知识库228中省略一元语法“处理程序”

在一些示例中,计算设备104可以运行或以其他方式托管应用程序510,例如智能手机应用程序、桌面应用或命令行实用程序。例如,计算设备104的处理单元116(图1)可以执行应用程序510的一个或多个程序模块,例如图2的计算机程序指令226。应用程序510可以与用户512交互。经由应用程序510和/或计算设备104的(一个或多个)其他部件,用户512可以提供文档108,例如,如上文参考图3所讨论的。在一些示例中,应用程序510或计算设备104的(一个或多个)其他部件可以例如经由携带表述性状态转移(rest)中的api消息或web服务样式的http连接来传输和接收诸如文档108或建议110的数据。

计算设备102可以例如使用图2通信模块230(为简洁起见,此处省略)或另一接口来接收一个或多个文档108。计算设备102可以确定图1的一个或多个建议110或推荐514。然后,计算设备102可以将建议110或推荐514传输给用户518的计算设备516或传输给与用户518相关联的计算设备516,用户518(例如,系统管理员或管理者)与作为文档108的主题的软件或硬件的管理相关联。

在一些示例中,短语提取模块234可以被配置为标识可以出现在文档108中的各种短语(例如,n元语法)。例如,短语可以是重复模式的语言元素,例如,在文档108的多个实例中出现的长度为一或更长的n元语法。短语提取模块234可以应用两遍短语提取技术来获得文档108中的n元语法的频率估计。

在一些示例中,短语提取模块234被配置为执行下文描述的处理动作中的一个或多个。在一些示例中,文档108中的文本可以被标记化(tokenized)为语句。例如,文档108可以被解析成单独的一元语法(例如,单词),并且可以使用诸如句号之类的分隔符来标识语句。在一些示例中,可以经由单词级压缩对文档108执行冗余短语提取。短语提取模块234可以使用压缩算法来对经标记化的文档进行操作。例如,一些实现可以使用lempel-ziv-welch(“lzw”)或其他“基于词典的”压缩算法来从经标记化的文档108构建短语的压缩词典(例如,一元语法序列),然而也可以使用其他压缩算法。注意,压缩词典独立于知识库502中的词典506。通常,压缩算法可以压缩经标记化的文档108的文本并且输出压缩文本,同时构建出现在经压缩的文本中的每个短语的压缩词典。在一些示例中,经压缩的输出(例如,经压缩的二元)被丢弃,并且压缩词典被保留以用于后续的处理。压缩词典可以包括任何长度的一些或全部短语序列,例如仅仅向来自图3的文档文本部分304的短语“该规则顺序”应用压缩可以导致包括针对整个文档108的“该”、“规则”、“顺序”、“该规则”、“规则顺序”、“该规则顺序”等的压缩词典条目。注意,一些实现可以仅包括压缩词典中的重复短语。相对罕见的短语可以使用更长的编码,因为它们将对经压缩的输出的大小具有较小的影响。

然后可以使用文档和压缩词典来执行冗余短语的频率估计。频率估计可以使用诸如aho-corasick算法的模式匹配技术来执行。例如,可以构造压缩词典的有序表示。例如,可以使用有限状态自动机(例如,字典树)来表示压缩词典,其在根处具有空字符串、在层1处具有一元语法、在层2处具有二元语法等。一般来说,字典树可以用于查找压缩词典中的个体短语。

可以针对文档108中的个体短语执行频率估计。例如,频率估计可以在文档108上以单遍执行,以将文档108中的短语(n元语法)与字典树中的条目相匹配。所估计的频率可以包括压缩词典中的个体条目在文档108中出现的相应频率。

在一些示例中,短语过滤模块236可以被配置为过滤来自短语提取模块234的经提取的短语,以标识具有相对显著意义的短语的子集,例如,可以有助于理解文档108中的建议110或其他主题的短语的子集。一般而言,短语过滤模块236可以对由短语提取模块234标识的短语应用过滤,以消除某些短语,例如使用由短语提取模块234估计的频率或其他标准。短语过滤模块236还可以应用信息论测度(measures)以基于n元语法的计算的重要性来执行过滤。

在一些示例中,在现有文档108中频繁出现的短语对于从文档108推断主题而言可能是有用的,例如短语“microsoftwindows(微软视窗)”和“用户选项”可能有助于理解建议向microsoftwindows添加附加的用户选项的文档108中的主题。相比之下,其他短语也可能频繁出现在文档108中,但是这些短语对于理解例如文档108中的具体主题可能不太有用。例如,语句“我爱它!”可能对于标识用户建议110是没有帮助的。在其他的一些示例中,当文档108通过电子邮件发送时,诸如“答复”和“消息转发”之类的常备短语可能非常频繁地出现,但是不直接指示主题,例如用户建议110。

在通过电子邮件发送的文档108的其他的一些示例中,“答复所有”消息可能倾向于复制之前的会话。这可能导致一些短语在文档108中频繁出现,即使它们不直接与那些文档108中的主题相关。在一些示例中,短语过滤模块236被配置为自动过滤掉这样的短语,而同时保留确实倾向于在文档108中贡献或指示主题的其他短语。

在一些示例中,短语过滤模块236被配置为执行下文描述的处理动作中的一个或多个。在一些示例中,可以例如从短语提取模块234获得重复短语及其频率。如上文所讨论的,短语可以包括直到任意长度的不同长度的n元语法,例如,一元语法、二元语法等。然后可以使用一个或多个过滤器将短语从进一步考虑中去除。

在过滤器的一些示例中,可以执行长度和/或频率过滤。例如,由于文档108中的长的重复短语(例如,自动短语),长度相对长的短语往往是“噪声”n元语法。电子邮件和频繁重复的模板可以包括常常出现在文档108中的长短语。这样的短语倾向于具有相对较长的长度,例如,很多自动电子邮件可能包括诸如“如果你在这些时间以外需要协助,请拨打免费电话...”等的短语。这样的短语在从文档108推断主题方面倾向于具有相对小的价值。因此,相对较长的重复短语(例如,20个单词的长度)可以被过滤掉,而不管该短语在文档108中出现多少次。

在过滤器的一些示例中,可以过滤掉以相对低的频率出现的长度相对低的短语。相对低的频率的示例可以包括例如在文档108中出现小于特定百分比(例如,1%)或出现少于所选择的次数(例如,在1000个文档108中出现<10次)的短语。这些短语可以包括例如错误键入的单词的多个实例,诸如“shuoldreadmymnd”。

在过滤器的一些示例中,可以过滤掉一元语法、停止词或短语或者包含数字的短语。

短语过滤模块236可以被配置为将上述过滤器或其他过滤器中的任何一个应用于所标识的短语。例如,在确定与appleiphone相关的用户建议时,短语过滤模块236可以被配置为保留(即,不过滤掉)包含数字的短语。这可以允许区分与名称仅由数字相区别的产品(例如,iphone5与iphone6)有关的建议。

在一些示例中,短语过滤模块236可以被配置为执行词性处理以选择过滤之后留下的与预定的(或以其他方式选择的)词性模式相匹配的短语。例如,justeson-katz(jk)搭配滤波可以应用于标识与词性模式相匹配的短语,词性模式诸如[.*形容词名词.*]、[.*名词名词.*]、[.*形容词形容词名词.*]、[.*形容词名词名词.*]、[.*名词形容词名词.*]、[.*名词名词名词.*]、[.*名词介词名词.*]等。与词性模式相匹配的短语可以被选择并且其他模式可以被丢弃。

如本文中使用的,模式(包括词性模式和语法模式)由被方括号(“[”、“]”)包围的文本方式表示。在本文中列举的jk模式和其他模式中,“.*”表示例如字符或单词(例如,不包括换行符)之类的任何元素的零个或多个实例。相邻元件按照本文中的模式中的顺序相匹配。本文中使用的术语“模式”不限于用这种特定形式的文本表示可表达的模式。“模式”可以包括文字单词或单词序列匹配、正则表达式、上下文无关语法、上下文敏感语法、递归语法、或者被配置为针对用户文本的片段或经标记的用户文本(例如,标签语句,如下所述)确定该用户文本是否匹配或以其他方式满足模式的其他计算模型。

在一些示例中,短语过滤模块236可以被配置为基于一个或多个信息论测度来执行例如所选择的短语的过滤。例如,可以针对在任何先前应用的过滤或选择处理之后留下的(一个或多个)个体短语来计算残余逆向文档频率(ridf)和互信息(mi)测度。ridf表示包含术语(单词或短语)的文档108的比例与在符合例如泊松分布的随机模型下将包含该术语的文档108的比例之间的差异。mi表示两个单词一起出现的概率与那些单词独立出现的概率之间的差异。

在一些示例中,短语过滤模块236可以被配置为选择具有相对负的mi得分(例如,低于例如为-10的阈值)的n元语法。这些单词不倾向于存在于标准词典中,例如,因为它们包括以非常规方式使用的技术单词或术语。在一些示例中,短语过滤模块236可以被配置为选择具有相对高的ridf得分的n元语法,例如得分高于为4的阈值。在一些示例中,短语过滤模块236可以被配置为选择具有相对负的mi和相对高的ridf得分两者的n元语法。在一些示例中,具有负mi和高ridf的短语倾向于是不出现在常规词典中的领域特定短语,并且可以被添加到领域特定词典506以用于进一步处理。在一些示例中,可以丢弃未被选择的单词或短语。

在一些示例中,短语过滤模块236可以被配置为从文档108中选择具有高ridf(例如,大于为4的阈值)和正mi(例如,大于为0.0的阈值)的单词或短语。这些单词或短语可以包括为一般词汇表的一部分的单词(例如,在常规英语词典中找到的单词)。这样的短语倾向于被包括在语句中,并且可以用于本文中讨论的主题推断、主语/宾语区分、和/或其他后续处理。在一些示例中,可以丢弃未被选择的单词或短语。

在一些示例中,映射模块238可以被配置为:接收包括自由形式的用户文本的多个文档108中的个体文档的自由形式的用户文本的个体单词或短语,并且将所接收的个体单词或短语中的单词或短语映射到模型(例如,本体400或504)的个体类。术语“映射”和“标记”在本文中可互换地使用,以描述用于将类与单词或短语相关联的技术或过程。特定单词或短语可以具有一个或多个标签,即可以与模型的一个或多个类相关联。例如,单词“应当”可以与图4的建议指示符类416和情态指示符类418两者相关联。模型可以包括一个或多个类,诸如上文参考图4所述的那些类,例如建议指示符类。如本文中使用的,术语“标签语句”是指与自由形式的用户文本中的一些或全部相对应的标签序列,这些标签以与对应的单词或短语在用户文本中被呈现的顺序相同的顺序排列。标签语句不需要对应于用户文本中的完整语句。在一些示例中,标签语句中的(一个或多个)个体标签可以与对应的单词或短语相关联。在本文档中,标签语句被表示为<单词或短语>/<类>对的引用列表,例如,用于语句“球弹跳”的“球/实体弹跳/动作”。

在一些示例中,映射模块238可以被配置为:针对自由形式的用户文本的(一个或多个)个体语句或界定的其他子集,确定在该语句或其他子集中是否存在实体(实体类410的单词或短语)。在这些示例中的一些示例中,如果不存在实体,则映射模块238可以向标签语句添加未知实体类426,即使在没有与未知实体类426相关联的特定单词或短语的情况下。

例如,在语句“如果它可以更好地工作,则那将是很好的”中,主语“它”是停止词,并且因此在该示例中被过滤掉。结果,在语句中没有明确标识实体类410的实例。短语提取模块234、短语过滤模块236和映射模块238的结果可以是标签语句“可以/情态指示符工作/动作将/情态指示符很好/正面情绪”。由于该标签语句中不存在实体,所以映射模块238可以添加未知实体子类426的实例以向分析模块240提供标签语句,例如“-/未知实体可以/情态指示符工作/动作将/情态指示符很好/正面情绪”或“工作/动作将/情态指示符很好/正面情绪-/未知实体可以/情态指示符”,其中“-”表示未知实体子类426的实例。

在一些示例中,分析模块240可以被配置为标识在文档108中表达的主题。例如,分析模块240可以针对多个文档中的个体文档确定对应的用户建议(对应于建议主题的文本)。用户建议可以是例如关于软件或硬件的建议、关于对软件或硬件元素的更新的建议、为了改进实体而要采取的(一个或多个)所建议的动作、或关于项(例如,产品、机器、服务或经由电子商务出售的那些中的任何)的建议。

在一些示例中,分析模块240可以被配置为标识可动作项,即在用户反馈或其他自由形式的用户文本中找到的所选择的主题。当特定主题与用户反馈相关联时,用户反馈可以被标识为包括可动作项。可动作项通常可以包括可能需要用户(例如,管理员或其他用户518)的注意的问题主题、建议主题、疑问主题或其他主题。例如,如果分析模块240确定语句与问题主题相关联,则分析模块240可以确定语句涉及可动作项(例如,问题)。举例来说,陈述“这些帐户设置令人困惑”的语句可以与针对帐户实体的问题相关联(例如,问题主题-(帐户设置)/实体之后跟随(令人困惑)/问题状况)。这里,语句被标记为包括可动作项,使得帐户设置的管理员可以解决该问题。在一些示例中,可动作项可以包括关于软件或硬件的用户建议,例如“我的计算机应当悬浮”(计算机/实体应当/建议指示符悬浮/动作)。

分析模块240可以至少部分地基于针对相应文档的所映射的单词或短语与例如存储在模式集508中的预定的(或以其他方式选择的,并且全文同样如此)语法模式的比较来标识这些主题,例如,图1的用户建议110。例如,分析模块240可以至少部分地基于以下来标识这些主题:针对相应文档108的与预定语法模式相匹配的映射的单词或短语中的(一个或多个)个体单词或短语、或者相应文档的与针对主题(例如,建议主题)的预定语法模式相匹配的所映射的单词或短语匹配。示例语法模式可以表达标签语句中的类之间的关系,诸如接近或顺序。这些关系可以例如使用cfg或其他语法来表达,例如将标签视为基元(atomic)而不是文本的字符并且因此可以应用于标记语句的正则表达式。在一些示例中,分析模块240可以将预定语法模式应用于标签语句,例如应用于与用户文本相对应的所映射的类和子类。在一些示例中,可以在分析用户文本期间或在两个用户文本的分析之间,动态地更新模式集508,例如添加、去除或修改模式。

在一些示例中,分析模块240或计算设备102的(一个或多个)其他部件被配置为标识与预定语法模式相对应的所映射的单词或短语中的一个或多个的集合。在这些示例中的一些中,预定语法模式与表示用户建议110的主题相关联。在一些示例中,预定语法模式可以定义在模型的第二类之前的模型的第一类。在一些示例中,预定语法模式可以指示跟随有实体类410(第二类)的建议指示符类416(第一类)对应于表示用户建议110的主题,例如“如果windows...则将是很好的”。在一些示例中,预定语法模式可以指示跟随有实体类410(第二类)的情态指示符类418(第一类)对应于表示用户建议110的主题,例如“添加/情态指示符新的快捷方式/实体”、“改变/情态指示符api/实体调用或设置名称”或“去除/情态指示符动画/实体”。在一些示例中,针对建议主题的预定语法模式定义在本体504的第二类之前的本体504的第一类。在这些示例中的一些中,第一类或第二类包括用于表示在(一个或多个)文档108的自由形式的文本中存在建议的单词或短语的建议指示符类416。

表2中列出了用于各种主题的示例语法模式。方括号围绕模式,括号表示分组,并且竖线(“|”)表示交替,即匹配在特定组中由竖线分隔的选项中的任一项。在一些示例中,映射模块238可以被配置为将表2中的示例模式中的一个或多个示例模式应用于来自短语过滤模块236的标签语句或经标记的文本。

表2

在示例中,经标记的语句“在真实生活中,halo/实体应当/情态指示符传送/动作我”匹配表2的第一行中的模式,因为它具有跟随有动作类402实例的情态指示符类418实例的组,并且该组之后是实体类410的实例。

在一些示例中,模式可以包括子模式,或者子模式可以用于以递归方式构成更高级模式。例如,[实体]可以表示[虚拟实体|物理实体|可代替实体|维护实体]。在另一示例中,[提交指示符]可以表示[建议指示符|情态指示符]。

在一些示例中,分析模块240被配置为使用来自短语过滤模块236的单词或短语中的单词或短语来查询词典506。例如使用字典树或哈希映射(hashmap)而实现的词典506可以提供模型的(一个或多个)类,模型例如本体504。所标识的单词或短语的出现可以根据所提供的(一个或多个)类在例如自由形式的文本中或在从其中提取的语句中被标记。

在一些示例中,分析模块240被配置为处理文档的经标记的文本,以根据本体504来标识有效的交互。(一个或多个)文档108或(一个或多个)文档108中的(一个或多个)个体语句如果根据本体504不包括有效交互则可以被过滤掉。上文参考图4讨论了有效交互的示例。

在一些示例中,分析模块240被配置为从经标记的语句中推断主题,例如从基于交互未被过滤掉的那些语句中推断主题。主题的非限制性示例可以包括问题、动作或建议。问题可以标识特定实体(例如,操作系统或硬盘驱动器)和相关联的状态、状况或症状(例如,崩溃或有缺陷)。动作可以标识由或对实体执行的动作,例如,以改进或改变实体的状态,诸如重新启动计算机或重新开始应用。建议可以标识用户建议,例如关于硬件或软件的改进,例如“使其更可靠”或“允许6.14点的字体大小”。

注意,动作主题不同于本体400的动作类402。动作主题是从给定文档108获得的推断含义,而动作类402是标识词典506中的所选择的单词或短语的方式。包含用动作类402标记的单词或短语的文档108可以包括或不包括对应于动作主题的文本。

在一些实现中,分析模块240可以被配置为将某些语法模式与经标记的语句相匹配,以标识主题。例如,分析模块240可以针对例如问题、动作或建议之类的主题类型中的每一个使用不同的语法模式。语法模式可以使用模型(例如,本体504)的类或子类来构建。上文参考表2讨论了示例。

在一些实现中,分析模块240可以分析诸如文档108中的自由形式文本之类的非结构化数据和来自文档108和/或其他数据的结构化数据两者。在一些示例中,来自文档108的结构化数据(例如,来自图3文档数据部分306的调查提问id或调查响应)可以被附加到自由形式的文本并且如上所述的那样被分析。在一些示例中,结构化数据可以由映射模块238标记并且对照模式集合508中的语法模式进行测试。

在一些示例中,推断的主题可以对照文档数据部分306中的数据来验证,该数据例如指示给定文档300的文档文本部分304中存在建议的标志。例如,分析模块240可以被配置为将从结构化数据中直接提取的主题与从自由形式的文本中推断的主题进行比较,以查看主题是否匹配。在一些示例中,分析模块240可以被配置为至少部分地基于文档108的外部数据来推断主题,外部数据例如软件实体的自动更新周期或硬件实体中使用的部件的批号。例如,分析模块240可以在软件上线之后的一周期间比在随后的几周内使用更宽松的语法模式来确定建议主题存在。

在一些示例中,推荐模块242可以被配置为分析来自分析模块240的用户建议110中的个体用户建议,以生成一个或多个推荐514,例如关于对软件或硬件的更新的一个或多个推荐。推荐模块242可以确定(一个或多个)推荐514,例如,如建议110的排名列表中排名最高的一个或多个项。推荐模块242可以例如基于以下来确定(一个或多个)推荐514:特定建议110已经被提出的次数(例如,针对多个文档108而确定的),与建议110相关联的元数据(例如,在用户反馈站点上的“喜欢”或“我也是”评论的计数),或者在建议110中标识的实体的相对优先级(例如,在推荐模块242的各种示例配置中,与诸如windows的操作系统相关的建议可以比诸如office的应用程序相关的建议具有更高或更低的优先级)。

报告模块248可以被配置为呈现或传输例如如上所述的推荐514的指示。例如,报告模块248可以被配置为将推荐发送给与软件和/或硬件的管理相关联的用户518的计算设备516,如上所述。报告模块248可以另外地或备选地传输来自分析模块240的建议110中的一个或多个建议的(一个或多个)指示。例如,报告模块248可以包括数据库前端或web服务器或者与数据库前端或web服务器通信,以提供建议110或推荐514的仪表板或其他用户接口表示。

在一些示例中,推荐514包括用户建议110排名,例如基于所选择的排名标准而进行的用户建议110排名。在这些示例中的一些中,当第一用户建议110在多个文档108中比第二用户建议110更频繁地出现时,第一用户建议110被排名为高于第二用户建议110。在一些示例中,推荐514包括至少部分地基于可以包括以下中的至少一些的排名标准而确定的排名:预定义的知识,具体的前k个建议或者哪个用户或数据通道是包括建议的文档108的来源。

在一些示例中,知识库修改模块244被配置为确定自由形式的用户文本中的第一单词或短语。例如,知识库修改模块244可以确定未被表示在知识库502的词典506中的单词或短语。知识库修改模块244然后可以确定第一单词或短语与在知识库502的词典506中表示的不同的第二单词或短语具有阈值水平的相似度。阈值水平的相似度可以是例如子集关系或者记号中的规定的汉明距离。例如,短语“sqlserver2012(sql服务器2012)”是短语“sqlserver2012r2enterpriseedition(sql服务器2012r2企业版)”的子集。在该示例中,知识库修改模块244可以确定前者与后者具有阈值水平的相似度。知识库修改模块244然后可以用第一单词或短语代替知识库502的词典506中的第二单词或短语。这可以允许减小词典506的存储器消耗和计算量,同时保持文档108中的主题的标识的准确性,或平衡准确性和存储器消耗。例如,可以调整知识库502的词典506中的单词或短语的特异度或一般性的水平,例如以在文档108的给定集合中提供主题的有效检测。

在一些示例中,知识库修改模块244被配置为:针对被映射到模型的至少一个类的个体单词,向与该模型相关联的知识库502词典506添加相应单词的一个或多个同义词或者相应单词的一个或多个词汇或形态形式中的至少一个。术语的形态形式可以包括例如术语的词干加上词干的任何结尾(后缀)(例如,用于词干“confuse”:“confusing”、“confused”、“confuses”、“confusion”等)。在一个示例中,词典506包括与状况类412相关联的单词“work”。知识库修改模块244可以使用词干化算法或其他信息来向词典506添加“working”、“works”和“worked”,使得这些形式映射到与单词“work”相同的类。在一些示例中,知识库修改模块244可以向词典506添加现在时态条目的过去时态或将来时态形式、单数条目的复数形式(或反之亦然)、或者术语的其他语法变体或拼写变体(“gray”与“grey”)。

在一些示例中,分类模块246被配置为确定如下的特定单词或短语,其不与知识库502的存储的词典506相关联并且存在于多个文档108中的(一个或多个)文档中。例如,分类模块246可以从短语过滤模块236中获取在词典506中没有找到的单词或短语作为输入。在该示例中,除了这些单词或短语所映射到的类之外,词典506还包括针对词典506中的单词或短语中的(一个或多个)个体单词或短语的(一个或多个)相应属性。属性的一些示例包括但不限于:(一个或多个)单词或(一个或多个)短语中的(一个或多个)单词的(一个或多个)词性、短语与哪个justeson-katz模式匹配的标识、短语中的单词之间的空间关系、短语可能在其中出现的(一个或多个)上下文(例如,在动词之前或之后)、(一个或多个)单词的词干(例如,在短语中(例如,用于“running”的“run”))、(一个或多个)单词的同义词(例如,在短语中)、短语中的所选择的单词的顺序(例如,基于例如ridf或mi得分被认为是重要的单词)、或所选择的单词之间的距离。

在一些示例中,分类模块246被配置为确定特定单词或短语的一个或多个相应属性。例如,分类模块246可以例如使用本文中参考短语提取模块234和短语过滤模块236描述的技术来确定词性或上文所列出的属性中的其他属性。特定单词或短语的所确定的属性可以例如被排列为以预定顺序表达属性的值的“特征向量”。

在一些示例中,分类模块246被配置为更新词典506,例如,以至少部分地基于特定单词或短语的一个或多个属性、以及词典506中的单词或短语中的(一个或多个)个体单词或短语的一个或多个属性中的一个或多个属性来在词典506中将特定单词与模型的特定类相关联。例如,分类模块246可以将特征向量提供给神经网络或其他分类器,并且接收模型的特定类。分类模块246然后可以更新词典506,以记录特定单词或短语与模型的特定类之间的关联。分类模块246还可以将所确定的属性中的至少一些(例如,特征向量)作为特定单词或短语的属性存储在词典506中。在一些示例中,分类模块246可以将类是自动确定而不是由人类领域专家提供的指示作为特定单词或短语的属性来存储。在一些示例中,分类模块246可以向知识库修改模块244提供关于单词、短语、属性和映射的信息。在这些示例中的一些示例中,知识库修改模块244然后可以对知识库502进行改变。

在一些示例中,分类器基于特征向量提供类确定的置信度值或置信度的其他指示。在这些示例中的一些中,分类模块246被配置为将置信度值与预定阈值进行比较。如果置信度值低于预定阈值,则分类模块246可以例如向领域专家传输或呈现特定单词或短语的指示。分类模块246可以附加地传输特定单词或短语的属性中的至少一些属性、特定单词或短语在其中出现的用户文本、或者可以有助于领域专家向特定单词或短语分配类的其他信息。分类模块246然后可以例如经由用户接口从领域专家接收针对特定单词或短语的类。该类可以是针对该特定单词或短语新添加到模型(本体504)的类,或者可以是本体504中的现有类。

在一些示例中,报告模块248可以被配置为生成表示由分析模块240或推荐模块242进行的处理的各种形式的输出。例如,报告模块248可以向计算设备516传输建议110的数据或指示建议110的数据或者用户建议110的排名,如上所述。这可以例如支持与被标识为文档108中的实体类410的实例的软件或硬件的更新相关的决定。

在一些示例中,报告模块248可以生成反映由分析模块240推断的主题的各种可视化,例如图形界面。图形界面可以反映个体用户建议或跨多个建议的趋势。报告模块248可以提供诸如菜单选择的界面选项,以通过产品名称、产品模型(例如,windows7与windows10或者gmailbeta与gmailnon-beta)或者其他字段进行过滤,来标识从文档108获得的建议的特定性质。报告模块248还可以实现可查询的应用编程接口(api),例如rest、web服务或其他api,以允许其他模块(例如,第三方软件)访问输出。

在一些示例中,报告模块248可以提供示出在一个或多个文档108中找到的(一个或多个)主题、本体类和子类、以及单词或短语的主题树的图形表示。这样的树可以示出(一个或多个)主题是如何被标识的。报告模块248可以将主题树呈现为允许用户与主题树交互的图形用户界面的一部分。例如,用户可以将鼠标光标移动到给定节点之上,并且直接父节点和同级节点可以被突出显示。例如,这可以用于帮助用户快速掌握相对复杂的主题树的意义。

在一些示例中,报告模块248可以提供跨多个文档108的趋势的图形表示,例如通过示出实体的“标签云”或者示出图标的视图,这些图标例如通过其大小或颜色指示特定单词或短语、类、或主题在所分析的文档108中出现的频率。示例图标可以包括相对于从文档108提取的个体主题的实例的数目而被设置大小的圆圈。图形表示可以包括或者可以被呈现伴随的可选择的用户选项,以便以用户指定的粒度级别来查看对文档108的分析。

说明性过程

图6是图示了用于使用计算设备(例如,图1的计算设备102或图2的计算设备200)来确定用户建议数据的示例过程600的流程图。图5和其他流程图所示的示例功能以及本文中的示例过程可以在一个或多个计算设备102或104上实现或以其他方式在一个或多个计算设备102或104中实施,例如使用在这样的设备上运行的软件来实现或实施。为了说明的目的,下文参考图2的处理单元218和计算设备200的其他部件以及可以执行或参与示例方法的步骤的上文参考图4和图5所讨论的本体、数据流和操作来描述示例过程600。然而,诸如处理单元116和/或计算设备102或104的其他部件之类的其他处理单元可以执行所描述的示例过程(诸如过程600)的步骤。类似地,图6和图7中所示的示例方法也不限于由任何特别标识的部件执行。

在每个示例流程图或过程中描述操作的顺序不旨在被解释为限制,并且任何数目的所描述的操作可以以任何顺序和/或并行地组合以实现每个过程。此外,图6和图7中的每一个中的操作可以用硬件、软件和/或其组合来实现。在软件的上下文中,操作表示当由一个或多个处理器执行时使一个或多个处理器执行所记载的操作的计算机可执行指令。在硬件的上下文中,操作表示在电路中实现的逻辑功能,例如数据路径控制和有限状态机排序功能。

在框602处,计算设备102可以接收多个文档,多个文档中的个体文档包括自由形式的文本。自由形式的文本可以包括例如来自用户的以自然语言的反馈。

在框604处,计算设备102可以针对多个文档中的个体文档,使用类集合中的个体类来标记相应文档的自由形式的文本的个体单词或短语,类集合的个体类中的至少一个类是建议指示符类416。这可以例如如上文参考短语提取模块234、短语过滤模块236和映射模块238所描述的那样来完成,并且可以参考例如词典506来执行。例如,标记可以至少部分地基于将单词或短语映射到类集合中的类的存储的词典506。

在框606处,计算设备102可以针对多个文档中的个体文档,确定建议(或者相应的建议),建议(或者相应的建议)例如关于对项的更新,或者包括为了改进实体而要采取的建议动作,该实体与该项相关联。(一个或多个)建议可以至少部分地基于针对相应文档的经标记的单词或短语来确定,例如,如上文参考分析模块240所描述的。例如,计算设备102可以针对多个文档中的个体文档确定相应文档的经标记的单词或短语与所存储的用于建议主题的语法模式相匹配。用于建议主题的语法模式可以定义在类集合中的第二类之前的类集合中的第一类,第一类或第二类包括表示建议的存在的用于单词或短语的建议指示符类416。类集合可以包括上文参考图4讨论的类中的至少一个。

在框608处,计算设备102可以至少部分地基于多个文档的建议中的个体建议的出现、或者至少部分地基于本文中描述的其他排名标准,来按顺序对建议进行排列。这可以例如如上文参考推荐模块242所描述的那样完成。

在一些示例中,框608可以包括输出经排列的(例如,经排名的)建议的框(未示出)或者跟随有该框。这可以例如如上文参考报告模块248所讨论的那样完成。

在一些示例中,在框606处,计算设备102可以另外地或备选地针对多个文档中的个体文档确定关于例如实体、动作或状况的疑问(或者相应的疑问)。在一些示例中,在框608处,计算设备102可以至少部分地基于多个文档的疑问中的个体疑问的出现、或者至少部分地基于本文中描述的其他排名标准,来按顺序对疑问进行排列。这可以例如如上文参考推荐模块242所描述的那样完成。

图7是图示了用于使用计算设备(例如,图1的计算设备102或图2的计算设备200)来更新词典的示例过程700的流程图。过程700可以用于与例如图6的框一起使用,包括框604:至少部分地基于将单词或短语映射到类集合中的一个或多个类的存储的词典(词典506)来标记单词或短语。

在框702处,计算设备102确定多个文档中的至少一个文档中的不与词典(例如,词典506)相关联的特定单词或短语。这可以例如如上文参考分类模块246所讨论的那样来完成。词典包括针对词典中的单词或短语中的(一个或多个)个体单词或短语的(一个或多个)相应属性。在一些示例中,在框702处,可以至少部分地基于至少部分地基于输入的自由形式文本而确定的候选来确定特定单词或短语。例如,候选可以使用如上文参考图5的短语提取模块234和短语过滤模块236所描述的过滤来确定。

在框704处,计算设备102确定特定单词或短语的一个或多个相应属性。计算设备102可以确定例如特征向量。这可以例如如上文参考分类模块246所讨论的那样完成。

在框706处,计算设备102至少部分地基于特定单词或短语的一个或多个属性以及词典中的单词或短语中的(一个或多个)个体单词或短语的一个或多个属性中的一个或多个属性来更新词典,以包括特定单词或短语与类集合中的特定类之间的关联。这可以例如如上文参考分类模块246所讨论的那样来完成。例如,特征向量可以被提供给分类器,并且所得到的类被存储在词典中。

示例条款

a:一种系统,包括:一个或多个处理器;存储器,通信地耦合到一个或多个处理器;接口,通信地耦合到一个或多个处理器并且被配置为接收多个文档,多个文档中的个体文档包括自由形式用户文本;映射模块,被存储在存储器中并且由一个或多个处理器可执行,以针对多个文档中的个体文档将相应文档的自由形式用户文本的个体单词或短语映射到模型的个体类,模型包括例如建议指示符或情态指示符类或(一个或多个)其他类;分析模块,被存储在存储器中并且由一个或多个处理器可执行,以针对多个文档中的个体文档至少部分地基于针对相应文档的所映射的单词或短语与所选择的语法模式的比较来确定相应的可动作项;以及推荐模块,被存储在存储器中并且由一个或多个处理器可执行,以分析可动作项中的个体可动作项以生成推荐;以及报告模块,被配置为呈现或传输推荐的指示。

b:如段落a所述的系统,其中可动作项中的至少一些可动作项包括关于软件或硬件的用户建议。

c:如段落a或b所述的系统,其中推荐模块还被配置为生成关于对软件或硬件的更新的推荐。

d:如段落a-c中的任一项所述的系统,其中报告模块被配置为向与软件或硬件的管理相关联的用户的计算设备发送推荐。

e:如段落a-d中的任一项所述的系统,其中所述分析模块还由一个或多个处理器可执行,以标识与所选择的语法模式相对应的所映射的单词或短语的(一个或多个)集合,所选择的语法模式与表示用户建议的主题相关联,并且所选择的语法模式定义在模型的第二类之前的模型的第一类。

f:如段落a-e中的任一项所述的系统,其中模型的个体类包括以下中的至少一个:针对表示建议的存在的单词或短语的建议指示符类或情态指示符类,针对表示实体的单词或短语的实体类,针对表示对实体采取的行为的单词或短语的动作类,针对表示用户关于被表示在自由形式用户文本中的实体或状况的置信度的单词或短语的肯定类,针对表示撰写自由形式用户文本的用户的感受或信念的单词或短语的情感类,或针对否定一个或多个其他单词或短语的单词或短语的否定类。

g:如段落a-f中的任一项所述的系统,其中推荐包括可动作项的排名,比第二可动作项在多个文档中出现更频繁的第一可动作项被排名为高于第二可动作项。

h:如段落g所述的系统,其中第一可动作项包括第一用户建议,并且第二可动作项包括第二用户建议。

i:如段落a-h中的任一项所述的系统,还包括:知识库修改模块,被存储在存储器中并且由一个或多个处理器可执行以:确定自由形式用户文本中的第一单词或短语;确定第一单词或短语与被表示在知识库的词典中的不同的第二单词或短语具有阈值水平的相似度;以及用该第一单词或短语来代替知识库的词典中的第二单词或短语。

j:如段落a-1中的任一项所述的系统,还包括:知识库修改模块,被存储在存储器中并且由一个或多个处理器可执行,以针对被映射到模型的至少一个类的个体单词,向与模型相关联的知识库词典添加相应单词的一个或多个同义词或者所述相应单词的一个或多个词汇或形态形式中的至少一个。

k:如段落a-j中的任一项所述的系统,还包括:分类模块,被存储在存储器中并且由一个或多个处理器可执行以自动地:确定不与知识库的词典相关联并且存在于多个文档中的(一个或多个)文档中的特定单词或短语,其中词典包括针对词典中的单词或短语中的(一个或多个)个体单词或短语的相应的(一个或多个)属性;确定特定单词或短语的一个或多个相应属性;以及至少部分地基于特定单词或短语的一个或多个属性和词典中的单词或短语中的(一个或多个)个体单词或短语的(一个或多个)属性中的一个或多个属性,来在词典中将特定单词与模型的特定类相关联。

l:如段落k所述的系统,其中分类模块被配置为:至少部分地基于特征向量来确定类确定的置信度值或置信度的其他指示。

m:如段落l所述的系统,其中分类模块被配置为:将所述确定的置信度值与预定阈值进行比较;并且响应于所确定的置信度值小于预定阈值,例如经由用户接口来传输或呈现特定单词或短语的指示。

n:如段落m所述的系统,其中分类模块还被配置为:与指示一起或伴随指示来传输特定单词或短语的(一个或多个)属性中中的至少一些属性或者出现特定单词或短语的用户文本。

o:如段落m或n所述的系统,其中分类模块还被配置为:接收针对特定单词或短语的类,并且将所接收的类与词典中的特定单词或短语相关联。

p:一种方法,包括:由计算设备接收多个文档,多个文档中的个体文档包括自由形式文本;由计算设备并且针对多个文档中的个体文档,用类集合中的个体类来标记相应文档的自由形式文本的个体单词或短语,类集合中的个体类中的至少一个类包括建议指示符类或情态指示符类;由计算设备并且针对多个文档中的个体文档,至少部分地基于针对相应文档的经标记的单词或短语来确定可动作项,例如建议;以及由计算设备至少部分地基于针对多个文档的可动作项(例如,建议)中的个体可动作项的出现来按顺序排列可动作项(例如,建议)。

q:如段落p所述的方法,其中(一个或多个)可动作项中的至少一个包括关于对项的更新的建议。

r:如段落p或q所述的方法,其中自由形式文本包括来自用户的以自然语言的反馈。

s:如段落p-r中的任一项所述的方法,其中确定包括:针对多个文档中的个体文档,确定相应文档的经标记的单词或短语与所存储的用于建议主题的语法模式相匹配,其中用于建议主题的语法模式定义在类集合中的第二类之前的类集合中的第一类,第一类或第二类包括针对表示建议的存在的单词或短语的建议指示符类或情态指示符类。

t:如段落s所述的方法,其中确定包括:针对多个文档中的个体文档确定建议,该建议包括为改善实体而要采取的所建议的动作,改实体与该项相关联。

u:如段落p-t中的任一项所述的方法,其中类集合还包括以下中的至少一个:针对表示实体的单词或短语的实体类,针对表示对实体采取的行为的单词或短语的动作类,针对表示用户关于被表示在自由形式文本中的实体或状况的置信度的单词或短语的肯定类,针对表示撰写自由形式文本的用户的感受或信念的单词或短语的情感类,或针对否定一个或多个其他单词或短语的单词或短语的否定类。

v:如段落p-u中的任一项所述的方法,其中标记至少部分地基于所存储的将单词或短语映射到类集合中的(一个或多个)类的词典,并且方法还包括:确定多个文档中的至少一个文档中的不与词典相关联的特定单词或短语,其中词典包括针对词典中的单词或短语中的(一个或多个)个体单词或短语的相应的(一个或多个)属性;确定特定单词或短语的一个或多个相应属性;至少部分地基于特定单词或短语的一个或多个属性以及词典中的单词或短语中的(一个或多个)个体单词或短语的(一个或多个)属性中的一个或多个属性,来更新词典以包括特定单词或短语与类集合中的特定类之间的关联。

w:如段落v所述的方法,还包括:至少部分地基于特征向量来确定类确定的置信度值或置信度的其他指示。

x:如段落w所述的方法,还包括:将所确定的置信度值与预定阈值进行比较;以及响应于所确定的置信度值低于预定阈值,例如经由用户接口来传输或呈现特定单词或短语的指示。

y:如段落x所述的方法,还包括:与指示一起或伴随指示来传输特定单词或短语的(一个或多个)属性中的至少一些属性或者出现特定单词或短语的用户文本。

z:如段落x或y所述的方法,还包括:接收针对特定单词或短语的类,以及将所接收的类与词典中的特定单词或短语相关联。

aa:一种或多种计算机可读介质,存储有计算机可执行指令,计算机可执行指令在由一个或多个处理器执行时使一个或多个处理器执行动作,动作包括:针对包括自由形式用户文本的多个文档中的个体文档,将相应文档的自由形式用户文本的个体单词或短语映射到本体的个体类;针对所述多个文档中的个体文档,至少部分地基于与所选择的语法模式相匹配的针对相应文档的所映射的单词或短语中的(一个或多个)个体单词或短语,来确定关于对软件或硬件元素的更新的(一个或多个)可动作项;对可动作项中的个体可动作项进行排名;并且输出可动作项的排名。

ab:如段落aa所述的一种或多种计算机可读介质,其中所述(一个或多个)可动作项包括一个或多个用户建议。

ac:如段落aa或ab所述的一种或多种计算机可读介质,其中确定包括:针对所述多个文档中的个体文档,确定相应文档的所映射的单词或短语与用于建议主题的所选择的语法模式相匹配,其中用于建议主题的所选择的语法模式定义在本体的第二类之前的本体的第一类,第一类或第二类包括针对表示在自由形式文本中存在建议的单词或短语的建议指示符类或情态指示符类。

ad:如段落aa-ac中的任一项所述的一种或多种计算机可读介质,其中确定包括:针对多个文档中的个体文档,确定为改善实体而要采取的所建议的动作。

ae:如段落aa-ad中的任一项所述的一种或多种计算机可读介质,其中动作还包括:确定自由形式用户文本中的第一单词或短语;确定第一单词或短语与被表示在知识库的词典中的第二单词或短语具有阈值水平的相似度;以及用第一单词或短语代替知识库的词典中的第二单词或短语。

af:如段落aa-ae中的任一项所述的一种或多种计算机可读介质,其中动作还包括:针对本体的至少一个类内的个体单词,向与本体相关联的知识库词典添加相应单词的一个或多个同义词或者相应单词的一个或多个词汇或形态形式中的至少一个。

ag:如段落aa-af中的任一项所述的一种或多种计算机可读介质,其中动作还包括:确定多个文档中的至少一个文档中的不与所存储的词典相关联的特定单词或短语,其中词典包括针对词典的单词或短语中的(一个或多个)个体单词或短语的相应的(一个或多个)属性;确定特定单词或短语的一个或多个相应属性;以及至少部分地基于特定单词或短语的一个或多个属性以及词典中的单词或短语中的(一个或多个)个体单词或短语的(一个或多个)属性中的一个或多个属性,来更新词典以包括特定单词或短语与类集合中的特定类之间的关联。

ah:一种在其上具有计算机可执行指令的计算机可读介质,例如计算机存储介质,计算机可执行指令在执行时将计算机配置为执行如段落p-z中任一项所述的操作。

ai:一种设备,包括:处理器;以及在其上具有计算机可执行指令的计算机可读介质,例如计算机存储介质,所述计算机可执行指令在由处理器执行时将设备配置为执行如段落p-z中任一项所描述的操作。

aj:一种系统,包括:用于处理的装置;以及用于在其上存储计算机可执行指令的装置,计算机可执行指令包括用于将设备配置为执行如段落p-z中任一项所描述的方法的手段。

ak:一种系统,包括:用于由计算设备接收多个文档的装置,多个文档中的个体文档包括自由形式文本;用于由所述计算设备并且针对多个文档中的个体文档用类集合中的个体类来标记相应文档的自由形式文本的个体单词或短语的装置,所述类集合中的个体类中的至少一个类包括建议指示符类或情态指示符类;用于由计算设备并且针对所述多个文档中的个体文档至少部分地基于针对相应文档的经标记的单词或短语来确定关于对项的更新的建议的装置;以及用于由计算设备至少部分地基于针对多个文档的建议中的个体建议的出现来按顺序排列建议的装置。

al:如段落ak所述的系统,其中自由形式文本包括来自用户的以自然语言的反馈。

am:如段落ak或al所述的系统,其中用于确定的装置包括:用于针对多个文档中的个体文档确定相应文档的经标记的单词或短语与所存储的用于建议主题的语法模式相匹配的装置,其中用于建议主题的语法模式定义在类集合中的第二类之前的类集合中的第一类,第一类或第二类包括针对表示建议的存在的单词或短语的建议指示符类或情态指示符类。

an:如段落am所述的系统,其中用于确定的装置包括:用于针对多个文档中的个体文档确定建议的装置,建议包括为改善实体而要采取的所建议的动作,实体与项相关联。

ao:如段落ak-an中任一项所述的系统,其中类集合还包括以下中的至少一个:针对表示实体的单词或短语的实体类,针对表示对实体采取的行为的单词或短语的动作类,针对表示用户关于被表示在自由形式文本中的实体或状况的置信度的单词或短语的肯定类,针对表示撰写自由形式文本的用户的感受或信念的单词或短语的情感类,或针对否定一个或多个其他单词或短语的单词或短语的否定类。

ap:如段落ak-ao中任一项所述的系统,其中用于标记的装置至少部分地基于所存储的将单词或短语映射到类集合中的(一个或多个)类的词典来操作,并且所述系统还包括:用于确定多个文档中的至少一个文档中的不与词典相关联的特定单词或短语的装置,其中词典包括针对词典中的单词或短语中的(一个或多个)个体单词或短语的相应的(一个或多个)属性;用于确定特定单词或短语的一个或多个相应属性的装置;以及用于部分基于特定单词或短语的一个或多个属性以及词典中的单词或短语中的(一个或多个)个体单词或短语的(一个或多个)属性中的一个或多个属性来更新词典以包括特定单词或短语与类集合中的特定类之间的关联的装置。

aq:如段落ap所述的系统,还包括:用于至少部分地基于特征向量来确定类确定的置信值或置信度烦人其他指示的装置。

ar:如段落aq所述的系统,还包括:用于将所确定的置信度值与预定阈值进行比较的装置;以及用于响应于所确定的置信度值低于预定阈值来例如经由用户接口传输或呈现特定单词或短语的指示的装置。

as:如段落ar所述的系统,还包括:用于与指示一起或伴随指示来传输特定单词或短语的(一个或多个)属性中的至少一些属性或者出现特定单词或短语的用户文本的装置。

at:如段落ar或as所述的系统,还包括:用于接收针对特定单词或短语的类、并且将所接收的类与词典中的特定单词或短语相关联的装置。

结论

本文中描述的主题推断技术可以减少为用户建议而过滤文档所需要的时间量,并且可以允许用户以自然语言提供反馈,这对用户来说比完成结构化反馈表单更快和更容易。各种示例允许推断跨多个文档的趋势。主题和趋势可以经由各种接口输出,各种接口例如可视化、编程接口等。输出可以用于增强工程师或管理者容易地解决用户问题的能力。在新文件或传入文件中新标识的短语可以随着时间的推移被自动地添加到词典,以便以迭代方式学习新的短语,以用作未来到达的用于处理的文档。词典的这种自动更新可以允许推断建议,例如关于新发布的或者测试版产品的建议,而不需要领域专家对文字进行手动分类。

尽管已经以特定于结构特征或方法动作的语言描述了技术,但是应当理解,所附权利要求不一定限于所描述的特征或动作。确切地说,这些特征和动作是作为这样的技术的示例实现而被描述的。

示例过程的操作在单独的块中被示出,并且参考这些块进行总结。这些过程被图示为块的逻辑流程,其中的每个块可以表示可以用硬件、软件或其组合来实现的一个或多个操作。在软件的上下文中,操作表示存储在一个或多个计算机可读介质上的计算机可执行指令,计算机可执行指令当由一个或多个处理器执行时使得一个或多个处理器能够执行所记载的操作。通常,计算机可执行指令包括执行特定功能或实现特定抽象数据类型的例程、程序、对象、模块、部件、数据结构等。描述操作的顺序并不旨在被解释为限制,并且任何数目的所描述的操作可以以任何顺序执行、以任何顺序组合执行、细分为多个子操作执行、和/或并行执行以实现所描述的过程。所描述的过程可以由与一个或多个计算设备102、104或200(诸如一个或多个内部或外部cpu或gpu)和/或一个或多个硬件逻辑片段(诸如fpga、dsp、或者上面描述的其他类型)相关联的资源来执行。

上述的所有方法和过程可以在由一个或多个通用计算机或处理器执行的软件代码模块中并且经由该软件代码模块完全自动化地实施。代码模块可以存储在任何类型的计算机可读存储介质或其他计算机存储设备中。部分或全部方法可以在专门的计算机硬件中实施。

除非另有特别说明,否则条件语言诸如“可以”、“可”、或“可能”在上下文中被理解为表示某些示例包括而其他示例不包括某些特征、元素和/或步骤。因此,这样的条件语言通常并不意味着一个或多个示例以任何方式要求某些特征、元素和/或步骤,也不意味着一个或多个示例必然包括用于在有或者没有用户输入或提示的情况下决定在任何特定示例中是否包括某些特征、元件和/或步骤或将执行某些特征、元件和/或步骤的逻辑。除非另有特别说明,否则诸如短语“x、y或z中的至少一个”等连接语言应当被理解为表示项、术语等可以是x、y或z、或者其组合。

本公开包括本文中描述的示例的组合。对特定“示例”等的引用是指存在于所公开的主题的范围内的至少一个示例或配置中的特征。对“示例”或“特定示例”等的单独引用不一定指代相同的示例;然而,除非特别指出,否则这样的示例不是相互排斥的。在引用“一个示例”、“示例”、“一种方法”、“方法”等时使用单数或复数不是限制性的。

本文中描述的和/或附图中描绘的流程图中的任何例程描述、元件或块应当被理解为潜在地表示包括用于实现例程中的特定逻辑功能或元素的一个或多个可执行指令的代码的模块、分段或部分。取决于将由本领域技术人员理解的所涉及的功能,替代性实现被包括在本文中描述的示例的范围内,其中元素或功能可以被删除,或者不按照所示出或所讨论的顺序执行,包括基本上同步或相反的顺序。应当强调,可以对上述示例进行很多变化和修改,其元素被理解为在其他可接受的示例之间。所有这样的修改和变化旨在被包括在本公开的范围内并且由权利要求保护。

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