专利名称:生成结构化信息的制作方法
技术领域:
本发明通常涉及从网络中抽取信息,并且尤其涉及从网络上的 电子文档构建结构化信息的集合。
背景技术:
很难找到因特网或者其他网络上的信息。搜索引擎允许用户定 位具有特定特征的内容。然而,在某些情况下,因特网上可获得的 极大量信息削弱了搜索引擎的效力。例如,使用例如"汤姆的餐馆" 的普通名称来搜索餐馆的人将接收到大量匹配的结果,通过这些结 果,这个人肯定对找到正确的餐馆感到费力。对于"太多信息,,问题的一个补救方式是在较小的信息集合上 进行搜索。搜索引擎可以允许个人搜索对于特定城市或者其他地理 区域的专用目录。那样,搜索纽约(NY)的"汤姆的餐馆,,的个人 可以指定将搜索限制为仅位于纽约市的餐馆。结果,很可能存在较 少的搜索结果,并且对于搜索者来说,更加容易找到正确的结果。 而且,本地目录可以提供附加的特征,例如提供显示餐馆位置的地 图。构建具有强大功能性的目录是复杂的过程。获得特定类型的信 息相对容易,例如一个城市内的餐馆和其他企业的名称、地址和电
话号码。电话公司和其他数据提供商经常出售这类信息。然而,为 了有效性,目录应该包括附加信息,不能从标准信息提供商获得例 如营业时间、预定方式,支付选项和是否可以停车的附加信息。理 想地,目录将以结构化格式保存此信息,该结构化格式支持复杂的 查询,例如"查找星期二午夜后开门的餐馆"以及"显示代客泊车 且接受预订的餐馆,,。由于难以收集和表示这种信息,还没有创建 此类目录。经常地,在因特网上可以获得构建这种目录所需的信息。餐馆 可能拥有自己的网页页面,该网页页面提供例如它的营业时间和预 定方式的重要细节。类似地,可能存在包括餐馆条目的一个或多个 现存的网页目录。然而通常地,此信息处于非结构化或结构化的不 合适的方式。例如,餐馆的网页页面可通过使用短语"周一关门" 来描述它的营业时间,而现存的本地目录将相同的信息表示为"开门周二至周日(Open: TWTHFS ),,。这种以多种方式表达相同信 息使得难以构建统一的目录,该统一的目录具有从多个不同的源获 取的结构化信息。因此,在现有技术中需要一种方式来针对目录构建结构化的、 或至少部分结构化的信息集合。发明内容通过 一 种用于生成结构化数据的系统、方法和计算机程序产品 来满足上述需要。在一个实施例中,该系统包括数据获取模块,用 于接收电子文档,该电子文档包含描述关于企业的事实的非结构化 数据。该系统还包括数据抽取模块,用于从电子文档中抽取描述关 于企业事实的非结构化数据。并且,该系统包括数据解析模块,用 于接收抽取的非结构化数据并且创建由非结构化数据描述的事实的 结构化表示。
图1是根据本发明一个实施例的用于从多个非结构化和/或结构 化源中生成结构化信息的计算环境的高级框图。图2是根据一个实施例的示出用作图1环境中所示一个实体的 计算机的高级框图。图3是示出了根据一个实施例的结构生成引擎内的模块的高级框图。图4是示出了根据一个实施例的由值标准化模块用以标准化营 业时间所执行步骤的流程图。图5是示出了根据一个实施例的由结构生成引擎所执行步骤的流程图。仅出于说明的目的,附图描述了本发明的实施例。本领域的^支 术人员将从以下描述中容易地认识到,在不脱离在此所述的本发明 的原理的情况下,可以使用在此示出的结构和方法的可替换实施例。
具体实施方式
I.概述图1是根据本发明一个实施例的计算环境100的高级框图,该 计算环境100用于从多个非结构化和/或结构化源中生成结构化信 息。图1示出了耦合到结构化信息数据库112的结构生成引擎110。 结构生成引擎110连接到网络114,网络114还连接到商业数据提供 商116、企业网站118和目录网站120。在某些实施例中,不存在后 面这三个实体中的一个或多个。在最高级别上,结构生成引擎110从网络114上的多个源收集 数据。该数据是非结构化的或结构化的。结构生成引擎110解析数 据以创建结构化事实。结构化信息数据库112存储结构化事实。作 为搜索查询和/或响应于另 一 针对信息请求的结果,结构化事实经由 网络114呈现为本地目录中的条目。结构化数据是已经组织过的数据,用以允许将数据的键(即, 上下文)与内容进行标识和分离。计算机或其他机器可以理解结构
化数据。例如,考虑以结构"TN: xxx-xxx-xxxx,,组织的电话号码, 其中"x"表示数字。遇到以此格式组织的数据(例如"TN: 212-864-61 37")的计算机实现的处理可以确定该数据的键是电话 号码,并且该号码的值是212-864-6137。非结构化数据是没有以特 定格式组织的数据,并且其中难以确定上下文和内容。半结构化数 据是部分组织过的数据。结构生成引擎110是从网络114上的多个源收集、并且将数据 结构化的硬件和/或软件设备。引擎110包括用于经由网络114与多 个数据源接口连接的功能性。例如,引擎110包括用于从一个或多 个商业数据提供商116接收数据的接口 。同样地,引擎110可以从 例如企业网站118和目录网站120的网站获取网页页面和/或其他电 子文档。引擎110分析所接收数据以标识由键-值对形成的事实。引 擎110标准化事实的键和值以产生结构化数据。在一个实施例中,结构生成引擎110接收关于对例如城市的特 定地理区域是本地的企业的数据。"企业"是商业机构、学校、政 府机关、非盈利性组织和/或其他类似实体。在一个实施例中,企业 是餐馆,并且由结构生成引擎110接收的数据涉及餐馆的方面,例 如它的营业时间、预订方式和4妻受的支付方法。然而,本领域4支术 人员应该理解,可以使用结构生成引擎110将餐馆之外的企业的信 息结构化。另外,不需要将结构生成引擎110接收的数据限制于特 定地理区域。结构化事实数据库112存储由结构生成引擎110生成的和/或来 自于其他源的结构化事实。在一个实施例中,结构化信息数据库112 是关系数据库,该关系数据库支持以结构化查询语言(SQL)进行的 查询。其他实施例利用不同类型的数据库。在一个实施例中,利用数据库112中关于企业的结构化事实来 支持用于地理区域的本地目录。使得本地目录中的事实在网络114 上的网站上变得可用。例如使用计算机、蜂窝电话或其他网络连接 设备的个人的终端用户,可以访问目录并且请求关于企业的事实。例如,终端用户可以发布针对特定餐馆的查询。作为响应,本地目 录返回描述关于该餐馆事实的一个或多个网页页面,例如它的名称、 电话号码、地址、营业时间、预订方式、停车可用性、可接受支付 选项等。在某些实施例中,该终端用户可以发布其他类型的查询,例如针对特定地点半径内的所有餐馆、接受预订的所有餐馆和/或10 PM后开门的所有餐馆的查询。这种本地目录的一个例子是乂人加州山 景城的GOOGLE公司可获得的GOOGLE本地(GOOGLE LOCAL)服务。在图1中示出的商业数据提供商116表示一个或多个商业数据 提供商,该一个或多个商业数据提供商在某些实施例中向结构生成 引擎110提供数据。商业数据提供商的例子包括例如电话公司的电 信提供商、例如报纸公司的媒体提供商和例如D&B公司的商业目录 提供商。在某些实施例中,商业数据提供商116提供描述关于一个 区域(例如,企业的名称、地址和电话号码)内企业基本信息的事 实的集合。这些数据通常是结构化的。商业数据提供商116可以经 由网络114和/或通过另一通信信道向结构生成引擎110提供数据。图1示出的企业网站118表示由企业操作的或代表企业利益操 作的多个网站。企业网站118的一个例子是提供关于特定餐馆信息 的网络114上的站点。在通常的情况中,站点提供餐馆的图片和关 于餐馆的信息,例如它的名称、地址、电话号码、营业时间、可接 受支付方法和预订方式。另外,站点可以包括像示例菜单和驾驶方 向的其他信息。网络上的数千或数百万的企业网站118表示结构生成引擎110 可以访问的可能的数据源。企业网站118上的数据经常是非结构化 的和/或以多种不同格式结构化的。例如, 一个网站118可能将餐馆 的营业时间指定为"开门周一至周五9点-5点,周六直到6点", 然而另一餐馆将该时间指定为"开门6点-2点,周日和节假日关 门"。这些数据缺乏定义的结构并且计算机难以解译。目录网站120表示提供关于多个企业120信息的网络114上一 个或多个站点。在一个实施例中,目录网站120是地理区域中的餐 馆原有目录。目录网站120包括提供关于餐馆的结构化、半结构化 和/或非结构化信息的网页。经常地,页面是至少部分结构化的。例如,目录网站120中针对餐馆的每个网页可以在"是"或"否"之 后包含文本"预订"以指示餐馆是否接受预订。然而,页面上的 某些信息可能不是结构化的。而且,不同的目录网站120利用不同 的结构。网络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)加密所有或某些链路。在另一个实施例中,除了上述技术 以外、或代替上述技术,实体可以使用定制的和/或专用的数据通信技术。II.系统架构图2是根据一个实施例的高级框图,示出了用作图1的环境100 中所示一个实体的计算机200的功能性视图。示出的是耦合到总线 204的至少一个处理器202。同样耦合到总线204的是存储器206、 存储设备208、键盘210、图形适配器212、指示设备214和网络适 配器216。显示器218耦合到图形适配器212。处理器202可以是任何通用处理器,例如INTEL x86、 SUN MICROSYSTEMS SPARC或POWERPC兼容CPU。在一个实施例中,存储
设备2 08是硬盘驱动器但是也可以是能够存储数据的任何其他设备, 例如可写压缩盘(CD)或者DVD,或者固态存储设备。存储器206 可以是例如固件、只读存储器(ROM)、非易失性随机访问存储器 (NVRAM)和/或RAM,并且保存了由处理器202使用的指令和数据。 指示设备214可以是鼠标、跟踪球或其他类型的指示设备,并且与 键盘210结合使用来将数据输入计算机系统200。图形适配器212 在显示器210上显示图像和其他信息。网络适配器216将计算机200 耦合到网络114。在很多实例中,计算机不具有图2中示出的一个或 多个元件,例如键盘210、指示设备214、图形适配器212和/或显 示器218。如在现有技术公知的,计算机2GG适合执行计算机程序模块。 如在此使用的,术语"模块"指用于提供特定功能的计算机程序逻 辑和/或数据。可以以硬件、固件、和/或软件实现模块。在一个实 施例中,将模块存储在存储设备208上,装载到存储器206中,并 且由处理器202执行。取决于实施例和图1的实体所需的处理功率,实体利用的计算 机200的类型可以有所变化。可以由在单个计算才几200上运行的网 页服务器来提供企业网站118。相反,可以由在更强大的计算机和/ 或一个或多个协力操作的刀片服务器上运行的网页服务器来提供目 录网站120。同样地,在一个实施例中,结构生成引擎110包括一个 或多个模块以提供在此描述的功能,该一个或多个模块在一个或多 个刀片服务器或协力工作的其他类型的计算机上执行。图3是示出了根据一个实施例的结构生成引擎110内的模块的 高级框图。其他实施例具有图中所示那些模块以外的附加的和/或不 同的模块。另外,可以与在此所述不同的方式将功能分散到模块之 中。而且,由结构生成引擎110以外的实体可以提供某些功能。数据获取模块310获取关于目录中将包括的企业的数据。在一 个实施例中,数据获取模块310从商业数据提供商116接收关于企 业的数据。例如,通过从数据提供商116操作的网站获取数据、接
收使用XML或者其他格式指定数据的数据馈送、从DVD或其他计算 机可读介质装载数据等来接收这些数据。如上所述,将来自于商业 数据提供商116的数据结构化,并且提供关于企业基本事实的集合, 该基本事实包括它们的名称、地址和/或电话号码。在一个实施例中,数据获取模块310包括用于访问由企业118 和/或目录网站120上的网页页面提供的数据的网页爬行模块312。 网页爬行器(crawler)是访问网站并通过跟随其链接遍历站点的自 动程序。网页爬4亍才莫块312爬过企业118和目录网站120,并且在一 个实施例中,存储它遇到的网页页面以使能后续的分析。根据实施 例,基于从商业数据提供商116或其他源接收的数据来手工指定和/ 或由程序选择网页爬行模块312爬过的站点。在一个实施例中,网页爬行模块312包括通用爬行器和一个或 多个专用爬行器。利用通用爬行器来爬过具有未知格式的网站。经 常在特别基础上创建企业网站118,并且每个站点的格式可能完全唯 一。在一个实施例中,优化通用爬行器的行为用于这种具有多种不 同格式的特别网站。利用专用爬行器来爬过预先已知格式的目录网站120和/或企业 网站118。例如,,i设原有目录网站120具有在已知基址处的网页页 面集合,该网页页面描述了一个地理区域内的餐馆。将专用爬行器 手工编码以访问网站并且仅获取在该地址处的网页。可以将专用爬行器编码以忽略页面上例如具有如下特征的特定链接,所述特征在 于这些链接很可能是广告、或者不太可能提供关于正在收集数据的 企业信息,其中正在针对该企业收集数据。类似地,为了仅访问可 能包含关于企业的数据的页面,可以将专用爬行器编码以选择特定 链接。在某些实施例中,数据获取模块310使用其他技术来获取描述 企业的数据。在一个实施例中,企业将预结构化的事实文本直接发 送到数据获取模块310,这类似于模块如何从商业数据提供商116 接收数据馈送。在另一个实施例中,数据获取模块310测试在数据
仓库中找到的未分类的网页页面,例如在/人连^f妄到网络114的网站中获取的内容的高速緩存中找到的网页页面。数据抽取模块314从由网页爬行模块312存储的网页页面和/或 其他电子文档中抽取关于企业的数据。 一般而言,抽取的数据描述 终端用户很可能在企业目录中找到有益的企业的方面。在一个实施 例中,抽取的数据包括企业的名称、地址和/或电话号码;营业时间(即,何时开门);预订方式;可达性(即,残疾人通道);接收的支付方式;停车(即,可用的停车形式);提供的服务;以及提供的品牌。其他实施例抽取不同和/或附加的数据。在一个实施例中,数据抽取模块314从很可能包含描述企业的 键-值对的网页页面文本字符串中进行抽取。使用通用和/或专用抽 取器抽取数据。在一个实施例中,通用和专用抽取器两者由具有手 工构建的正则表达式的解析器组成。在其他实施例中,使用自动包 装器归纳技术创建某些或所有抽取器。优化专用抽取器以从具有已知格式的网页页面中抽取信息。例 如,假设已知来自于特定目录网站120的关于餐馆的所有网页页面 在页面的特定位置包括后面跟随"是,,或者"否"的短语"残疾人 可达性:.,,。专用抽取器包含定位网页页面正确部分并且抽取"残 疾人可达性,,字符串的正则表达式。在一个实施例中,专用抽取器 适合具有两列表格的网页页面。在这种表格中, 一列通常包含例如 "停车"或"特性"的键,而另一列包含用于该键的值。专用抽取器从该表格中抽取键-值对。通用抽取器抽取相同类型的信息,但是 j夂化,,w — — "" — — .k _---------........。, t 一, 数据解析模块316将包含键-值对的抽取的字符串转换为标准化 的事实表示。为了理解数据解析模块316的功能,考虑两个不同的 网页页面(以及抽取的字符串)如何能够表示企业对于残疾人是否 可以进入。假设一个字符串是"轮椅可进入是,,,而另一个字符 串是"残疾人通道Y"。两个字符串都指示该企业对于残疾人是可 进入的,但是键(即,"轮椅可进入"和"残疾人通道")以及值(即,"是"和"Y")两者都不同。同样地,考虑字符串"时间 周一至周五9点-5点,,和"平日/人9: 00 am至5: 00 pm开门"。 后面这两个字符串使用不同的键-值对来表示相同的营业时间。数据 解析模块316在可能时转换键和值两者,以便以相同的方式表示来 自于不同源的数据。在一个实施例中,将标准化的事实表示存储在 结构化数据数据库112中。键标准化模块318将所抽取的字符串中的键标准化。通常,键 标准化是将字符串的数据分类到已知数据类型中的过程,例如,确 定字符串是否包含时间数据、停车数据或者可达性数据。在一个实 施例中,键标准化模块318使用执行匹配于标识该键的正则表达式 的解析器。例如,键标准化模块318确定字符串是否包含词"开门"、"关门"、"时间,,、"每日"和/或表示该字符串是描述营业时间 的其他词。在另一个实施例中,键标准化模块318确定字符串是否 包含词"停车"、"代客泊车(valet)"、"区"和/或表示字符 串是描述在该企业处是否可以停车的其他词。如果键标准化模块318 在所抽取的字符串中识别出一个键,则它将该字符串与所述键的标准化表示进行关联。值标准化模块320将所抽取的字符串中的值标准化。值标准化是创建字符串中所提供值的机器可理解表示的过程。在 一 个实施例 中,值标准化模块320使用解析器,该解析器执行正则表达式匹配 以解译所述值。将特定类型的值相对直接地标准化。例如,"预订方式,,和"可达性"键通常具有"是"或"否"的值。用于这两种 类型值的解析器通过确定该字符串是否包含词"是"、"否"和/或
等效形式来执行标准化。然而,以各种不同的方式表示例如营业时 间的某些值。因此,用于这些类型值的解析器使用更为复杂的逻辑。图4是示出了根据一个实施例的由值标准化模块320标准化营 业时间值所执行步骤的流程图。其他实施例执行不同的和/或附加步 骤。而且,其他实施例以不同顺序执行步骤。尽管图4的步骤旨在 标准化营业时间,但是本领域技术人员应该认识到,可以使用类似 的步骤来标准化其他类型的值。为了示例目的,假设企业使用字符串"开门周一至周三9点至5 点,周四至7点"来描述其营业时间。为了创建营业时间的标准化 表示,值标准化模块320解析字符串以对字符串内的符号进行分类 410。在一个实施例中,将符号分类为时间、日期、分隔符、开门、 关门或忽略。使用正则表达式来执行这些分类。在一个实施例中, 使用正则表达式的这些描述和分类的意义来检测它们,如下"时间"(T)是描述企业营业时间的时间值。通过检测出现子 串的正则表达式来识别字符串中的时间,该子串例如 "##: ##(AM|PM),,(其中"#"是数字并且(AMIPM)是可选的子成分)、 "# o'clock"、"正午"和"####小时"。"曰期"(D)是描述企业开门或关门的日期的值。通过检测出 现表示一周日期的子串的正则表达式来识别字符串中的日期,该子 串例如"M" 、 "Mon"、"周一,,(以及针对其他日期的等效形式)、 "周末"和"每日"。"分隔符(-)"是在字符串中分隔其他符号的符号。通过检测表 示出现分隔符子串的正则表达式来识别字符串中的分隔符,该子串 例如"-,,(连字符)、"到"、"直到,,、"直至,,和"至"。"开门/关门"(0/C )是在字符串中是修饰日期和/或时间的值。 通过在字符串中检测出现"开门,,、"关门,,和/或类似子串的正则 表达式来识别这些值。"忽略(X)"是解析字符串时忽略的值。使用检测空格、逗号、 比如"和"之类的词等的正则表达式来从字符串中移除忽略。
在分类410之后,将字符串"开门M-W 9到5, TH到7"表示 为"0D-DT-TD-T"。值标准化模块320接着将"D,,序列分解412为 单个表示该序列中所有日期的"D,,。称此步骤为"D-分解"。在一 个实施例中,由具有描述开门日期的比特的向量表示所分解的D。例 如,如果向量开始于周日,则将周一至周三表示为"01 11 000"。在 此步骤之后,示例字符串表示为"0DT-TD-T,,。在D-分解之后,如果需要,则值标准化模块320将时间符号插 入414到表示中。称为"T-插入"的此步骤极少发生并且此步骤处 理其中营业时间表述缺少边界值的特殊情况。例如T-插入处理其中 将营业时间表示为"周四至7点"而不是"周四9点至7点"的情 况。在一个实施例中,值标准化模块320针对"-T"的出现测试字 符串的表示不是"T"居先的,例如(D-T)。如果发现这样的"-T", 则值标准化模块320立即标识居先的"T-"(如果存在一个),并 且将此"T"插入表示之中。因此,将"0DT-TD-T"转换为"0DT-TDT-T", 其等价于"开门周一至周三9点至5点,周四9点至7点,,。接着,值标准化模块320解译416表示中的时间。表示中单个 的"T"可以具有三个可能的解释上午、下午或次日的上午。换句 话说,"1"可以指UM、 1PM或次日的1AM。在一个实施例中,值标 准化模块320使用解析器标识"DT-T"序列。这些解析器使用逻辑 来解译这些序列中的时间。该逻辑是基于多数企业如何表示它们的 营业时间。例如从8点到11点的开始时间趋向于是AM,在5点-7 点之间的开始时间趋向于是PM,并且在PM开始时间之后但具有更小 数字的结束时间趋向于是次日的AM。因此,将示例字符串解译为"开 门周一至周三9 AM至5 PM,周四9 AM至7PM"。当将这些步骤应用于示例字符串之后,值标准化模块320能够 解译字符串并且以机器可理解的标准化表示来表示418营业时间。在一个实施例中,标准化表示是描述一周中每天的开门营业时间的向量。返回图3,由数据解析模块316执行的标准化通常落入以下三个
类别之一完全标准化、仅有键标准化和非标准化。在完全标准化 中,数据解析模块316标准化在所抽取字符串中包含的键和值两者。 完全标准化是最好的结果,因为它允许机器完全理解由键-值对表示 的事实,并且允许比较来自于多个源的事实。在一个实施例中,针 对"营业时间"、"预订方式"和"可达性"提供数据的字符串经 常落入此类别。在"仅有键标准化"中,数据解析模块316可以理解在抽取字 符串中包含的数据类型,但是不能产生机器可理解的值的表示。在 一个实施例中,提供"接受的支付方式"和"停车"数据的字符串 经常落入此类别中,因为很难解析相应的值。在某些情况中,这是 过渡状态。 一旦考虑了足够多的初始模糊(即,不能理解)的值, 则可以构建解析器来将值标准化。在"非标准化"中,数据解析模块316不能将键和值标准化。 在 一 个实施例中,不能标准化的所抽取字符串保持其被抽取的形式。 然后,所抽取字符串按原样出现在目录中以便允许对其中所包含事 实的人类解释。在某些实施例中,数据解析模块316使用键318和/或值320标 准化模块的功能来识别事实并且理解它们。如果数据解析模块316 从网站或其他源接收到文本的片断,但是缺少关于文本意义的信息, 则它可以A/v标准化4莫块318、 320向文本应用解析器,并且确定解析 器是否产生有效结果。然后,数据解析模块316可以基于解析器结 果来将文本分类。例如,如果将营业时间解析器应用至文本片断并 且产生有效结果,则数据解析模块316识别出包含营业时间信息的 文本,并且将营业时间键与该文本相关联。数据集群模块322将事实(标准化或非标准化)与它们相关的 企业相关联。在一个实施例中,通过将乂人企业118和/或目录120网 站中抽取的事实的集合与从商业数据提供商116接收的企业数据进 行关联来执行此集群处理。集群处理的结果是将与相同企业相关的 事实聚合在一起。 为了理解数据集群模块322的操作,考虑以下五个事实的集合1.圆桌比萨650-961-0361570 N Shoreline Blvd, Mountain View, CA ( 570 N海岸大街, 山景,CA)每日开门11am—10pm2.山景圆桌比萨 650-961-0361570 N Shoreline Blvd, Mountain View, CA 94043 (570 N海 岸大街,山景CA 94043 )3. Safeway食品&药 品 650-961-4868570 Shoreline Blvd, Mountain View, CA 94043 ( 570 N海岸 大街,山景CA 94043 ) 24小时开门4.圆桌比萨 650-961-0361399 1st St, Los Altos CA 94022 ( 399第一街,Los Altos CA 94022 ) 可外送5.圆桌650-384-7463570 Shoreline Blvd, Mountain View, CA 94043 ( 570海岸大 街,山景CA 94043 )
假设从五个不同的源获得这些事实。例如,从商业数据提供商116 接收的数据获得#2的事实集合,而从企业118和/或目录120网站获 得其他四个事实集合。从这些事实中,人类观察者可能认为第一、第二和第五事实集 合可能描述了相同的企业(山景的圆桌比萨)。关于街道的地址, 事实有轻微的不一致,但更可能是事实源之一具有错误的号码,而 不是在相同的街区上存在两个相同品牌的比萨餐馆。还存在某些关 于电话号码的不一致;并且,可能数据源具有错误的号码,或者可 能餐馆具有多个电话号码。第三事实集合显然描述了不同的企 业——Safeway杂货店——与比萨餐馆具有相同的地址(可能在相同 的沿路商业区中,这可能解释了关于圓桌地址的某些迷惑)。第四 事实集合看起来像位于Los Altos的几英里之外的不同圓桌餐馆。 数据集群模块322将类似的逻辑应用于列表来标识关于相同企业的 事实集合,并且用来区分关于不同企业的事实集合。集群模块322通过接近度来对事实集合分组。在一个实施例中, 集群模块322或另一个模块使用从地址和/或其他数据获得的绵度和 经度来表示由事实描述的每个企业的位置。彼此相当接近的企业(给 出或采用一个错误半径,例如,上述的560/570地址混淆)可能是 相同的企业;相距非常远的企业(例如山景和Los Altos )几乎当然 不是相同的。为了便于分组,集群模块322的一个实施例将世界划分成为"邻 近区域,,,其中邻近区域的大小是大约"错误半径,,(在大多数情 况下是两个城市街区;在密集市区中是接近的)。邻近区域重叠; 最终可以将事实集合指定到若干邻近区域。允许此重叠,从而事实 集合可以与接近的邻近区域的事实合并。集群模块322将邻近区域内的每个事实集合与邻近区域中的其 他事实集合进行比较来确定事实是否与相同企业相关。在一个实施 例中,集群模块322比较一对事实集合的名称、电话号码和位置, 并且基于这些条目计算相似性得分。为了比较名称,集群模块基于 由文集中频率所加;〖又的共享词和二元语法来4吏用文本相似性度量标 准。如果相似性得分超过阈值,则集群模块322将两个事实集合合 并。在一个实施例中,为了处理其中事实集合很可能是不相关的特 殊条件,集群模块322迫使特定的异常合并。集群模块322的一个 实施例并不合并具有不同电话号码的两个事实集合,除非具有相同 的名称。集群模块322对合并的事实集合指定一个"集群ID",该 集群ID用于标识用于以后处理的事实的组。因为邻近区域重叠,在多个邻近区域中,事实集合可能与其他事实的集合合并并且指定了 集群ID。当发生这种情况时,具有合并到其中的最多事实集合的集 群ID成为该企业的集群。在一个实施例中,事实比较模块324比较企业的集群事实以便 建立事实的置信度。如上所述,当从不同的源获得事实时,某些事 实一致而某些事实沖突。多个源支持的事实具有高置信度。例如, 如果从多个源获得的事实关于企业的营业时间一致,则这些事实很 可能是正确的,并且因此事实比较模块324对这些事实赋予高置信 度。相反,如果来自于多个源的事实有所冲突,则事实比较模块324 对这些事实赋予低置信度。在一个实施例中,不对部分和/或非标准 化事实赋予置信度。在某些实施例中,事实比较模块324使用权重处理以在来自于 特定源的沖突事实和/或一致事实之间进行区分。例如,权重处理可 以对更新的事实赋予较大的权重,并且对不太新的冲突事实赋予较 小的权重。另外,可以对来自更为可信的源的事实赋予比其他事实 较大的权重。同样地,可以对比其他事实集合提供更多信息的事实 集合内的事实赋予较大的权重。缺少置信度的部分标准化事实和/或 非标准化事实可以具有基于该事实的源、相同集合内其他事实的数 量和/或其他标准而赋予的权重。在一个实施例中,丢弃具有低置信 度和/或权重的事实。如上所述,在一个实施例中,利用在结构化数据数据库ll2中
存储的事实来向终端用户提供本地企业目录。在一个实施例中,结构生成引擎110包括事实呈现模块326,该事实呈现模块326指定目 录应该如何呈现在结构化数据库112中存储的事实。在其他实施例 中,事实呈现模块326位于不同的实体中,例如呈现用于目录的网 页页面的模块。事实呈现模块326使用事实的置信度和/或权重以确定如何在目 录中显示事实。通常,显示具有较大置信度和/或权重的事实,而不 显示具有较低置信度和/或权重的事实。以带有或不带事实的源的属 性的方式来示出显示的事实。在一个实施例中,以不带属性的方式 来显示具有非常高置信度的事实。例如,以不带属性的方式来显示 来自商业数据提供商116的名称、地址和电话事实。以带有属性的 方式来显示具有较低置信度的其他事实,所述属性表示从何处获得 事实的源。在一个实施例中,该属性包括链接到从中抽取事实的网 页页面或其他电子文档的统一资源定位符(URL)。如果多个源提供相同的事实,则 一 个实施例仅显示具有最大权 重的事实,并且将该事实归因于提供它的源。此技术在页面上留下 了显示其他事实的空间而不是使用重复的事实充满该页面。例如, 如果源A表示企业是"开门周一至周六8am-6pm,,,而B仅表示该 企业是"开门周一至周六,,而没有时间信息,则事实呈现模块326 从源A示出事实,因为它包含最多的信息(并且因此获得较大权重)。在一个实施例中,部分标准化或非标准化的事实按照原样显示 并且带有属性。即,将描述事实的所抽取字符串连同该字符串的源 的链接在网页页面上显示。此显示允许终端用户直接观察并且解译事实。III.处理/示例图5是示出根据一个实施例的由结构生成引擎110所执行步骤 的流程图。其他实施例以不同顺序执行此步骤和/或执行与图5所示 步骤不同或附加的步骤。结构生成引擎110可以并发地执行多个图5 步骤的实例和/或并行执行步骤。
初始地,结构生成引擎110从一个或多个源获取510关于企业 的数据。这些源可以包括商业数据提供商116、企业网站118、和/ 或目录网站120。结构生成引擎IIO从该数据中抽取描述事实的字符串。结构生成引擎110解析512抽取的字符串来以机器可理解的表 示生成标准化事实。每个字符串包含健-值对。在某些情况下,引擎 110可以将健和值两者标准化,在其他情况下,引擎仅将键标准化, 并且此外在其他情况下,引擎不能将健或值标准化。结构生成引擎IIO对事实进行集群514。即,引擎110将每个事 实与它相关的企业进行关联。结果,每个企业获得一个或多个事实 的列表,其中的某些一致,而其中的某些冲突。引擎110比较516 与企业关联的事实,并且在一个实施例中,对事实赋予置信度和/或 权重。例如,对来自于多个源的一致事实赋予高置信度。就某点而言,将事实呈现518在该事实相关企业的网页页面或 者其他电子文档上。网页页面可以是本地目录的部分和/或在另外的 环境中提供。以不带有事实源的属性的方式来呈现某些事实,而以 带有属性的方式呈现其他事实。而且,没有示出例如具有非常低的 置信度和/或包含已经由另 一事实已提供信息的某些事实。包括上面的描述以便说明优选实施例的操作,而这并不意味着 限制本发明的范围。仅由下文的权利要求书限制本发明的范围。从 上述讨论中,对于相关领域技术人员来说,仍然包含在本发明的精 神和范围之中的许多变形是显而易见的。
权利要求
1.一种用于生成结构化数据的系统,包括数据获取模块,用于接收电子文档,所述电子文档包含描述关于企业的事实的非结构化数据;数据抽取模块,用于从所述电子文档中抽取描述关于所述企业的事实的非结构化数据;以及数据解析模块,用于接收所述抽取的非结构化数据以及创建由所述非结构化数据描述的事实的结构化表示。
2. 根据权利要求1所述的系统,其中所述数据获取模块包括网页爬行模块,用于从耦合到网络的 一个或多个网站中获取包 含非结构化数据的网页。
3. 根据权利要求2所述的系统,其中所述网页爬行模块包括专 用爬行器,所述专用爬行器适合从特定网站中获取具有描述企业的 事实的网页页面。
4. 根据权利要求1所述的系统,其中所述数据抽取模块分析所 述电子文档,以识别描述关于所述企业的事实的文档的部分。
5. 根据权利要求1所述的系统,其中所述抽取的非结构化数据 包含键-值对,所述键-值对描述关于所迷企业的事实,并且所述数 据解析模块包括键标准化模块,用于将所述抽取的数据中包含的描述关于所述 企业的数据类型的键进行标准化。
6. 根据权利要求5所述的系统,其中所述键标准化模块将所述 键标准化为从包含以下内容的集合中选择的键类型名称、地址、电话号码、营业时间、预订方式、可达性、接受 的支付方式、停车、提供的服务和提供的品牌。
7. 根据权利要求1所述的系统,其中所述抽取的非结构化数据 包含键-值对,所述键-值对描述关于所迷企业的事实,并且所述数 据解析模块包括值标准化模块,用于将所述抽取的数据中包含的描述所述企业 的值进行标准化。
8. 根据权利要求7所述的系统,其中所述值标准化模块使用营 业时间解析器以将描述企业营业时间的非结构化数据标准化。
9. 根据权利要求7所述的系统,其中所述值标准化模块将所述 值标准化为从包含以下内容的集合中选择的值类型名称、地址、电话号码、营业时间、预订方式、可达性、接受 的支付方式、停车、提供的服务和提供的品牌。
10. 根据权利要求1所述的系统,其中所述数据解析模块创建 描述多个不同企业的多个事实的结构化表示,进一步包括数据集群模块,用于将所述事实的结构化表示与所述事实相关 的企业相关联。
11. 根据权利要求1所述的系统,其中所述数据解析模块创建 描述所述企业的多个事实的结构化表示,进一步包括事实比较模块,用于比较描述所述企业的多个事实并且响应于 所述比较来建立针对所述事实的置信度。
12. —种具有计算机可读介质的计算机程序产品,所述计算机可 读介质具有确实包含于其中的计算机程序指令,所述计算机程序产 品包括数据获取模块,用于接收电子文档,所述电子文档包含描述关 于企业的事实的非结构化数据;数据抽取模块,用于从所述电子文档中抽取描述关于所述企业的事实的非结构化数据;以及数据解析模块,用于接收所述抽取的非结构化数据以及创建由 所述非结构化数据描述的事实的结构化表示。
13. 根据权利要求12所述的计算机程序产品,其中所述数据获 取模块包括网页爬行模块,用于从耦合到网络的 一个或多个网站中获取包 含非结构化数据的网页页面。
14. 根据权利要求13所述的计算机程序产品,其中所述网页爬 行模块包括专用爬行器,所述专用爬行器适合从特定网站中获取具 有描述企业的事实的网页页面。
15. 根据权利要求12所述的计算机程序产品,其中所述数据抽 取模块分析所述电子文档,以识别描述关于所述企业的事实的文档 的部分。
16. 根据权利要求12所述的计算机程序产品,其中所述抽取的 非结构化数据包含键-值对,所述键-值对描述关于所述企业的事实, 并且所述数据解析模块包括键标准化模块,用于将所述抽取的数据中包含的描述关于所述 企业的数据类型的键标准化。
17. 根据权利要求16所述的计算机程序产品,其中所述键标准 化模块将所述键标准化为从包含以下内容的集合中选择的键类型名称、地址、电话号码、营业时间、预订方式、可达性、接受的支付方式、停车、提供的服务和提供的品牌。
18. 根据权利要求12所述的计算机程序产品,其中所述抽取的 非结构化数据包含键-值对,所述键-值对描述关于所述企业的事实, 并且所述数据解析模块包括值标准化模块,用于将所述抽取的数据中包含的描述所述企业 的值标准化。
19. 根据权利要求18所述的计算机程序产品,其中所述值标准 化模块使用营业时间解析器以将描述企业营业时间的非结构化数据 标准化。
20. 根据权利要求18所述的计算机程序产品,其中所述值标准 化模块将所述值标准化为从包含以下内容的集合中选择的值类型名称、地址、电话号码、营业时间、预订方式、可达性、接受的支付方式、停车、提供的服务和提供的品牌。
21. 根据权利要求12所述的计算机程序产品,其中所述数据解 析模块创建描述多个不同企业的多个事实的结构化表示,进一步包括数据集群模块,用于将所述事实的结构化表示与所述事实相关 的企业进行关联。
22. 根据权利要求12所述的计算机程序产品,其中所述数据解 析模块创建描述所述企业的多个事实的结构化表示,进一 步包括事实比较模块,用于比较描述所述企业的多个事实并且响应于 所述比较来建立所述事实的置信度。
23. —种用于生成结构化数据的方法,包括 接收电子文档,所述电子文档包含描述关于所述企业的事实的非结构化数据;从所述电子文档中抽取描述关于所述企业的事实的非结构化数 据;以及创建由所述非结构化数据描述的事实的结构化表示。
24. 根据权利要求23所述的方法,进一步包括从耦合到网络的 一 个或多个网站中获取包含非结构化数据的网 页页面。
25. 根据权利要求23所述的方法,其中所述抽取包括 分析所述电子文档,以识别描述关于所述企业的事实的文档的部分。
26. 根据权利要求23所述的方法,其中所述抽取的非结构化数 据包含键-值对,所述键-值对描述关于所述企业的事实,并且创建 结构化表示包括将所述抽取数据中包含的描迷关于所述企业的数据类型的键标 准化。
27. 根据权利要求26所述的方法,其中将所述键标准化为从包 含以下内容的集合中选择的键类型名称、地址、电话号码、营业时间、预订方式、可达性、接受 的支付方式、停车、提供的服务和提供的品牌。
28. 根据权利要求23所述的方法,其中所述抽取的非结构化数据包含键-值对,所述键-值对描述关于企业的事实、并且创建结构化表示包括将在所述抽取的数据中包含的描述所述企业的值标准化。
29. 根据权利要求28所述的方法,其中所述标准化包括 使用营业时间解析器来解析所述非结构化数据,以便创建描述企业营业时间的结构化数据。
30. 根据权利要求28所述的方法,其中将所述值标准化为从包 含以下内容的集合中选择的值类型名称、地址、电话号码、营业时间、预订方式、可达性、接受的支付方式、停车、提供的服务和提供的品牌。
31. 根据权利要求23所述的方法,其中所述创建步骤创建描述 多个不同企业的多个事实的结构化表示,进一步包括将所述事实的结构化表示与所述事实相关的企业进行关联。
32. 根据权利要求23所述的方法,其中所述创建步骤创建描述 所述企业的多个事实的结构化表示,进一步包括比较描述所述企业的多个事实,并且响应于所述比较来建立所述 事实的置信度。
全文摘要
从例如商业数据提供商、企业网站和/或目录网站的一个或多个源来获取关于企业的结构化和/或非结构化数据。从非结构化数据中抽取字符串。该字符串包含描述关于企业的事实的键-值对。解析抽取的字符串以将键和值标准化,并且将它们置入机器可理解的结构化表示。某些键和/或值不能被标准化。将事实与相关于该事实的企业进行集群。比较来自于不同源的标准化事实,并且对该事实赋予置信度和/或权重。使用这些置信度和权重来选择在目录中所述企业的页面上显示的事实。
文档编号G06F7/00GK101164039SQ200680013245
公开日2008年4月16日 申请日期2006年3月2日 优先权日2005年3月2日
发明者D·埃格诺, E·帕斯托 申请人:谷歌公司