生成结构化信息转让专利

申请号 : CN200680013245.1

文献号 : CN101164039B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : E·帕斯托D·埃格诺

申请人 : 谷歌公司

摘要 :

从例如商业数据提供商、企业网站和/或目录网站的一个或多个源来获取关于企业的结构化和/或非结构化数据。从非结构化数据中抽取字符串。该字符串包含描述关于企业的事实的键-值对。解析抽取的字符串以将键和值标准化,并且将它们置入机器可理解的结构化表示。某些键和/或值不能被标准化。将事实与相关于该事实的企业进行集群。比较来自于不同源的标准化事实,并且对该事实赋予置信度和/或权重。使用这些置信度和权重来选择在目录中所述企业的页面上显示的事实。

权利要求 :

1.一种用于生成结构化数据的系统,包括:

数据获取模块,用于从两个或者更多源接收两个或者更多电子文档,所述电子文档包含描述关于企业的事实的非结构化数据,其中至少两个所述电子文档包括描述关于所述企业的冲突事实的非结构化数据;

数据抽取模块,用于从所述两个或者更多电子文档中抽取描述关于所述企业的事实的非结构化数据,所提取的非结构化数据包括描述关于所述企业的所述冲突事实的所述非结构化数据;

数据解析模块,用于接收所述抽取的非结构化数据以及创建由所述非结构化数据描述的事实的结构化表示,包括所述冲突事实的结构化表示,其中所述结构化表示以标准化格式来表示所述事实;

事实比较模块,用于对所述冲突事实的所述结构化表示进行比较,以及根据包括所述冲突事实的描述的所述电子文档的所述源来确定置信度,所述置信度指示所述冲突事实准确的可能性;以及事实呈现模块,用于根据所述置信度来确定所述冲突事实对终端用户的显示,其中所述事实呈现模块基于所述置信度来确定是否显示所述冲突事实的属性。

2.根据权利要求1所述的系统,其中所述数据获取模块包括:网页爬行模块,用于从耦合到网络的一个或多个网站中获取包含非结构化数据的网页。

3.根据权利要求2所述的系统,其中所述网页爬行模块包括专用爬行器,所述专用爬行器适合从特定网站中获取具有描述企业的事实的网页页面。

4.根据权利要求1所述的系统,其中所述数据抽取模块分析所述电子文档,以识别描述关于所述企业的事实的文档的部分。

5.根据权利要求1所述的系统,其中所述抽取的非结构化数据包含键-值对,所述键-值对描述关于所述企业的事实,并且所述数据解析模块包括:键标准化模块,用于将所述抽取的数据中包含的描述关于所述企业的数据类型的键进行标准化。

6.根据权利要求5所述的系统,其中所述键标准化模块将所述键标准化为从包含以下内容的集合中选择的键类型:名称、地址、电话号码、营业时间、预订方式、可达性、接受的支付方式、停车、提供的服务和提供的品牌。

7.根据权利要求1所述的系统,其中所述抽取的非结构化数据包含键-值对,所述键-值对描述关于所述企业的事实,并且所述数据解析模块包括:值标准化模块,用于将所述抽取的数据中包含的描述所述企业的值进行标准化。

8.根据权利要求7所述的系统,其中所述值标准化模块使用营业时间解析器以将描述企业营业时间的非结构化数据标准化。

9.根据权利要求7所述的系统,其中所述值标准化模块将所述值标准化为从包含以下内容的集合中选择的值类型:名称、地址、电话号码、营业时间、预订方式、可达性、接受的支付方式、停车、提供的服务和提供的品牌。

10.根据权利要求1所述的系统,其中所述数据解析模块创建描述多个不同企业的多个事实的结构化表示,进一步包括:数据集群模块,用于将所述事实的结构化表示与所述事实相关的企业相关联。

11.根据权利要求1所述的系统,其中所述事实比较模块响应于所述置信度而丢弃一组事实。

12.根据权利要求1所述的系统,其中所述事实比较模块基于描述所述事实的一个或多个标准,确定所述事实的所述结构化表示的权重。

13.根据权利要求1所述的系统,其中所述事实比较模块根据包括所述冲突事实的描述的所述电子文档的所述源的数目,来确定所述置信度。

14.根据权利要求1所述的系统,其中所述事实比较模块根据包括所述冲突事实的描述的所述电子文档的所述源的可信程度,来确定所述置信度。

15.根据权利要求1所述的系统,其中所述事实呈现模块基于所述事实具有所述冲突事实准确的低置信度,而显示所述冲突事实的属性;以及所述事实呈现模块基于所述事实具有所述冲突事实准确的高置信度,而不显示所述冲突事实的属性。

16.一种用于生成结构化数据的方法,包括:

从两个或者更多源接收两个或者更多电子文档,所述电子文档包含描述关于所述企业的事实的非结构化数据,其中至少两个所述电子文档包括描述关于所述企业的冲突事实的非结构化数据;

从所述两个或者更多电子文档中抽取描述关于所述企业的事实的非结构化数据,所提取的非结构化数据包括描述关于所述企业的所述冲突事实的所述非结构化数据;

创建由所述非结构化数据描述的事实的结构化表示,包括所述冲突事实的结构化表示,其中所述结构化表示以标准化格式来表示所述事实;

对所述冲突事实的所述结构化表示进行比较,以及根据包括所述冲突事实的描述的所述电子文档的所述源来确定置信度,所述置信度指示所述冲突事实准确的可能性;以及根据所述置信度来确定所述冲突事实对终端用户的显示,其中基于所述置信度来确定是否显示所述冲突事实的属性。

17.根据权利要求16所述的方法,进一步包括:

从耦合到网络的一个或多个网站中获取包含非结构化数据的网页页面。

18.根据权利要求16所述的方法,其中所述抽取包括:

分析所述电子文档,以识别描述关于所述企业的事实的文档的部分。

19.根据权利要求16所述的方法,其中所述抽取的非结构化数据包含键-值对,所述键-值对描述关于所述企业的事实,并且创建结构化表示包括:将所述抽取数据中包含的描述关于所述企业的数据类型的键标准化。

20.根据权利要求19所述的方法,其中将所述键标准化为从包含以下内容的集合中选择的键类型:名称、地址、电话号码、营业时间、预订方式、可达性、接受的支付方式、停车、提供的服务和提供的品牌。

21.根据权利要求16所述的方法,其中所述抽取的非结构化数据包含键-值对,所述键-值对描述关于企业的事实、并且创建结构化表示包括:将在所述抽取的数据中包含的描述所述企业的值标准化。

22.根据权利要求21所述的方法,其中所述标准化包括:

使用营业时间解析器来解析所述非结构化数据,以便创建描述企业营业时间的结构化数据。

23.根据权利要求21所述的方法,其中将所述值标准化为从包含以下内容的集合中选择的值类型:名称、地址、电话号码、营业时间、预订方式、可达性、接受的支付方式、停车、提供的服务和提供的品牌。

24.根据权利要求16所述的方法,其中创建由所述非结构化数据描述的事实的结构化表示包括创建描述多个不同企业的多个事实的结构化表示,所述方法进一步包括:将所述事实的结构化表示与所述事实相关的企业进行关联。

25.一种用于生成结构化数据的设备,包括:

数据获取装置,用于从两个或者更多源接收两个或者更多电子文档,所述电子文档包含描述关于企业的事实的非结构化数据,其中至少两个所述电子文档包括描述关于所述企业的冲突事实的非结构化数据;

数据抽取装置,用于从所述两个或者更多电子文档中抽取描述关于所述企业的事实的非结构化数据,所提取的非结构化数据包括描述关于所述企业的所述冲突事实的所述非结构化数据;

数据解析装置,用于接收所述抽取的非结构化数据以及创建由所述非结构化数据描述的事实的结构化表示,包括所述冲突事实的结构化表示,其中所述结构化表示以标准化格式来表示所述事实;

事实比较装置,用于对所述冲突事实的所述结构化表示进行比较,以及根据包括所述冲突事实的描述的所述电子文档的所述源来确定置信度,所述置信度指示所述冲突事实准确的可能性;以及事实呈现装置,用于根据所述置信度来确定所述冲突事实对终端用户的显示,其中所述事实呈现装置基于所述置信度来确定是否显示所述冲突事实的属性。

26.根据权利要求25所述的设备,其中所述数据获取装置包括:网页爬行装置,用于从耦合到网络的一个或多个网站中获取包含非结构化数据的网页。

27.根据权利要求26所述的设备,其中所述网页爬行装置包括专用爬行器,所述专用爬行器适合从特定网站中获取具有描述企业的事实的网页页面。

28.根据权利要求25所述的设备,其中所述数据抽取装置分析所述电子文档,以识别描述关于所述企业的事实的文档的部分。

29.根据权利要求25所述的设备,其中所述抽取的非结构化数据包含键-值对,所述键-值对描述关于所述企业的事实,并且所述数据解析装置包括:键标准化装置,用于将所述抽取的数据中包含的描述关于所述企业的数据类型的键进行标准化。

30.根据权利要求29所述的设备,其中所述键标准化装置将所述键标准化为从包含以下内容的集合中选择的键类型:名称、地址、电话号码、营业时间、预订方式、可达性、接受的支付方式、停车、提供的服务和提供的品牌。

31.根据权利要求25所述的设备,其中所述抽取的非结构化数据包含键-值对,所述键-值对描述关于所述企业的事实,并且所述数据解析装置包括:值标准化装置,用于将所述抽取的数据中包含的描述所述企业的值进行标准化。

32.根据权利要求31所述的设备,其中所述值标准化装置使用营业时间解析器以将描述企业营业时间的非结构化数据标准化。

33.根据权利要求31所述的设备,其中所述值标准化装置将所述值标准化为从包含以下内容的集合中选择的值类型:名称、地址、电话号码、营业时间、预订方式、可达性、接受的支付方式、停车、提供的服务和提供的品牌。

34.根据权利要求25所述的设备,其中所述数据解析装置创建描述多个不同企业的多个事实的结构化表示,进一步包括:数据集群装置,用于将所述事实的结构化表示与所述事实相关的企业相关联。

说明书 :

生成结构化信息

[0001] 相关申请的交叉引用
[0002] 本申请要求于2005年3月2日提交的美国临时申请No.60/658,214、以及2006年3月1日提交的名称为“生成结构化信息”的美国实用专利申请(申请号仍然未知)的优先权,在此通过参考将其引入。

技术领域

[0003] 本发明通常涉及从网络中抽取信息,并且尤其涉及从网络上的电子文档构建结构化信息的集合。

背景技术

[0004] 很难找到因特网或者其他网络上的信息。搜索引擎允许用户定位具有特定特征的内容。然而,在某些情况下,因特网上可获得的极大量信息削弱了搜索引擎的效力。例如,使用例如“汤姆的餐馆”的普通名称来搜索餐馆的人将接收到大量匹配的结果,通过这些结果,这个人肯定对找到正确的餐馆感到费力。
[0005] 对于“太多信息”问题的一个补救方式是在较小的信息集合上进行搜索。搜索引擎可以允许个人搜索对于特定城市或者其他地理区域的专用目录。那样,搜索纽约(NY)的“汤姆的餐馆”的个人可以指定将搜索限制为仅位于纽约市的餐馆。结果,很可能存在较少的搜索结果,并且对于搜索者来说,更加容易找到正确的结果。而且,本地目录可以提供附加的特征,例如提供显示餐馆位置的地图。
[0006] 构建具有强大功能性的目录是复杂的过程。获得特定类型的信息相对容易,例如一个城市内的餐馆和其他企业的名称、地址和电话号码。电话公司和其他数据提供商经常出售这类信息。然而,为了有效性,目录应该包括附加信息,不能从标准信息提供商获得例如营业时间、预定方式,支付选项和是否可以停车的附加信息。理想地,目录将以结构化格式保存此信息,该结构化格式支持复杂的查询,例如“查找星期二午夜后开门的餐馆”以及“显示代客泊车且接受预订的餐馆”。由于难以收集和表示这种信息,还没有创建此类目录。
[0007] 经常地,在因特网上可以获得构建这种目录所需的信息。餐馆可能拥有自己的网页页面,该网页页面提供例如它的营业时间和预定方式的重要细节。类似地,可能存在包括餐馆条目的一个或多个现存的网页目录。然而通常地,此信息处于非结构化或结构化的不合适的方式。例如,餐馆的网页页面可通过使用短语“周一关门”来描述它的营业时间,而现存的本地目录将相同的信息表示为“开门:周二至周日(Open:TWTHFS)”。这种以多种方式表达相同信息使得难以构建统一的目录,该统一的目录具有从多个不同的源获取的结构化信息。
[0008] 因此,在现有技术中需要一种方式来针对目录构建结构化的、或至少部分结构化的信息集合。

发明内容

[0009] 通过一种用于生成结构化数据的系统、方法和计算机程序产品来满足上述需要。在一个实施例中,该系统包括数据获取模块,用于接收电子文档,该电子文档包含描述关于企业的事实的非结构化数据。该系统还包括数据抽取模块,用于从电子文档中抽取描述关于企业事实的非结构化数据。并且,该系统包括数据解析模块,用于接收抽取的非结构化数据并且创建由非结构化数据描述的事实的结构化表示。

附图说明

[0010] 图1是根据本发明一个实施例的用于从多个非结构化和/或结构化源中生成结构化信息的计算环境的高级框图。
[0011] 图2是根据一个实施例的示出用作图1环境中所示一个实体的计算机的高级框图。
[0012] 图3是示出了根据一个实施例的结构生成引擎内的模块的高级框图。
[0013] 图4是示出了根据一个实施例的由值标准化模块用以标准化营业时间所执行步骤的流程图。
[0014] 图5是示出了根据一个实施例的由结构生成引擎所执行步骤的流程图。
[0015] 仅出于说明的目的,附图描述了本发明的实施例。本领域的技术人员将从以下描述中容易地认识到,在不脱离在此所述的本发明的原理的情况下,可以使用在此示出的结构和方法的可替换实施例。

具体实施方式

[0016] I.概述
[0017] 图1是根据本发明一个实施例的计算环境100的高级框图,该计算环境100用于从多个非结构化和/或结构化源中生成结构化信息。图1示出了耦合到结构化信息数据库112的结构生成引擎110。结构生成引擎110连接到网络114,网络114还连接到商业数据提供商116、企业网站118和目录网站120。在某些实施例中,不存在后面这三个实体中的一个或多个。
[0018] 在最高级别上,结构生成引擎110从网络114上的多个源收集数据。该数据是非结构化的或结构化的。结构生成引擎110解析数据以创建结构化事实。结构化信息数据库112存储结构化事实。作为搜索查询和/或响应于另一针对信息请求的结果,结构化事实经由网络114呈现为本地目录中的条目。
[0019] 结构化数据是已经组织过的数据,用以允许将数据的键(即,上下文)与内容进行标识和分离。计算机或其他机器可以理解结构化数据。例如,考虑以结构“TN:xxx-xxx-xxxx”组织的电话号码,其中“x”表示数字。遇到以此格式组织的数据(例如“TN:
212-864-6137”)的计算机实现的处理可以确定该数据的键是电话号码,并且该号码的值是
212-864-6137。非结构化数据是没有以特定格式组织的数据,并且其中难以确定上下文和内容。半结构化数据是部分组织过的数据。
[0020] 结构生成引擎110是从网络114上的多个源收集、并且将数据结构化的硬件和/或软件设备。引擎110包括用于经由网络114与多个数据源接口连接的功能性。例如,引擎110包括用于从一个或多个商业数据提供商116接收数据的接口。同样地,引擎110可以从例如企业网站118和目录网站120的网站获取网页页面和/或其他电子文档。引擎110分析所接收数据以标识由键-值对形成的事实。引擎110标准化事实的键和值以产生结构化数据。
[0021] 在一个实施例中,结构生成引擎110接收关于对例如城市的特定地理区域是本地的企业的数据。“企业”是商业机构、学校、政府机关、非盈利性组织和/或其他类似实体。在一个实施例中,企业是餐馆,并且由结构生成引擎110接收的数据涉及餐馆的方面,例如它的营业时间、预订方式和接受的支付方法。然而,本领域技术人员应该理解,可以使用结构生成引擎110将餐馆之外的企业的信息结构化。另外,不需要将结构生成引擎110接收的数据限制于特定地理区域。
[0022] 结构化事实数据库112存储由结构生成引擎110生成的和/或来自于其他源的结构化事实。在一个实施例中,结构化信息数据库112是关系数据库,该关系数据库支持以结构化查询语言(SQL)进行的查询。其他实施例利用不同类型的数据库。
[0023] 在一个实施例中,利用数据库112中关于企业的结构化事实来支持用于地理区域的本地目录。使得本地目录中的事实在网络114上的网站上变得可用。例如使用计算机、蜂窝电话或其他网络连接设备的个人的终端用户,可以访问目录并且请求关于企业的事实。例如,终端用户可以发布针对特定餐馆的查询。作为响应,本地目录返回描述关于该餐馆事实的一个或多个网页页面,例如它的名称、电话号码、地址、营业时间、预订方式、停车可用性、可接受支付选项等。在某些实施例中,该终端用户可以发布其他类型的查询,例如针对特定地点半径内的所有餐馆、接受预订的所有餐馆和/或10PM后开门的所有餐馆的查询。
这种本地目录的一个例子是从加州山景城的GOOGLE公司可获得的GOOGLE本地(GOOGLE LOCAL)服务。
[0024] 在图1中示出的商业数据提供商116表示一个或多个商业数据提供商,该一个或多个商业数据提供商在某些实施例中向结构生成引擎110提供数据。商业数据提供商的例子包括例如电话公司的电信提供商、例如报纸公司的媒体提供商和例如D&B公司的商业目录提供商。在某些实施例中,商业数据提供商116提供描述关于一个区域(例如,企业的名称、地址和电话号码)内企业基本信息的事实的集合。这些数据通常是结构化的。商业数据提供商116可以经由网络114和/或通过另一通信信道向结构生成引擎110提供数据。
[0025] 图1示出的企业网站118表示由企业操作的或代表企业利益操作的多个网站。企业网站118的一个例子是提供关于特定餐馆信息的网络114上的站点。在通常的情况中,站点提供餐馆的图片和关于餐馆的信息,例如它的名称、地址、电话号码、营业时间、可接受支付方法和预订方式。另外,站点可以包括像示例菜单和驾驶方向的其他信息。
[0026] 网络上的数千或数百万的企业网站118表示结构生成引擎110可以访问的可能的数据源。企业网站118上的数据经常是非结构化的和/或以多种不同格式结构化的。例如,一个网站118可能将餐馆的营业时间指定为“开门:周一至周五9点-5点,周六直到6点”,然而另一餐馆将该时间指定为“开门:6点-2点,周日和节假日关门”。这些数据缺乏定义的结构并且计算机难以解译。
[0027] 目录网站120表示提供关于多个企业120信息的网络114上一个或多个站点。在一个实施例中,目录网站120是地理区域中的餐馆原有目录。目录网站120包括提供关于餐馆的结构化、半结构化和/或非结构化信息的网页。经常地,页面是至少部分结构化的。例如,目录网站120中针对餐馆的每个网页可以在“是”或“否”之后包含文本“预订:”以指示餐馆是否接受预订。然而,页面上的某些信息可能不是结构化的。而且,不同的目录网站120利用不同的结构。
[0028] 网络114表示结构生成引擎110和数据源116、118、120之间的通信路径。在一个实施例中,网络114是因特网。网络114也可以利用专用或私有的通信链路,该通信链路不必是因特网的一部分。在一个实施例中,网络114承载使用标准通信技术和/或协议的业务。因此,网络114可以包括使用例如802.11、综合业务数字网络(ISDN)、数字用户线(DSL)、异步传输模式(ATM)等技术的链路。类似地,网络114上的业务使用的网络协议可以包括多协议标记交换(MPLS)、传输控制协议/因特网协议(TCP/IP)、超文本传输协议(HTTP)、简单邮件传输协议(SMTP)、文件传输协议(FTP)等。可以使用包括超文本标记语言(HTML)、可扩展标记语言(XML)等的技术和/或格式表示网络114上的数据交换。另外,可以使用传统加密技术例如安全套接字层(SSL)、安全HTTP和/或虚拟私有网络(VPN)加密所有或某些链路。在另一个实施例中,除了上述技术以外、或代替上述技术,实体可以使用定制的和/或专用的数据通信技术。
[0029] II.系统架构
[0030] 图2是根据一个实施例的高级框图,示出了用作图1的环境100中所示一个实体的计算机200的功能性视图。示出的是耦合到总线204的至少一个处理器202。同样耦合到总线204的是存储器206、存储设备208、键盘210、图形适配器212、指示设备214和网络适配器216。显示器218耦合到图形适配器212。
[0031] 处理器202可以是任何通用处理器,例如INTEL x86、SUNMICROSYSTEMS SPARC或POWERPC兼容CPU。在一个实施例中,存储设备208是硬盘驱动器但是也可以是能够存储数据的任何其他设备,例如可写压缩盘(CD)或者DVD,或者固态存储设备。存储器206可以是例如固件、只读存储器(ROM)、非易失性随机访问存储器(NVRAM)和/或RAM,并且保存了由处理器202使用的指令和数据。指示设备214可以是鼠标、跟踪球或其他类型的指示设备,并且与键盘210结合使用来将数据输入计算机系统200。图形适配器212在显示器210上显示图像和其他信息。网络适配器216将计算机200耦合到网络114。在很多实例中,计算机不具有图2中示出的一个或多个元件,例如键盘210、指示设备214、图形适配器212和/或显示器218。
[0032] 如在现有技术公知的,计算机200适合执行计算机程序模块。如在此使用的,术语“模块”指用于提供特定功能的计算机程序逻辑和/或数据。可以以硬件、固件、和/或软件实现模块。在一个实施例中,将模块存储在存储设备208上,装载到存储器206中,并且由处理器202执行。
[0033] 取决于实施例和图1的实体所需的处理功率,实体利用的计算机200的类型可以有所变化。可以由在单个计算机200上运行的网页服务器来提供企业网站118。相反,可以由在更强大的计算机和/或一个或多个协力操作的刀片服务器上运行的网页服务器来提供目录网站120。同样地,在一个实施例中,结构生成引擎110包括一个或多个模块以提供在此描述的功能,该一个或多个模块在一个或多个刀片服务器或协力工作的其他类型的计算机上执行。
[0034] 图3是示出了根据一个实施例的结构生成引擎110内的模块的高级框图。其他实施例具有图中所示那些模块以外的附加的和/或不同的模块。另外,可以与在此所述不同的方式将功能分散到模块之中。而且,由结构生成引擎110以外的实体可以提供某些功能。
[0035] 数据获取模块310获取关于目录中将包括的企业的数据。在一个实施例中,数据获取模块310从商业数据提供商116接收关于企业的数据。例如,通过从数据提供商116操作的网站获取数据、接收使用XML或者其他格式指定数据的数据馈送、从DVD或其他计算机可读介质装载数据等来接收这些数据。如上所述,将来自于商业数据提供商116的数据结构化,并且提供关于企业基本事实的集合,该基本事实包括它们的名称、地址和/或电话号码。
[0036] 在一个实施例中,数据获取模块310包括用于访问由企业118和/或目录网站120上的网页页面提供的数据的网页爬行模块312。网页爬行器(crawler)是访问网站并通过跟随其链接遍历站点的自动程序。网页爬行模块312爬过企业118和目录网站120,并且在一个实施例中,存储它遇到的网页页面以使能后续的分析。根据实施例,基于从商业数据提供商116或其他源接收的数据来手工指定和/或由程序选择网页爬行模块312爬过的站点。
[0037] 在一个实施例中,网页爬行模块312包括通用爬行器和一个或多个专用爬行器。利用通用爬行器来爬过具有未知格式的网站。经常在特别基础上创建企业网站118,并且每个站点的格式可能完全唯一。在一个实施例中,优化通用爬行器的行为用于这种具有多种不同格式的特别网站。
[0038] 利用专用爬行器来爬过预先已知格式的目录网站120和/或企业网站118。例如,假设原有目录网站120具有在已知基址处的网页页面集合,该网页页面描述了一个地理区域内的餐馆。将专用爬行器手工编码以访问网站并且仅获取在该地址处的网页。可以将专用爬行器编码以忽略页面上例如具有如下特征的特定链接,所述特征在于这些链接很可能是广告、或者不太可能提供关于正在收集数据的企业信息,其中正在针对该企业收集数据。类似地,为了仅访问可能包含关于企业的数据的页面,可以将专用爬行器编码以选择特定链接。
[0039] 在某些实施例中,数据获取模块310使用其他技术来获取描述企业的数据。在一个实施例中,企业将预结构化的事实文本直接发送到数据获取模块310,这类似于模块如何从商业数据提供商116接收数据馈送。在另一个实施例中,数据获取模块310测试在数据仓库中找到的未分类的网页页面,例如在从连接到网络114的网站中获取的内容的高速缓存中找到的网页页面。
[0040] 数据抽取模块314从由网页爬行模块312存储的网页页面和/或其他电子文档中抽取关于企业的数据。一般而言,抽取的数据描述终端用户很可能在企业目录中找到有益的企业的方面。在一个实施例中,抽取的数据包括企业的:
[0041] 名称、地址和/或电话号码;
[0042] 营业时间(即,何时开门);
[0043] 预订方式;
[0044] 可达性(即,残疾人通道);
[0045] 接收的支付方式;
[0046] 停车(即,可用的停车形式);
[0047] 提供的服务;以及
[0048] 提供的品牌。
[0049] 其他实施例抽取不同和/或附加的数据。
[0050] 在一个实施例中,数据抽取模块314从很可能包含描述企业的键-值对的网页页面文本字符串中进行抽取。使用通用和/或专用抽取器抽取数据。在一个实施例中,通用和专用抽取器两者由具有手工构建的正则表达式的解析器组成。在其他实施例中,使用自动包装器归纳技术创建某些或所有抽取器。
[0051] 优化专用抽取器以从具有已知格式的网页页面中抽取信息。例如,假设已知来自于特定目录网站120的关于餐馆的所有网页页面在页面的特定位置包括后面跟随“是”或者“否”的短语“残疾人可达性:”。专用抽取器包含定位网页页面正确部分并且抽取“残疾人可达性”字符串的正则表达式。在一个实施例中,专用抽取器适合具有两列表格的网页页面。在这种表格中,一列通常包含例如“停车”或“特性”的键,而另一列包含用于该键的值。专用抽取器从该表格中抽取键-值对。通用抽取器抽取相同类型的信息,但是将通用抽取器设计为从具有非特定格式的网页页面中抽取数据。
[0052] 数据解析模块316将包含键-值对的抽取的字符串转换为标准化的事实表示。为了理解数据解析模块316的功能,考虑两个不同的网页页面(以及抽取的字符串)如何能够表示企业对于残疾人是否可以进入。假设一个字符串是“轮椅可进入:是”,而另一个字符串是“残疾人通道:Y”。两个字符串都指示该企业对于残疾人是可进入的,但是键(即,“轮椅可进入”和“残疾人通道”)以及值(即,“是”和“Y”)两者都不同。同样地,考虑字符串“时间:周一至周五9点-5点”和“平日从9:00am至5:00pm开门”。后面这两个字符串使用不同的键-值对来表示相同的营业时间。数据解析模块316在可能时转换键和值两者,以便以相同的方式表示来自于不同源的数据。在一个实施例中,将标准化的事实表示存储在结构化数据数据库112中。
[0053] 键标准化模块318将所抽取的字符串中的键标准化。通常,键标准化是将字符串的数据分类到已知数据类型中的过程,例如,确定字符串是否包含时间数据、停车数据或者可达性数据。在一个实施例中,键标准化模块318使用执行匹配于标识该键的正则表达式的解析器。例如,键标准化模块318确定字符串是否包含词“开门”、“关门”、“时间”、“每日”和/或表示该字符串是描述营业时间的其他词。在另一个实施例中,键标准化模块318确定字符串是否包含词“停车”、“代客泊车(valet)”、“区”和/或表示字符串是描述在该企业处是否可以停车的其他词。如果键标准化模块318在所抽取的字符串中识别出一个键,则它将该字符串与所述键的标准化表示进行关联。
[0054] 值标准化模块320将所抽取的字符串中的值标准化。值标准化是创建字符串中所提供值的机器可理解表示的过程。在一个实施例中,值标准化模块320使用解析器,该解析器执行正则表达式匹配以解译所述值。将特定类型的值相对直接地标准化。例如,“预订方式”和“可达性”键通常具有“是”或“否”的值。用于这两种类型值的解析器通过确定该字符串是否包含词“是”、“否”和/或等效形式来执行标准化。然而,以各种不同的方式表示例如营业时间的某些值。因此,用于这些类型值的解析器使用更为复杂的逻辑。
[0055] 图4是示出了根据一个实施例的由值标准化模块320标准化营业时间值所执行步骤的流程图。其他实施例执行不同的和/或附加步骤。而且,其他实施例以不同顺序执行步骤。尽管图4的步骤旨在标准化营业时间,但是本领域技术人员应该认识到,可以使用类似的步骤来标准化其他类型的值。
[0056] 为了示例目的,假设企业使用字符串“开门周一至周三9点至5点,周四至7点”来描述其营业时间。为了创建营业时间的标准化表示,值标准化模块320解析字符串以对字符串内的符号进行分类410。在一个实施例中,将符号分类为时间、日期、分隔符、开门、关门或忽略。使用正则表达式来执行这些分类。在一个实施例中,使用正则表达式的这些描述和分类的意义来检测它们,如下:
[0057] “时间”(T)是描述企业营业时间的时间值。通过检测出现子串的正则表达式来识别字符串中的时间,该子串例如“##:##(AM|PM)”(其中“#”是数字并且(AM|PM)是可选的子成分)、“#o’clock”、“正午”和“####小时”。
[0058] “日期”(D)是描述企业开门或关门的日期的值。通过检测出现表示一周日期的子串的正则表达式来识别字符串中的日期,该子串例如“M”、“Mon”、“周一”(以及针对其他日期的等效形式)、“周末”和“每日”。
[0059] “分隔符(-)”是在字符串中分隔其他符号的符号。通过检测表示出现分隔符子串的正则表达式来识别字符串中的分隔符,该子串例如“-”(连字符)、“到”、“直到”、“直至”和“至”。
[0060] “开门/关门”(O/C)是在字符串中是修饰日期和/或时间的值。通过在字符串中检测出现“开门”、“关门”和/或类似子串的正则表达式来识别这些值。
[0061] “忽略(X)”是解析字符串时忽略的值。使用检测空格、逗号、比如“和”之类的词等的正则表达式来从字符串中移除忽略。
[0062] 在分类410之后,将字符串“开门M-W9到5,TH到7”表示为“OD-DT-TD-T”。值标准化模块320接着将“D”序列分解412为单个表示该序列中所有日期的“D”。称此步骤为“D-分解”。在一个实施例中,由具有描述开门日期的比特的向量表示所分解的D。例如,如果向量开始于周日,则将周一至周三表示为“0111000”。在此步骤之后,示例字符串表示为“ODT-TD-T”。
[0063] 在D-分解之后,如果需要,则值标准化模块320将时间符号插入414到表示中。称为“T-插入”的此步骤极少发生并且此步骤处理其中营业时间表述缺少边界值的特殊情况。例如T-插入处理其中将营业时间表示为“周四至7点”而不是“周四9点至7点”的情况。
在一个实施例中,值标准化模块320针对“-T”的出现测试字符串的表示不是“T”居先的,例如(D-T)。如果发现这样的“-T”,则值标准化模块320立即标识居先的“T-”(如果存在一个),并且将此“T”插入表示之中。因此,将“ODT-TD-T”转换为“ODT-TDT-T”,其等价于“开门周一至周三9点至5点,周四9点至7点”。
[0064] 接着,值标准化模块320解译416表示中的时间。表示中单个的“T”可以具有三个可能的解释:上午、下午或次日的上午。换句话说,“1”可以指1AM、1PM或次日的1AM。在一个实施例中,值标准化模块320使用解析器标识“DT-T”序列。这些解析器使用逻辑来解译这些序列中的时间。该逻辑是基于多数企业如何表示它们的营业时间。例如从8点到11点的开始时间趋向于是AM,在5点-7点之间的开始时间趋向于是PM,并且在PM开始时间之后但具有更小数字的结束时间趋向于是次日的AM。因此,将示例字符串解译为“开门周一至周三9AM至5PM,周四9AM至7PM”。
[0065] 当将这些步骤应用于示例字符串之后,值标准化模块320能够解译字符串并且以机器可理解的标准化表示来表示418营业时间。在一个实施例中,标准化表示是描述一周中每天的开门营业时间的向量。
[0066] 返回图3,由数据解析模块316执行的标准化通常落入以下三个类别之一:完全标准化、仅有键标准化和非标准化。在完全标准化中,数据解析模块316标准化在所抽取字符串中包含的键和值两者。完全标准化是最好的结果,因为它允许机器完全理解由键-值对表示的事实,并且允许比较来自于多个源的事实。在一个实施例中,针对“营业时间”、“预订方式”和“可达性”提供数据的字符串经常落入此类别。
[0067] 在“仅有键标准化”中,数据解析模块316可以理解在抽取字符串中包含的数据类型,但是不能产生机器可理解的值的表示。在一个实施例中,提供“接受的支付方式”和“停车”数据的字符串经常落入此类别中,因为很难解析相应的值。在某些情况中,这是过渡状态。一旦考虑了足够多的初始模糊(即,不能理解)的值,则可以构建解析器来将值标准化。
[0068] 在“非标准化”中,数据解析模块316不能将键和值标准化。在一个实施例中,不能标准化的所抽取字符串保持其被抽取的形式。然后,所抽取字符串按原样出现在目录中以便允许对其中所包含事实的人类解释。
[0069] 在某些实施例中,数据解析模块316使用键318和/或值320标准化模块的功能来识别事实并且理解它们。如果数据解析模块316从网站或其他源接收到文本的片断,但是缺少关于文本意义的信息,则它可以从标准化模块318、320向文本应用解析器,并且确定解析器是否产生有效结果。然后,数据解析模块316可以基于解析器结果来将文本分类。例如,如果将营业时间解析器应用至文本片断并且产生有效结果,则数据解析模块316识别出包含营业时间信息的文本,并且将营业时间键与该文本相关联。
[0070] 数据集群模块322将事实(标准化或非标准化)与它们相关的企业相关联。在一个实施例中,通过将从企业118和/或目录120网站中抽取的事实的集合与从商业数据提供商116接收的企业数据进行关联来执行此集群处理。集群处理的结果是将与相同企业相关的事实聚合在一起。
[0071] 为了理解数据集群模块322的操作,考虑以下五个事实的集合:
[0072] 1.圆桌比萨
[0073] 650-961-0361
[0074] 570N Shoreline Blvd,Mountain View,CA(570N海岸大街,山景,CA)
[0075] 每日开门11am-10pm
[0076] 2.山景圆桌比萨
[0077] 650-961-0361
[0078] 570N Shoreline Blvd,Mountain View,CA94043(570N海岸大街,山景CA94043)[0079] 3.Safeway食品&药品
[0080] 650-961-4868
[0081] 570Shoreline Blvd,Mountain View,CA94043(570N海岸大街,山景CA94043)[0082] 24小时开门
[0083] 4.圆桌比萨
[0084] 650-961-0361
[0085] 399 lst St,Los Altos CA94022(399第一街,Los Altos CA94022)
[0086] 可外送
[0087] 5.圆桌
[0088] 650-384-7463
[0089] 570 Shoreline Blvd,Mountain View,CA94043(570海岸大街,山景CA94043)[0090] 假设从五个不同的源获得这些事实。例如,从商业数据提供商116接收的数据获得#2的事实集合,而从企业118和/或目录120网站获得其他四个事实集合。
[0091] 从这些事实中,人类观察者可能认为第一、第二和第五事实集合可能描述了相同的企业(山景的圆桌比萨)。关于街道的地址,事实有轻微的不一致,但更可能是事实源之一具有错误的号码,而不是在相同的街区上存在两个相同品牌的比萨餐馆。还存在某些关于电话号码的不一致;并且,可能数据源具有错误的号码,或者可能餐馆具有多个电话号码。第三事实集合显然描述了不同的企业——Safeway杂货店——与比萨餐馆具有相同的地址(可能在相同的沿路商业区中,这可能解释了关于圆桌地址的某些迷惑)。第四事实集合看起来像位于Los Altos的几英里之外的不同圆桌餐馆。数据集群模块322将类似的逻辑应用于列表来标识关于相同企业的事实集合,并且用来区分关于不同企业的事实集合。
[0092] 集群模块322通过接近度来对事实集合分组。在一个实施例中,集群模块322或另一个模块使用从地址和/或其他数据获得的纬度和经度来表示由事实描述的每个企业的位置。彼此相当接近的企业(给出或采用一个错误半径,例如,上述的560/570地址混淆)可能是相同的企业;相距非常远的企业(例如山景和Los Altos)几乎当然不是相同的。
[0093] 为了便于分组,集群模块322的一个实施例将世界划分成为“邻近区域”,其中邻近区域的大小是大约“错误半径”(在大多数情况下是两个城市街区;在密集市区中是接近的)。邻近区域重叠;最终可以将事实集合指定到若干邻近区域。允许此重叠,从而事实集合可以与接近的邻近区域的事实合并。
[0094] 集群模块322将邻近区域内的每个事实集合与邻近区域中的其他事实集合进行比较来确定事实是否与相同企业相关。在一个实施例中,集群模块322比较一对事实集合的名称、电话号码和位置,并且基于这些条目计算相似性得分。为了比较名称,集群模块基于由文集中频率所加权的共享词和二元语法来使用文本相似性度量标准。
[0095] 如果相似性得分超过阈值,则集群模块322将两个事实集合合并。在一个实施例中,为了处理其中事实集合很可能是不相关的特殊条件,集群模块322迫使特定的异常合并。集群模块322的一个实施例并不合并具有不同电话号码的两个事实集合,除非具有相同的名称。集群模块322对合并的事实集合指定一个“集群ID”,该集群ID用于标识用于以后处理的事实的组。因为邻近区域重叠,在多个邻近区域中,事实集合可能与其他事实的集合合并并且指定了集群ID。当发生这种情况时,具有合并到其中的最多事实集合的集群ID成为该企业的集群。
[0096] 在一个实施例中,事实比较模块324比较企业的集群事实以便建立事实的置信度。如上所述,当从不同的源获得事实时,某些事实一致而某些事实冲突。多个源支持的事实具有高置信度。例如,如果从多个源获得的事实关于企业的营业时间一致,则这些事实很可能是正确的,并且因此事实比较模块324对这些事实赋予高置信度。相反,如果来自于多个源的事实有所冲突,则事实比较模块324对这些事实赋予低置信度。在一个实施例中,不对部分和/或非标准化事实赋予置信度。
[0097] 在某些实施例中,事实比较模块324使用权重处理以在来自于特定源的冲突事实和/或一致事实之间进行区分。例如,权重处理可以对更新的事实赋予较大的权重,并且对不太新的冲突事实赋予较小的权重。另外,可以对来自更为可信的源的事实赋予比其他事实较大的权重。同样地,可以对比其他事实集合提供更多信息的事实集合内的事实赋予较大的权重。缺少置信度的部分标准化事实和/或非标准化事实可以具有基于该事实的源、相同集合内其他事实的数量和/或其他标准而赋予的权重。在一个实施例中,丢弃具有低置信度和/或权重的事实。
[0098] 如上所述,在一个实施例中,利用在结构化数据数据库112中存储的事实来向终端用户提供本地企业目录。在一个实施例中,结构生成引擎110包括事实呈现模块326,该事实呈现模块326指定目录应该如何呈现在结构化数据库112中存储的事实。在其他实施例中,事实呈现模块326位于不同的实体中,例如呈现用于目录的网页页面的模块。
[0099] 事实呈现模块326使用事实的置信度和/或权重以确定如何在目录中显示事实。通常,显示具有较大置信度和/或权重的事实,而不显示具有较低置信度和/或权重的事实。以带有或不带事实的源的属性的方式来示出显示的事实。在一个实施例中,以不带属性的方式来显示具有非常高置信度的事实。例如,以不带属性的方式来显示来自商业数据提供商116的名称、地址和电话事实。以带有属性的方式来显示具有较低置信度的其他事实,所述属性表示从何处获得事实的源。在一个实施例中,该属性包括链接到从中抽取事实的网页页面或其他电子文档的统一资源定位符(URL)。
[0100] 如果多个源提供相同的事实,则一个实施例仅显示具有最大权重的事实,并且将该事实归因于提供它的源。此技术在页面上留下了显示其他事实的空间而不是使用重复的事实充满该页面。例如,如果源A表示企业是“开门周一至周六8am-6pm”,而B仅表示该企业是“开门周一至周六”而没有时间信息,则事实呈现模块326从源A示出事实,因为它包含最多的信息(并且因此获得较大权重)。
[0101] 在一个实施例中,部分标准化或非标准化的事实按照原样显示并且带有属性。即,将描述事实的所抽取字符串连同该字符串的源的链接在网页页面上显示。此显示允许终端用户直接观察并且解译事实。
[0102] III.处理/示例
[0103] 图5是示出根据一个实施例的由结构生成引擎110所执行步骤的流程图。其他实施例以不同顺序执行此步骤和/或执行与图5所示步骤不同或附加的步骤。结构生成引擎110可以并发地执行多个图5步骤的实例和/或并行执行步骤。
[0104] 初始地,结构生成引擎110从一个或多个源获取510关于企业的数据。这些源可以包括商业数据提供商116、企业网站118、和/或目录网站120。结构生成引擎110从该数据中抽取描述事实的字符串。
[0105] 结构生成引擎110解析512抽取的字符串来以机器可理解的表示生成标准化事实。每个字符串包含健-值对。在某些情况下,引擎110可以将健和值两者标准化,在其他情况下,引擎仅将键标准化,并且此外在其他情况下,引擎不能将健或值标准化。
[0106] 结构生成引擎110对事实进行集群514。即,引擎110将每个事实与它相关的企业进行关联。结果,每个企业获得一个或多个事实的列表,其中的某些一致,而其中的某些冲突。引擎110比较516与企业关联的事实,并且在一个实施例中,对事实赋予置信度和/或权重。例如,对来自于多个源的一致事实赋予高置信度。
[0107] 就某点而言,将事实呈现518在该事实相关企业的网页页面或者其他电子文档上。网页页面可以是本地目录的部分和/或在另外的环境中提供。以不带有事实源的属性的方式来呈现某些事实,而以带有属性的方式呈现其他事实。而且,没有示出例如具有非常低的置信度和/或包含已经由另一事实已提供信息的某些事实。
[0108] 包括上面的描述以便说明优选实施例的操作,而这并不意味着限制本发明的范围。仅由下文的权利要求书限制本发明的范围。从上述讨论中,对于相关领域技术人员来说,仍然包含在本发明的精神和范围之中的许多变形是显而易见的。