首页> 中国专利> 使用从文档提取的信息来标识关系

使用从文档提取的信息来标识关系

摘要

本申请涉及使用从文档提取的信息来标识关系。一些实现提供了从各文档中挖掘关系信息的技术和装置。例如,在一些实现中,可以接收包括表格的结构化数据。可以作出表格的第一部分包括第一类型的数据且表格的第二部分包括第二类型的数据的确定。表格的第一部分的第一内容与表格的第二部分的第二内容之间的关系可以被确定。表格的第一部分的第一内容与表格的第二部分的第二内容之间的关系可以根据新近度被排名并被存储以创建所存储的关系。可以基于一个或多个搜索项来搜索所存储的关系。可以显示基于对所存储的关系进行搜索的搜索结果。可以根据与每个所存储的关系相关联的排名来排序搜索结果。

著录项

  • 公开/公告号CN106294520A

    专利类型发明专利

  • 公开/公告日2017-01-04

    原文格式PDF

  • 申请/专利权人 微软技术许可有限责任公司;

    申请/专利号CN201510328707.X

  • 申请日2015-06-12

  • 分类号G06F17/30(20060101);

  • 代理机构31100 上海专利商标事务所有限公司;

  • 代理人管琦琦

  • 地址 美国华盛顿州

  • 入库时间 2023-06-19 01:14:33

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-11-12

    授权

    授权

  • 2017-02-01

    实质审查的生效 IPC(主分类):G06F17/30 申请日:20150612

    实质审查的生效

  • 2017-01-04

    公开

    公开

说明书

技术领域

本申请涉及使用从文档提取的信息来标识关系。

背景技术

在其中许多人从事不同项目的大公司内,公司内的人员可以期望标识特定类型的关系。例如,公司内的人员可能期望确定与雇员相关联的角色、项目、客户、技术等。举例而言,当技术公司正在创造需要对技术X、Y和Z(例如,机器学习、关系数据库以及近场通信)的详细知悉的产品时,产品经理可能期望标识该公司内熟悉技术X、Y和Z的那些雇员。通常,为了查明谁正从事什么技术,产品经理可以向公司的至少一部分发送电子邮件来询问熟悉技术X、Y和Z的雇员的姓名。产品经理可以随后查阅对该电子邮件请求的答复以标识用于加入该产品团队的人员。然而,这样的过程对于询问有关雇员和技术之间关系的更多信息的人员以及回复此类邮件请求的人员两者都是耗时的。此外,一些雇员可能不回复邮件请求,从而导致请求者基于不完备的信息确定关系。

发明内容

提供本发明内容以便以简化形式介绍将在以下详细描述中进一步描述的一些概念的选集。本发明内容并不旨在标识出所要求保护的主题的关键特征或必要特征;也不旨在用于确定或限制所要求保护的主题的范围。

一些实现提供了从各文档中挖掘关系信息的技术和装置。例如,在一些实现中,可以接收包括表格的结构化数据。可以作出表格的第一栏包括第一类型的数据且表格的第二栏包括第二类型的数据的确定。表格的第一栏的第一内容与表格的第二栏的第二内容之间的关系可以被确定。对于表格中的单个行,可以存储表格的第一部分的第一内容和表格的第二部分的第二内容之间的关系以创建所存储的关系。可以基于一个或多个搜索项来搜索所存储的关系。可以显示基于对所存储的关系进行搜索的搜索结果。搜索结果可以标识哪些项目是特定的人或特定组人易于从事的。

附图说明

参考附图阐述具体实施方式。在附图中,附图标记最左边的数字标识该附图标记首次出现的附图。在不同附图中使用同一附图标记指示相似或相同的项或特征。

图1示出根据一些实现的用于挖掘关系的示例框架。

图2是根据一些实施例的包括处理结构化数据和半结构化数据的示例过程的流程图。

图3是根据一些实施例的从结构化数据提取关系的示例过程的流程图。

图4是根据一些实施例的包括接收结构化数据和一个或多个字典的示例过程的流程图。

图5是根据一些实施例的包括接收包括表格的结构化数据的示例过程的流程图。

图6是根据一些实施例的包括接收从文档提取的结构化数据的示例过程的流程图。

图7是根据一些实现的示例计算设备和环境的框图。

具体实施方式

本文中所述的系统和技术可以被用来从文档储存库提取关系信息。许多公司使用多个雇员能访问的文档储存库以使得文档能够(i)被共享,(ii)被修改以供重新使用或改作他用,(iii)被存档,等等。文档储存库可以被存储在本地服务器上、远程服务器上(诸如基于云的存储设施)或二者的组合上(例如,具有云备份的本地存储)。文档储存库可以提供各种特征,诸如版本控制、多用户实时协作、安全控制(例如,基于用户许可、文档许可或这二者来选择访问),等等。

存储在储存库中的文档可以包括多种类型的文档,诸如,举例而言,纯文本、可兼容文档、可兼容文档、可兼容文档、其他类型的可兼容文档(例如,富文本格式(RTF)等)、可移植文档格式(PDF)可兼容文档、超文本标记语言(HTML)文档、扩展标记语言(XML)文档、按另一类文档格式的文档,或其任意组合。

使用数据库或一类协作文档管理系统(诸如Collaboration Solutions(协作解决)或)可以实现文档储存库。例如,文档储存库可以集成内联网、内容管理和文档管理。文档储存库可以包括使用与产品套件(诸如Office)紧密集成的共同技术基础架构的技术的多目的的集合。除了系统集成、处理集成和工作流自动能力以外,文档储存库还可以提供内联网门户、文档和文件管理、协作、社交网络、外联网、网站、企业搜索以及业务智能。在一些情况下,文档储存库可以与企业应用软件(诸如,企业资源规划(EPR)和客户关系管理(CRM)软件)集成。

每类文档可以具有对应的解析器。例如,第一解析器可以解析第一类文档(例如,HTML),第二解析器可以解析第二类文档(XML)等。每个解析器可以解析文档以标识和提取数据,针对该数据的关系要被标识。例如,在标识与公司的雇员相关联的项目的情况下,解析器可以查找和提取标识雇员名字的信息和标识雇员正在从事的项目、与雇员相关联的角色(例如,软件设计师、团队领导、经理等等)等的信息。

在一些情况下,爬行器可以标识储存库中新的或经修改的文档,标识每个该文档的类型,并向对应的解析器发送每个新的或经修改的文档。爬行器可以是软件应用,其自动地(例如,无需人类交互)且周期性地(例如,按预定间隔)扫描储存库中所存储的文档并标识出新的、经修改的或作标记的文档以供包括。

文档可以包括一个或多个结构化数据(例如,表格)、半结构化数据(例如,XML、电子邮件报头、JavaScript对象记法(JSON)元数据等),或非结构化数据(例如,电子邮件正文等)。解析器可以提取与特定类型的关系(例如,雇员正在从事哪些项目)相关的信息并将其转换成特定类型的数据结构(例如,表格)。所提取的数据可以被各种软件模块分析以标识与特定类型的关系相关联的信息、对该关系分类、滤除噪声(例如,不相关信息等),对该关系排名,以及存储该关系(例如,在数据库中)。一个或多个软件模块可以包括机器学习算法,诸如支持向量机、神经网络、贝叶斯网络,等等。机器学习算法可以被用来标识表格中包括关系相关信息(例如,项目信息)的列。

因此,解析器可以被用来从储存库中的文档提取信息。所提取的信息可以与标识特定类型的关系(例如,雇员及该雇员正从事的一个或多个项目之间的关系)有关。各种模块可以被用来标识关系、滤除任何噪声、对关系排名,并在数据库中存储关系。因此,例如公司可以使用数据库来标识哪些雇员专长于特定技术,有关于特定客户的经验或者其他相关工作经验。例如,软件公司可以标识专长于机器学习或电信协议的软件设计师。作为另一示例,专注于知识产权的法律事务所可以找到正对特定技术领域进行研究的客户,并且可能期望标识具有撰写该特定技术领域(例如,电信软件、基于云的服务、半导体、处理器、存储器存储等)申请的经验的专利代理人。可以检索此类信息而无需诉诸于向多个雇员发电子邮件来询问他们哪些雇员具有特定的专长。

用于挖掘关系的框架

图1示出根据一些实现的用于挖掘关系的示例框架100。框架100可以由一个或多个计算设备或配置有特定的处理器可执行指令的其他机器来执行。以下使用如何挖掘公司文档(例如,企业文档)以标识出回答“雇员ABC现在正在从事什么?”这一问题的特定类型的关系的示例(例如,该雇员正在从事的项目名称或该雇员正在充当的当前角色)来描述框架100。然而,应当理解框架100还可以被应用于挖掘其他类型的关系信息。关系信息可以包括在雇员从事项目时间的期间与该雇员相关联的项目名称、项目中涉及的技术、一个或多个角色(例如,经理、设计师、首席开发者、技术作者、软件工程师等)以及与该雇员和项目之间的关系有关的其它信息。框架100可以提取关系信息并且在使用户能够执行各种操作(包括搜索、检索以及存储关系信息)的数据存储机构中存储关系信息。

图1中所示的诸模块和数据流示出了示例性实施例。然而,其他实施例可以在保持从各文档中挖掘关系的功能性的同时省略诸模块中的一个或多个模块,组合多个模块的功能,将特定模块分成两个或更多个附加的模块,改变数据流,作出对图1中诸模块或数据流的其他变动,或者对其进行组合。

框架100可以包括文档储存库102、一个或多个解析器104和关系挖掘模块106。使用数据库或一类协作文档管理系统(诸如CollaborationSolutions(协作解决)或)可以实现文档储存库102。文档储存库102可以包括使用与产品套件(诸如Office)集成的共同技术基础架构的多目的技术集合。文档储存库可以提供文档和文件管理、协作以及其他功能。文档储存库102可以包括文档108、地址簿110和爬行器112。储存在文档储存库102中的文档108可以包括多种类型的文档,诸如,纯文本、可兼容文档(例如,RTF等)、PDF可兼容文档、HTML文档、XML文档、按另一类文档格式的文档,或其任意组合。在一些情况下,文档108可包括电子邮件。然而,在其他情况下,由于隐私顾虑,文档108可以不包括电子邮件。在本文中技术和系统被描述为用于挖掘不包括电子邮件的文档的技术和系统。然而,各实施例包括针对关系信息挖掘包括电子邮件的文档的技术和系统。地址簿110可以包括联系信息,诸如雇员名称、雇员别名(例如,昵称)、雇员职位、雇员地址(例如,电子邮件地址、电话号码、即时消息地址等)、其他雇员相关信息或其任意组合。爬行器112可以是自动地且周期性地扫描文档108以标识针对关系信息要被挖掘的文档108(诸如新的、经修改的或作标记的文档)的软件应用。例如,用户可以将文档标记为将被包括进或排除出关系挖掘。爬行器112可以为关系挖掘选择各文档108中已经被标记用于包括的文档同时排除已经被标记用于排除出关系挖掘的另一文档。在一些情况下,可以由文档储存库102的创建者提供爬行器112来创建文档储存库102中文档的搜索索引。在此情况下,可以修改爬行器112向解析器104发送新的和经修改的文档。

爬行器112可以向解析器104发送文档108的至少一部分。解析器104可以包括第一解析器114到第N解析器116(其中N>1)。解析器104中的每一个可以处理特定类型的文档。例如,第一解析器114可以解析可兼容文档,第二解析器可以解析可兼容文档,第三解析器可以解析可兼容文档,第四解析器可以解析PDF可兼容文档,第五解析器可以解析HTML文档,等等。解析器104可以提取输入数据116,该输入数据116用作使用关系挖掘模块106来挖掘关系的输入。所提取的数据120可以包括结构化数据(例如,表格)、半结构化数据(例如,列表、XML、JSON等)、非结构化数据(例如,不具有预定数据模型的数据或者不以预定方式整理的数据)或其任意组合。在一些情况下,可以发现特定类型的关系主要在特定类型的数据中,并且解析器104可以标识特定类型的数据(结构化数据和半结构化数据)同时忽略其他类型的数据(例如,非结构化数据)。例如,可以发现雇员当前正在从事的项目主要在结构化数据和半结构化数据中。在此示例中,解析器104可以被配置成忽略非结构化数据。所提取的数据120可以包括表格、列表、元数据(例如,诸如作者、标题、修改日期等与文档相关联的属性),以及基于数据序列的上下文信息。作为上下文信息的示例,演示的第一页可以包括演示的标题、演示的一个或多个作者、作者的职位等。在一些情况下,解析器104可以查找特殊的格式化字符来标识结构化数据,诸如缩进水平、特殊格式化指令等。在一些情况下,解析器104可以将半结构化数据(例如,列表和其他类似数据结构)转换成结构化数据(例如,表格)。

解析器104可以首先从地址簿110提取各种字典,诸如第一字典122到第M字典124(其中M>1,M不必等于N)。字典122到124可以包括公司中的人名以及他们对应的角色。可以在解析器104提取结构化数据和半结构化数据之前基于地址簿110来确定字典122到124。例如,可以使用活动目录数据来编译人名的字典,而可能的项目名称的字典可以通过从文档108提取首字母缩写词的单独算法来填充。字典122到124可以包括人员字典(例如,雇员名字)、项目名称字典以及角色字典(例如,诸如软件设计师、技术作者等与单个雇员相关联的当前角色)。字典122到124可被提取来自地址簿110中的信息。例如,地址簿110可以包括雇员名字和他们的当前职位(例如,角色)。所提取的数据120和所提取的字典114到116可被用作输入到关系挖掘模块106的输入数据118。

特征提取模块126可以从输入数据118提取特征。例如,由特征提取模块126提取的特征可以包括纲要名称、特定表格中空单元格与非空单元格之比、特定表格中有差异的单元格和无差异的(indistinct)单元格之比(例如,确定一列中的各值是相同还是不同,例如,如果一列中所有的单元格是有差异的,则比值为1(最大值)而如果一列中所有的单元格是相同的,则比值为1/n(n为行号,这是最小值))、特定表格中每个单元格中的行号、列索引、数位与字符比(例如主要具有数位的单元格可以包括日期、价格或其他数值量)、

以大写字母开头的文字与以小写字母开头的文字之比(例如,项目名称可以被大写)、文字与数字比(例如,具有数字的单元格可以包括日期、价格或其他并非名称、角色、项目名称的数值量等)、首字母缩写词与非首字母缩写词之比(例如,首字母缩写词常被用来缩略雇员正在从事的项目)、

统一资源标识(URI)与非URI之比(例如,URL可以标识项目组的内联网页面的位置)、单元格的内容是否被包括在字典122到124之一中

(例如,包括在人员字典中发现的名称的表格的列可以指示该列包括雇员名称,而包括在角色字典中发现的角色的表格的列可以指示该列包括雇员角色)、标题(例如,表格标题、节标题、章标题等)、非用词(stopwords)(例如,“and(和)”、“the(该)”等)、其他类型的特征,或其任意组合。当然,非用词可能是取决于语言的,例如对于一种语言(例如,英语)而言的非用词可能不同于对于不同语言(例如,俄语)而言的非用词。

由特征提取模块126提取的特征可以被用作对一个或多个分类器128的输入以确定(例如,预测)列是否包括项目名称、角色、人名等。例如,分类器128可以分类表格的列是否包括雇员名字、角色名称、项目名称、日期、描述,等等。分类器128可以使用机器学习算法,诸如逻辑回归(LR)、支持向量机、神经网络、贝叶斯网络或其他机器学习算法。分类器128可以在离线训练130期间被训练并随后执行实时分类。

在离线训练130期间,训练数据132(例如,先前已经被标记的数据)可以被用来执行训练134。例如,在一些实现中,训练134可以包括逻辑回归(LR)训练。在LR训练中,使用逻辑函数将描述可能结果的概率建模成解释(预测)变量的函数。通过估计概率,逻辑回归测量取决于类别的变量和一个或多个独立变量之间的关系,该一个或多个独立变量通常(但非必须)是连续的。例如,在一个表格中,一列可以包括项目名称而多个其他列可以包括其他信息(例如,团队成员名、团队成员的角色、团队成员的联系信箱等)。因此,在五列或六列中可能存在感兴趣的一列。因此,分类器128可以包括成本敏感LR分类器,在该成本敏感LR分类器中错误预测的正结果可以被给予更大的罚分。当然,在其他实现中,训练134可以包括其他类型的训练而非LR训练。使用训练数据132的训练134的结果可以是创建一个或多个模型,诸如已命名实体识别(NER)模型136。NER模型136仅用作一类模式的示例。取决于实现,可以使用其他类型的模型而非NER模型136。

一个或多个过滤器138可以从由分类器128分类的特征中滤除噪声。例如,过滤器138可以包括基于规则的过滤器并且包括使用黑名单(例如,排除特定数据)、白名单(例如,包括在白名单中指出的数据同时排除在白名单中没有包括的其他数据)或其他类型的基于规则的过滤器。用于过滤噪声的规则的示例可以包括:(i)移除包括日期信息或时间信息的任何关系的规则;以及(ii)如果单元格中的文字被包括在黑名单中,则移除该文字(例如,单元格仅包括黑名单文字)。

对于可包括歧义的特定类型的数据,消歧模块140可以消除歧义。例如,大公司内的雇员名字可能包括具有相似名字的雇员。例如,相似可能是由使用昵称或缩短名字引起的,其中昵称或缩短的名字与另一雇员名称相似或相同。作为另一个示例,文档的作者可能在标识雇员正从事特定项目的表格或列表中误拼写另一雇员的名字,其中误拼写与另一雇员名称相似或相同。消歧模块140可以通过查看一个或多个关系来消除歧义,诸如另一雇员(例如,经理/主管、同事等)与歧义雇员名称的关系、与歧义雇员名称相关联的角色、与歧义雇员名称相关联的项目,等等。例如,通过标识与每个歧义名称相关联的项目可以消除名称歧义。举例而言,John Smith可以被标识为正从事搜索引擎项目,而Jon Smith可以被标识为正从事产品套装项目。作为另一个示例,通过标识与每个歧义名称相关联的经理(或主管)可以消除名称歧义。举例而言,John Smith可以被标识为有经理Chris Jones,而Jon Smith可以被标识为有经理SteveWilson。作为又一个示例,通过标识与每个歧义名称相关联的同事(例如,同组成员)可以消除名称歧义。举例而言,Robert Smith可以被标识为有在相同部门工作的同事Sam Adams,而Rob Smith可以被标识为有同事Dinesh Patel。作为另一个示例,通过标识与每个歧义名称相关联的角色可以消除名称歧义。举例而言,John Smith可以被标识为有软件设计师的角色而Jon Smith可以被标识为有技术作者的角色。因此,消歧模块140可以使用各种技术来标识歧义名称的身份并消除歧义。类似技术可以被用来消除针对正被挖掘的其他类型的关系的歧义。

排名模块142可以排名已经基于一个或多个准则标识的关系。排名模块142可以被实现为聚集算法,该聚集算法从一组项目名称候选(例如,潜在的项目名称)中选择项目名称。可以在执行排名之前从文档108提取该组项目名称候选。排名模块142可以被实现为映射/减少(map/reduce)算法。例如,雇员可以被标识为具有与多个项目的关系。可以基于日期来排名关系,其中更近的关系导致更高的排名(例如,指示相对近的项目);而基于雇员在多久之前从事该项目,具有在过去的日期的关系可以具有较低的排名。例如,可以基于文档的创建日期、文档的最后修改日期、与从其提取雇员和项目之间关系的文档相关的其他日期或其任意组合来确定与雇员和该雇员正从事的项目之间关系相关联的日期。

经排名的关系144可以被存储在数据存储146中,诸如数据库或其他类型的数据整理器。数据存储146可以使关系144被搜索、分类等。例如,召集团队从事新项目的经理可以搜索数据存储146以标识专长于特定技术领域的雇员,并且可以使用排名来标识在特定技术领域具有最近经验的雇员。

因此,爬行器112可以在文档储存库102中标识新的且经修改的文档。可以基于每个文档的类型来解析所标识的文档,从而产生要被用于关系挖掘的结构化数据。在一些情况下,解析器104可以将半结构化数据转换成结构化数据。可以从结构化数据提取特征(例如,关系)并使用分类器128对特征分类。可以过滤特征以移除噪声。数据的歧义部分可以被消歧。可以基于指定的准则来对关系进行排名,并随后将其存储在数据存储146中。以此方式,可以从文档中的数据挖掘不同实体间的关系。例如,可以挖掘企业文档以标识哪些项目是雇员已经从事的,包括过去的项目和当前的项目。

示例性过程

在图2、3、4、5和6的流程图中,每一个框表示可以用硬件、软件或其组合实现的一个或多个操作。在软件的上下文中,各个框表示在由一个或多个处理器执行时使处理器执行既定操作的计算机可执行指令。一般而言,计算机可执行指令包括执行特定功能或实现特定抽象数据类型的例程、程序、对象、模块、组件、数据结构等。描述各个框的次序并不旨在被解释为限制,并且任何数量的所述操作可以按任何次序和/或并行地组合以实现各过程。出于讨论目的,参考如上所述的架构100来描述过程200、300、400、500和600,但其他模型、框架、系统和环境也可以实现这些过程。

文档处理

图2是根据一些实现的包括处理结构化数据和半结构化数据的示例过程200的流程图。例如,过程200可以由解析器104执行,可以由关系挖掘模块106中的各模块执行,或者由这两者执行。因为在多数文档中,关系信息的大多数可以被包括在元数据中、半结构化数据中以及结构化数据中,故而过程200从元数据、半结构化数据和结构化数据提取关系信息。元数据可以包括与文档相关联的属性,诸如作者名称、创建日期、最后修改日期、文档标题等。元数据还可以包括演示的第一页,其包括演示的标题和作者。尽管元数据是一种形式的机构化数据,但是通常在文档正文中找不到元数据。元数据通常被包括在文档的属性(或其他嵌入数据)内或文档的标题页内,并因此可以与在文档的正文中发现的结构化数据被不同地处理。

在202,可接收一个或多个文档。在204,可处理与文档相关联的元数据。元数据可以包括:(i)与文档相关联的属性,(ii)演示的第一张幻灯片;以及(iii)包括与文档相关联的信息的其他位置(location),诸如文档的标题、文档的作者、文档的创建日期、文档的最后修改日期、与文档相关联的其他信息或其任意组合。例如,可以通过从元数据提取文档的作者和文档的标题来处理元数据以标识作者和文档的标题之间的关系。

在206,文档可以被解析以标识半结构化数据(例如,列表)和结构化数据(例如,表格)。半结构化数据可以包括列表,诸如分配列表。例如,针对一项目的电子邮件分配列表可以标识项目的名称、项目的成员、项目中每个成员的角色、其他项目相关信息或者其任意组合。半结构化数据可以行进至208,在此半结构化数据被转换成结构化数据。例如,列表可以被转换成表格或其他结构化数据。在206所标识的结构化数据可以行进至210。例如,在图1中,解析器104可以接收存储在文档储存库102中的文档108并解析文档108以标识并提取元数据、半结构化数据和结构化数据。解析器104可以将半结构化数据转换成结构化数据。举例而言,在收到文档之后,第一解析器可以在204处解析文档以标识元数据(例如,文档的属性和文档的第一页)并提取作者名称、文档标题和其他信息。基本上与204同时,第二解析器可以解析文档以标识半结构化数据(例如,列表等)和结构化数据(例如,表格等)。第二解析器可以将半结构化数据转换成结构化数据。

在210,结构化数据(例如,从206到208)被处理以挖掘(例如,标识和提取)关系信息。在图3中更详细地描述了从结构化数据挖掘关系信息的过程。例如,在图1中,特征提取模块126可以提取特征(例如,表格的每个单元中的文字与数字比)并且分类器128可以使用特征作为输入来确定哪一列被预测包括项目名称,哪一列被预测包括人名,哪一列被预测包括角色名称,等等。

在212,从结构化数据(例如,从210)和元数据(例如,从204)提取的关系信息可以被过滤以移除噪声。在214,可存储关系。例如,在图1中,过滤器138可以被用来过滤所标识的关系以移除噪声并且经过滤的关系被存储在数据存储146中。

因此,解析器可以从文档标识并提取元数据、半结构化数和结构化数据。半结构化数据可以被转换成结构化数据。结构化数据可以被处理(例如,通过标识和分类关系)以提取关系信息。从元数据和从结构化数据提取的关系信息可以被过滤并且被存储以便关系信息能够被搜索、存储等。

处理结构化数据

图3是根据一些实施例的从结构化数据提取关系的示例过程300的流程图。过程300可以由关系挖掘模块106中的各模块执行,诸如举例而言,由特征提取模块126、分类器128或由这两者。

在302,可以接收结构化数据(例如,表格)。在304,作出结构化数据是否基于模板的确定。例如,在项目组内,雇员可以使用相同的表格模板(例如,相同的结构化数据模板)。基于相同纲要(例如,布局)的表格可以被标识为使用相同的模板。例如,如果一表格遵循与三个其他表格相同的纲要,则该表格很可能基于与三个其他表格相同的模板。如果三个其他表格的纲要先前已经被确定,则该纲要可以标识该表格中的哪一列包括雇员名称且该表格中的哪一列包括项目名称、角色或其他关系信息。用于结构化数据的模板的纲要可以被标识(例如,通过图1的解析器104)并被存储在模板字典306(例如,字典122到124之一)中。

如果在304使用模板字典306作出结构化数据302基于模板的(例如,该模板可以被用来创建结构化数据302的结构)的确定,则在308处处理基于模板的结构化数据,并且关系可以被存储在214。当然,在一些情况下,在存储关系之前,可以滤除关系并执行各项(例如,适当的名称)的消歧。例如,如果结构化数据302的纲要与先前提取的纲要匹配,则可以确定已经基于模板创建了结构化数据302。在这种情况下,因为纲要是已知的,可以从结构化数据302的行和列提取数据而不使用分类器。例如,结构化数据302的纲要可以对应于先前提取的纲要,在该先前提取的纲要中第一列包括人名,第二列包括角色名称且第三列包括项目名称。可以分别从结构化数据302的第一列、第二列和第三列提取人名及其对应的角色和项目,并且存储关系“<人名>具有<角色名称>的角色”及“<人名>从事过<项目名称>的项目”。

如果在304作出结构化数据302不基于模板的确定,则使用人名字典312作出结构化数据是否包括人名的确定。人名字典312可以由解析器104基于对地址簿110的解析来创建。例如,表格的单元格的内容可以与人名字典312的内容作比较。如果表格的单元格中的内容包括在人名字典312中包括的名字,则该表格包括该单元格的列可以包括人名(例如,雇员)。以此方式,可以使用人名字典312来确定表格中包括人名的列。类似的原理适用于标识其他类型的关系。例如,为了标识X和Y之间的关系,可以作出结构化数据302是否包括X的确定。如果结构化数据302包括X,则可以扫描(例如,解析)结构化数据302的剩余部分以确定该结构化数据是否包括Y。

如果结构化数据302不包括人名,则过程300可以结束。如果结构化数据302包括人名,则结构化数据302可以包括关系信息,诸如人员的角色或该人员正从事的项目。

如果在310作出结构化数据包括人名的确定,则过程300行进至314,在此使用角色字典316作出结构化数据302是否包括人员的角色的确定。例如,在图1中,解析器104可以从地址簿110提取角色字典。表格的单元格的内容可以与角色字典的内容作比较以确定该单元格是否包括角色名称。如果在314作出结构化数据302包括人员的角色名称的确定(例如,通过确定表格的单元格的内容被包括在角色字典中),则过程300行进至318,在此包括角色的结构化数据被处理,并且所产生的关系信息被存储在214。例如,雇员和雇员角色之间的关系(例如,Sam Smith是首席软件开发者)可以描述该雇员正在从事什么,从而产生关系被标识和存储。在一些实现中,314可以被省略,例如,响应于在310处确定结构化数据302包括人名,过程300可以行进至320以确定结构化数据302是否包括项目名称。

如果在314作出结构化数据不包括人员角色的确定,则过程300行进至320,在此作出结构化数据302是否包括项目名称的确定。例如,可以从表格的每个单元格提取特征,并且特征(例如,首字母缩写词和非首字母缩写词之比、文字与数字比等)可以被用作对分类器的输入,该分类器已经被训练以预测表格中的哪一列(或行)包括项目名称。举例而言,分类器可以基于特征来确定(例如,预测)特定的列(或行)包括项目名称,例如该列包括的首字母缩略词多于非首字母缩写词,该列包括的字母多于数字,等等。当特征识别每个单元格包括的数字(例如,项目里程碑的日期)多于字母等时,分类器可以确定(例如,预测)特定的列(或行)不包括项目名称。如果在320处作出结构化数据包括项目名称的确定,则过程300行进至322,在此处理包括人名和项目名称的结构化数据302,并且所产生的关系信息被存储在214。例如,雇员和项目之间的关系(例如,Sam Smith是从事基于图像的搜索引擎项目的团队成员)可以描述该雇员正在从事什么,从而产生关系被标识和存储。例如,如果在310处表格的单元格的内容被包括在人员字典312中,则内容被确定为人员的名称。在320处,作出表格中的其他单元格是否包括项目名称的确定。如果分类器预测表格中的其他单元格包括项目名称,则人名和项目名称之间的关系“<人名>从事<项目名称>项目”被存储。如果在320处作出结构化数据不包括项目名称的确定,则过程300结束。

使用人员字典312(从图1中的地址簿110提取),使得特征提取模块126和分类器128能够相对快速且方便地在结构化数据302中标识人员的名称。在320标识项目名称可能比较地困难。为了标识结构化数据中的哪些部分包括项目名称,确定结构树数据的纲要可能是有用的。例如,表格的第一列通常标识表格的纲要,因为第一列可以包括描述每一列内容的报头。因此,纲要可以被用来标识表格中的哪些列包括人名,哪些列包括角色,以及哪些列包括项目名称。

由特征提取模块126提取的用以确定结构化数据302是否包括项目名称(或其他项目相关信息)的特征可以包括:纲要、纲要名称、特定表格中空单元格与非空单元格之比、特定表格中有差异的单元格和无差异的单元格之比、

特定表格中每个单元格中的行号、列索引、数位与字符比(例如主要具有数位的单元格可以包括日期、价格或其他数值量)、以大写字母开头的文字与以小写字母开头的文字之比(例如,项目名称可以被大写)、文字与数字比(例如,具有数字的单元格可以包括日期、价格或其他并非名称、角色、项目名称的数值量等)、首字母缩写词与非首字母缩写词之比(例如,首字母缩写词常被用来缩略雇员正在从事的项目)、统一资源标识(URI)与非URI之比(例如,URL可以标识项目组的内联网页面的位置)、单元格中的内容是否被包括在字典122到124之一中(例如,包括在人员字典中发现的名称的表格的列可以指示该列包括雇员名称,而包括在角色字典中发现的角色的表格的列可以指示该列包括雇员角色)、标题(例如,表格标题、节标题、章标题等)、非用词(例如,“and(和)”、“the(该)”等)、其他类型的特征,或其任何组合。

过程300示出图1中的关系挖掘模块106如何标识特定关系,诸如与雇员相关联的角色或者与雇员相关联的项目。当然,过程300可以被应用以标识其他类型的关系,诸如X(例如,雇员)和Y(例如,角色)之间的关系或X(例如,雇员)和Z(例如,项目)之间的关系。例如,在310,可以作出结构化数据302是否包括X的确定。如果结构化数据包括X,则在314,可以作出结构化数据302是否包括Y的确定。如果结构化数据302包括X和Y,则X和Y之间的关系可以被存储。如果结构化数据包括X,则在320,可以作出结构化数据302是否包括Z的确定。如果结构化数据302包括X和Z,则X和Z之间的关系可以被存储。

因此,通过从结构化数据提取特征并使用一个或多个分类器对特征分类可以分析文档以标识关系。半结构化数据在被处理之前可以被转换成结构化数据。解析器可以创建用来标识结构化数据的哪些部分包括特定类型信息的多个字典。所标识的关系可以被存储要被搜索、存储的消息等。标识公司中诸雇员中的每个雇员正从事的项目是可以从文档储存库中的文档挖掘的关系类型的示例。当然,使用本文中所述的技术和系统可以挖掘其他类型的关系。

图4是根据一些实施例的包括接收结构化数据和一个或多个字典的示例过程400的流程图。例如,过程400可以由图1中的关系挖掘模块106执行。

在402,可接收结构化数据和一个或多个字典。结构化数据和一个或多个字典可以提取自一个或多个文档。例如,在图1中,关系挖掘模块106可以接收包括所提取的数据120(例如,结构化数据)和字典122到124的输入数据118。

在404,作出结构化数据是否包括具有第一数据类型的第一数据的确定。如果在404处作出结构化数据不包括第一数据类型的确定,则过程结束。如果在404处作出结构化数据包括第一数据类型的确定,则过程行进至406。在406,作出结构化数据是否包括具有第二数据类型的第二数据的确定。如果在406处作出结构化数据不包括第二数据类型的确定,则过程结束。如果在406处作出结构化数据包括第二数据类型的确定,则过程行进至408。在408,确定第一数据和第二数据之间的关系。例如,在图1中,特征提取模块126可以确定表格的第一列包括人名(例如,通过比较表格的单元格的内容与人员字典中的名称)以及表格的第二列包括人员正从事的项目名称(例如,分类器可以使用从表格的单元格提取的特征来预测第二列包括项目名称),由此确定关系,例如名为X(例如,John Smith)的人员正从事名为Y(例如,针对图像的搜索引擎)的项目。

在410,执行第一数据或第二数据中至少一个的消歧。例如,在图1中,消歧模块140可以被用来在结构化数据中类似或相同的人名之间进行区分。举例而言,可以使用消歧在人名“John Smith”、“Jon Smith”和“Johnny Smith”之间进行区别。

在412,基于关系何时产生将排名与关系相关联。例如,在图1中,排名模块142可以被用来基于每个关系何时产生来排名各关系。举例而言,当前的关系比早前的关系更加相关并因此当前关系被排名高于先前关系。例如,在1到10的排名中,当前关系可以具有为10的排名,一年之久的关系可以具有为9的排名,诸如此类,其中9年或更多年之久的关系具有为1的排名。

在414,关系可以被存储在包括附加关系的数据库中。例如,在图1中,关系144可以被存储在数据存储146中。

在416,使用一个或多个搜索项来执行数据库搜索。在418,显示搜索结果。例如,在图7中,搜索引擎720可以被用来搜索关系144并显示搜索结果722。

因此,解析器可以提取结构化数据,并将半结构化数转换成结构化数据,并将结构化数据发送到关系挖掘模块。可以使用分类器来提取和分类特征。例如,表格的每个单元格的内容的特征可以被分类,以标识哪一列包括人名而哪一列包括项目名称(或角色名称)。哪些人员正在从事哪些项目的关系可以被确定。关系可以被过滤,对有可能有歧义的数据类型执行消歧,根据每个关系何时产生来排名,以及存储在可搜索的数据库中。

图5是根据一些实施例的包括接收包括表格的结构化数据的示例过程500的流程图。例如,过程500可以由图1中的关系挖掘模块106执行。过程500假设表格被布置成使得各列被分类,并且处于相同行中意味着某种关系。然而,应当理解,在过程500中通过将“行”变成“列”以及将“列”变成“行”过程500可以被应用于其中行标识类别而列指示关系的表格。

在502,可以从一个或多个文档解析器接收包括表格的结构化数据。例如,在图1中,关系挖掘模块106可以接收包括所提取的数据120(例如,结构化数据)和字典122到124的输入数据118。

在504,作出表格的第一列是否包括第一类型的数据的确定。如果在404处作出结构化数据不包括第一类型数据的确定,则过程结束。如果在404处作出结构化数据包括第一类型数据的确定,则过程行进至506。在506,作出表格的第二列是否包括第二类型的数据的确定。如果在506处作出结构化数据不包括第二类型数据的确定,则过程结束。如果在506处作出结构化数据包括第二类型数据的确定,则过程行进至508。在508,表格的第一栏的第一内容与表格的第二栏的第二内容之间的关系被确定。例如,在图1中,特征提取模块126和分类器128可以确定表格的第一列包括人名(例如,通过确定单元格的内容包括人员字典中所包括的名称)以及表格的第二列包括人员正从事的项目名称(例如,分类器基于从表格的单元格提取的特征来预测该列包括项目名称),由此确定名为X(例如,John Smith)的人员和该人员正从事的名为Y(例如,针对图像的搜索引擎)的项目之间的关系,例如关系“X正在从事Y”。

在510,对于表格中的单个行,可以在数据库中存储第一列的第一内容和第二列的第二内容之间的关系。例如,在图1中,关系144可以被存储在数据存储146中。

在512,使用一个或多个搜索项来执行数据库搜索。在514,显示搜索结果。例如,在图7中,搜索引擎720可以被用来搜索关系144并显示搜索结果722。

因此,解析器可以提取结构化数据,并将半结构化数转换成结构化数据,并将结构化数据发送到关系挖掘模块。可以使用分类器来提取和分类特征。例如,表格的每个单元格的内容的特征可以被分类以标识哪一列包括人名而哪一列包括项目名称(或角色名称)。哪些人员正在从事哪些项目的关系可以被确定。关系可以被过滤对有可能有歧义的数据类型执行消歧,根据每个关系何时产生来排名,以及存储在可搜索的数据库中。

图6是根据一些实施例的包括接收从文档提取的结构化数据的示例过程500的流程图。例如,过程600可以由图1中的关系挖掘模块106执行。

在602,可以接收从存储在共享的文档储存库中的文档提取的结构化数据。例如,在图1中,关系挖掘模块106可以接收包括所提取的数据120(例如,结构化数据)和字典122到124的输入数据118。输入数据118可以由解析器104从文档储存库102中的文档108提取。

在604,作出结构化数据的第一部分是否包括第一数据的确定。如果在604处作出结构化数据的第一部分不包括第一数据的确定,则过程结束。如果在604处作出结构化数据的第一部分包括第一数据的确定,则过程行进至606。在606,作出结构化数据的第二部分是否包括第二数据的确定。如果在606处作出结构化数据的第二部分不包括第二数据的确定,则过程结束。如果在606处作出结构化数据的第二部分包括第二数据的确定,则过程行进至608。在608,确定第一数据和第二数据之间的多个关系。例如,在图1中,特征提取模块126和分类器128可以确定表格的第一列包括人名(例如,通过确定单元格的内容包括人员字典中所包括的名称)以及表格的第二列包括人员正从事的项目名称(例如,分类器基于从表格的单元格提取的特征来预测该列包括项目名称),由此确定关系,例如,名为X(例如,John Smith)的人员正从事的名为Y(例如,针对图像的搜索引擎)的项目。

在610,通过移除噪声来过滤多个关系以创建经过滤的关系。例如,在图1中,过滤器138可以被用来从经分类的特征中移除噪声(例如,预测表格中的哪一列包括项目名称)。

在612,基于与经过滤的关系的单个关系相关联的日期来排名经过滤的关系。例如,在图1中,排名模块142可以被用来基于每个关系何时产生来排名各关系。举例而言,当前的关系比早前的关系更加相关并因此当前关系被排名高于先前关系。

在614,经过滤和排名的关系可以被存储在数据库中。例如,在图1中,关系144可以以图表索引的形式被存储在数据存储146中,该图表索引包括将人名与从其提取关系的文档相关联的信息。

在616,使用一个或多个搜索项来执行数据库搜索。在616,显示搜索结果。例如,在图7中,搜索引擎720可以被用来搜索关系144并显示搜索结果722。在一些实现中,所提取的关系信息可以被显示在用户界面(UI)中以使得单个雇员能够确认一组关系(例如,该雇员已经牵涉的项目)将要与雇员的名称项目相关联。在一些情况下,经理或其他雇员可以使用专长领域的标准化集合来选择针对单个雇员的专长领域。例如,软件公司可以将已撰写过软件代码的所有雇员的专长领域标准化为“软件设计师”,以启用一致搜索结果。没有标准化,针对“软件设计师”项的搜索结果可能不包括“软件工程师”、“计算机程序员”、“软件开发者”等等。

因此,解析器可以提取结构化数据并将半结构化数转换成结构化数据并将结构化数据发送到关系挖掘模块。可以使用分类器来提取和分类特征。例如,表格的每个单元格的内容的特征可以被分类以标识哪一列包括人名而哪一列包括项目名称(或角色名称)。哪些人员正在从事哪些项目的关系可以被确定。关系可以被过滤对有可能有歧义的数据类型执行消歧,根据每个关系何时产生来排名,以及存储在可搜索的数据库中。

示例计算设备和环境

图7示出了可用于实现此处所描述的模块和功能的计算设备700和环境的示例配置。计算设备700可包括至少一个处理器702、存储器704、通信接口706、显示设备708、其他输入/输出(I/O)设备710、以及一个或多个大容量存储设备712,它们能够诸如经由系统总线714或其他合适的连接彼此通信。

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

存储器704和大容量存储设备712是用于存储由处理器702执行来执行上述各种功能的指令的计算机存储介质的示例。例如,存储器704一般包括易失性存储器和非易失性存储器(例如,RAM、ROM等)。此外,大容量存储设备712一般可包括硬盘驱动器、固态驱动器、包括外部和可移动驱动器在内的可移动介质、存储卡、闪存、软盘、光盘(例如,CD、DVD)、存储阵列、网络附连存储、存储区域网络等等。存储器704和大容量存储设备712在本文中统称为存储器或计算机存储介质,并且可以是能够存储计算机可读、处理器可执行程序指令作为计算机程序代码的介质,计算机程序代码可由作为被配置成执行在本文中的实现中描述的操作和功能的特定机器的处理器702执行。

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

诸如监视器等显示设备708可被包括在一些实现中以便向用户显示信息和图像。其他I/O设备710可以是从用户接收各种输入并向用户提供各种输出的设备,并且可包括键盘、遥控器、鼠标、打印机、音频输入/输出设备等等。

存储器704可包括根据本文实现的基于上下文对象检索的模块和组件。在所图示是示例中,存储区704包括文档储存库102,该文档储存库102包括被解析器104解析的文档108。由解析器104提取的元数据、半结构化数据和结构化数据可以被关系挖掘模块106处理以标识关系144。

.存储器704还可包括一个或多个其他模块716,如操作系统、驱动程序、通信软件等等。存储器704还可包括其他数据718,如在执行上述功能的同时存储的数据以及其他模块716所使用的数据。存储区704可以包括搜索引擎720,该搜索引擎720可以被用来输入搜索项以搜索所存储的关系144并提供搜索结果722。

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

虽然在图7中被示为存储在计算设备700的存储器704中,但文档储存库102、解析器104、关系挖掘模块106和关系144或其各部分可以使用可由计算设备700访问的任何形式的计算机可读介质来实现。如本文所使用的,“计算机可读介质”包括至少两种类型的计算机可读介质,即计算机存储介质和通信介质。

计算机存储介质包括以存储如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括但不限于:RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光存储、磁带盒、磁带、磁盘存储或其他磁存储设备,或者可用于存储信息以供计算设备访问的任何其他非传输介质。

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

此外,本公开提供了如在附图中描述和例示出的各种示例实现。然而,本公开并不局限于此处所描述和示出的实现,如本领域的技术人员所知道的那样,可延伸至其它实现。在说明书中所引用的“一个实现”、“这个实现”、“这些实现”或“一些实现”意味着所描述的特定特征、结构或特性被包括在至少一个实现中,且在说明书中的各个位置中的这些短语的出现并不需要全部都引用同一实现。

结语

尽管用结构特征和/或方法动作专用的语言描述了该主题,但所附权利要求书中定义的主题不限于上述具体特征或动作。相反,上述具体特征和动作是作为实现权利要求的示例形式公开的。本公开旨在覆盖所公开的实现的任一和所有改编或变型,并且所附权利要求书不应被解释为限于说明书中所公开的具体实现。相反,本文档的范围完全由所附权利要求书以及这些权利要求所拥有的等效技术方案的完整范围来确定。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号