交叉引用
本申请要求于2014年11月10日提交的标题为“automaticbatchgenerationofconceptrelationsfromn-gramsfromlinguisticinputdata”的美国临时申请no.62/077,868的权益。本申请还要求美国临时2014年11月10日提交的标题为“lemmamappingtouniverasalontologies”的美国临时申请号62/077,887的权益。为了所有目的,这些申请中的每一个都通过引用并入本文。
以下三个申请彼此相关,并于2015年7月7日在同一天提交:fabricenauze等人于2015年7月7日提交的标题为“automaticgenerationofn-gramsandconceptrelationsfromlinguisticinputdata”的美国序列号14/793,677,(代理人案号88325-934160);margaretsalome等人于2015年7月7日提交的标题为“automaticontologygenerationfornatural-languageprocessingapplications”的美国序列号14/793,701(代理人案号88325-913826);以及fabricenauze等人于2015年7月7日提交的标题为“lemmamappingtouniversalontologiesincomputernatural-languageprocessing”的美国序列号14/793,658(代理人案号88325-934161)。这些申请中的每一个通过引用并入本文。
背景技术:
在一般意义上,本体(ontology)是对基本概念及其彼此关系的哲学研究。本体处理涉及哪些实体可以说成是存在、这些实体如何在层次结构中被逻辑地分组在一起以及什么相似性和/或差异可以被用来彼此隔离本体概念组的问题。在计算机和信息科学中,一般本体转化为特定计算领域中根本存在的类型、属性和关系的命名和定义。例如,本体可以划分计算的集合所需的变量并建立这些变量之间的关系。
技术实现要素:
在一个实施例中,在语言之间映射本体的方法可以包括接收第一语言的第一本体,其中第一本体包括第一多个词元(lemma)以及这多个词元之间的多个关系。该方法还可以包括接收第二语言的第二多个词元,并且将第二语言的第二多个词元中的每一个映射到第一语言的第一多个词元中的相应词元。该方法可以附加地包括通过使用第一本体中的多个关系创建第二语言的第二多个词元之间的关系来生成第二语言的第二本体。
在另一个实施例中,可以给出非暂态计算机可读介质。计算机可读存储器可以包括指令序列,当指令序列由一个或多个处理器执行时,使得这一个或多个处理器执行操作,包括接收第一语言的第一本体,其中第一本体由第一多个词元以及这多个词元之间的多个关系组成。操作还可以包括接收第二语言的第二多个词元,并且将第二语言的第二多个词元中的每一个映射到第一语言的第一多个词元中的相应词元。操作可以附加地包括通过使用第一本体中的多个关系创建第二语言的第二多个词元之间的关系来生成第二语言的第二本体。
在另一个实施例中,可以给出系统。系统可以包括一个或多个处理器和与这一个或多个处理器通信耦合并且可被其读取的存储器。存储器可以包括指令序列,当指令序列被一个或多个处理器执行时,使得这一个或多个处理器执行操作,包括接收第一语言的第一本体,其中第一本体由第一多个词元以及这多个词元之间的多个关系组成。操作还可以包括接收第二语言的第二多个词元,并且将第二语言的第二多个词元中的每一个映射到第一语言的第一多个词元中的相应词元。操作可以附加地包括通过使用第一本体中的多个关系创建第二语言的第二多个词元之间的关系来生成第二语言的第二本体。
附图说明
可以通过参考说明书的其余部分和附图来实现对本发明的本质和优点的进一步理解,其中贯穿几个附图使用相同的标号来表示相似的组件。在一些情况下,子标签与标号相关联,以表示多个相似组件中的一个。当在没有指定现有子标签的情况下引用标号时,意在指所有此类多个相似组件。
图1示出了根据一些实施例的用在自然语言处理中的本体的图。
图2a示出了根据一些实施例的用于生成两个不同本体的并行语言分析流水线。
图2b示出了根据一些实施例的使用通用本体的语言分析流水线。
图2c示出了根据一些实施例的使用词元翻译的语言分析流水线。
图3a示出了根据一些实施例的在词元映射期间的本体的图。
图3b示出了根据一些实施例的在关系映射期间的本体的图。
图4a示出了根据一些实施例的用于使用同义词数据库生成本体的系统。
图4b示出了根据一些实施例的用于使用语言翻译服务数据库生成本体的系统。
图5示出了根据一些实施例的用于生成用在自然语言处理中的本体的方法的流程图。
图6示出了用于实现一些实施例的分布式系统的简化框图。
图7示出了由实施例系统的组件提供的服务可以通过其作为云服务提供的系统环境的组件的简化框图。
图8示出了其中可以实现各种实施例的示例性计算机系统。
具体实施方式
一般而言,本体、层次结构和分类法常常用在搜索系统和信息检索系统中,以改善查全(recall)。例如知道“bmw”是“汽车品牌”可以提高搜索任务的查全率、提高分类任务的精度,等等。本体通常被构建为特定于语言的模块,首先将词形链接到词元,然后利用本体/层次结构关系将该词元与其它词元链接。但是,如本文所述,在本体中将词元链接在一起的关系可以被抽象为很大程度上与语言无关的模块。在本文所述的实施例中,给出实现这种抽象的方法,使得可以基于第一语言中的现有本体在第二语言中形成本体。
在一些实施例中,处理可以通过选择或定义第一本体开始。被称为“基础事实”或“通用”本体的第一本体可以用通用语言(诸如英语)形成。第一本体可以描述被编码为词元的概念之间的关系。然后,该处理可以利用在输入语料库的分段/记号化之后触发的语言分析流水线、词性分析以及其记号的词元化。然后,这个处理可以定义第一本体中的词元(以及可选地其词性)到第二本体中的词元的映射。通过使用通用本体来映射用于每种语言的词元和关系,实现新语言本体所需的时间被最小化,并且跨语言的整体质量可以被提高,因为本体的质量不绑定到特定语言中对关系进行编码的人的工作。
在一些实施例中,该处理可以构建与语言无关的本体作为第一本体。第一本体包括被编码为词元的概念之间的关系。例如,“tandem”是“bicycle”,并且“bicycle”是“vehicle”。接下来,该处理可以接收与第一本体的第一语言不同的第二语言的选择。第二语言可以是用于第二本体的期望语言。接下来,该处理可以生成第一语言和第二语言中的词之间的映射。该处理还可以利用跨语言映射常见含义的数据库。这个映射可以是通用的,使得第一语言中的词被映射到第二语言中的对应词,或者可以更具体,使得词性(pos)之间的映射被促进。例如,通用映射可以导致“词元(第二语言)->词元(第一语言)”,而特定于词性的映射可以导致“pos+词元(第二语言)->词元(第一语言)”。
在第一语言和第二语言之间映射词元之后,所映射的词元可以被传递到语言分析流水线中的下一步。具体而言,然后第一本体中的词元之间的关系可以使用第二本体中的词元之间的关系来直接映射。本质上,在第一本体中定义的关系被用来将第二本体中的词元链接在一起,以形成对应的关系。该处理在两个本体之间自动创建词到词的映射,然后使用这些映射在第二本体中建立关系。以这种方式,第一本体被用作第二本体的模板,其中来自第二语言的词填充模板中关系之间的节点。因此,用户不需要手动指派关系或确定用于第二本体的词汇。
这个处理也可以随着时间被不断更新。第一本体可以与特定语料库(诸如网站或web域)关联。当语料库随时间改变时(例如,网页被更新),第一本体也可以在第一语言中改变。可以添加新的词汇、可以删除旧的词汇,并且可以调整关系。当这种情况发生时,可以将第二语言中的新词汇添加到第二本体,或者可以从第二本体中去除已弃用的词汇。也可以根据第一本体中经调整的关系在第二本体中调整关系。这个自动化的处理可以基于自动保持最新的第一本体生成多个特定于语言的本体。
图1示出了根据一些实施例的用在自然语言处理中的本体的图100。图100可以表示通过含义将概念分组在一起并通过关系将这些概念关联到其它概念的通用本体。例如,bike114可以表示两轮手动动力车辆的概念。本体还可以包括描述bike114相同概念的其它词或同义词104的列表。bike114可以以分层方式关联到其它概念。例如,bike114是vehicle102,其也具有可以被用来表达vehicle102的概念的同义词集合。层次结构中的父子关系表示父与子之间的“是...的一种类型”关系。作为另一个示例,dirtbike106、tandembike108和touringbike110全都是表示bike114的父节点的类型。
使用由一个或多个词表示的概念构建通用本体。但是,重要的是要指出,个体词(尤其是在英语语言中)可能表示多个概念。在一个示例中,术语“bike”可以既表示名词又表示动词。图1中所示的本体还包括第二个概念,其中术语“bike”用作动词,如在“tobike”中。与其名词对应物一样,动词bike116概念也包括一组同义词112,其也可以被用来表示相同的概念。动词bike116是父动词“move”118的孩子,因此与其具有“是...的一种类型”关系。
如下面将要讨论的,当使用通用本体在语言之间映射概念时,不仅仅通过在那种语言中使用的词而且通过词性来区分概念常常是有用的。如本文所使用的,这些概念被称为“词元”。通用本体中的词元可以通过使用连接各种语言之间的概念的映射引擎被映射到特定于语言的本体中的词元。示例映射引擎在下面在图4a-4b中讨论。而且,图1中所示的通用本体可以以与语言无关的方式表示概念和关系。虽然通用本体仅仅为了说明的目的而以英语显示,但是其它语言可以用于通用本体。
图2a示出了根据一些实施例的用于生成两个不同本体的并行语言分析流水线200a。语言分析流水线可以被用来从语料库202生成特定于语言的本体。语料库可以包括web域、文献的集合、技术文档等等。一般而言,语料库只是在特定上下文中使用的特定语言的子集。例如,语料库可以包括用于航空公司的web域,其中广泛使用航空业常见的术语。通过使用限于通用语言的子集的特定语料库,可以导出特定于语料库202的本体,这比通用语言本体更高效和更小,并且仅包括特定于语料库202的定义,从而加快了查全和查找效率。
传统上,将需要两次通过语言分析流水线,以生成不同语言中的本体。在这个示例中,将需要英语语言分析流水线和法语语言分析流水线,以分别生成英语本体214-1和法语本体214-2。将需要向流水线提供英语语料库202-1和法语语料库202-2,以供分析。在一些情况下,英语语料库202-1和法语语料库202-2可以在不同的翻译中表示相同的实质内容。例如,每个语料库202可以表示翻译成不同语言的相同网页。为了生成单独的本体,每个语料库需要分别运行通过语言分析流水线。
用于从语料库202生成本体214的处理可以如下进行。语料库202可以被提供给语料库分析引擎204,语料库分析引擎204隔离语料库202内感兴趣的文本。语料库分析引擎204可以去除元数据、注释、显示代码和/或其它非实质文本,以生成可以考虑用于本体21的单个词的列表。例如,对于web域,语料库分析引擎204可以擦除html格式化代码、开发者评论、元数据、属性等等,并且只有在屏幕上向用户显示的文本可用于搜索引擎。
接下来,词元生成引擎206可以接收单个的词并生成词元。词元可以由单个的词或单个的词的组合组成,从而形成n元语法(n-grams)。例如,对于描述电子邮件服务的网站,术语“email”将是单个词的词元,而术语“searchfilter”将是指单个概念的两个词的词元。词元生成引擎206可以接收定义用于生成n元语法的最大和/或最小数目n的输入。例如,输入可以定义用于创建n元语法的最小数目1和最大数目4。然后,词元生成引擎206将扫描通过语料库分析引擎204可用的文本,并生成在文本中作为连续的、单个或多个词的组合出现的可能词元的列表。
词元过滤/整合引擎208可以从词元生成引擎206接收可能词元的列表,并且随后削减候选词元,以生成将在本体214中出现的词元的最终列表。词元过滤/整合引擎208可以包括可以被用来过滤候选词元的列表的多个参数定义。例如,一个参数可以定义将候选词元保留在本体词元列表中所需的在语料库中的使用频率。在语料库202中仅出现一次或两次的候选词元可以被确定为不传达更广泛含义或传达在本体214中无用的含义的个体词的分组。因此,应当保留的候选词元可能需要在语料库202中出现至少最少次数。其它参数可以定义可以对照其比较候选词元的词典或其它可用词元数据库。这允许与先前已知的词元匹配的词元被保留,而其它词元被丢弃或接受进一步处理。在一些实施例中,词元过滤/整合引擎208可以为用户界面生成显示,使得用户可以在任何自动过滤处理发生之前或之后检查候选词元的列表。然后,用户可以快速扫描候选词元的剩余列表并消除任何不属于的词元。
在这个时候,语料库202中大量未处理的文本已经被变换为用于本体214的词元的最终列表。语言分析流水线的接下来的部分,关系指派引擎210和关系可视化/精炼引擎212,常常被认为是该处理中最耗时和困难的阶段。关系指派引擎210可以基于词元在语料库202中的相对位置以及它们的词性、词典定义和已知同义词自动地尝试生成词元之间的关系。关系可视化/精炼引擎212然后可以被用来在图形界面中向用户显示初步关系指派。然后,用户可以在显示设备上可视地操纵以图形或树形格式显示的关系,以生成词元之间的最终关系集合。然后可以从语言分析流水线输出最终词元216和最终关系218的组合,作为本体214。
为了生成法语本体214-2和英语本体214-1,必须对每个个体语言执行语言分析流水线中的每个步骤。这意味着用户可能需要手动检查来自词元过滤/整合引擎208的最终词元列表,并手动建立最终关系218的集合。这需要广泛的用户参与以生成本体,用户参与常常需要多于一种语言中的专业知识。
图2b示出了根据一些实施例的使用通用本体的语言分析流水线200b。如上所述,通用本体214-1可以是与语言无关的,尽管它必然由特定语言(诸如英语)表示。通用本体214-1将包括词元216-1的集合和用于词元216-1的集合的关系218-1的集合。为了从法语语料库202-2生成法语本体214-2,可以使用通用本体214-1来消除在语言分析流水线中生成法语词元之间关系的耗时步骤。
如上所述,可以使用语料库分析引擎204-2来分析法语语料库202-2,可以使用词元生成引擎206-2从中生成词元的集合。在使用词元过滤/整合引擎208-2过滤和编辑候选词元之后,将生成用于法语本体214-2的词元216-2的最终集合。在这个时候,跨语言的词元映射引擎220可以接收用于法语本体214-2的词元216-2的最终集合,并将词元216-2的最终集合的含义映射到通用本体214-1。
由跨语言词元映射引擎220用来将用于法语本体214-2的词元216-2的最终集合与通用本体214-1的词元216-1匹配的方法可以根据特定实施例而变化。在一些实施例中,现有数据库可以被用来通过将特定于语言的同义词或同义词集合链接到共享的索引层来链接语言之间的词元。例如,eurowordnet项目提供了链接不同语言的概念之间的含义的数据库。在其它实施例中,可以使用自动语言翻译服务(例如,google翻译)来生成跨语言的同义词。例如,来自词元216-2的最终集合的词元可以被翻译成通用本体214-1的语言,并且被映射到通用本体214-1的词元216-1中的词元。在一些实施例中,如果该语言已经被映射到通用本体,则该语料库可以被用来生成在通用本体语言中对于其存在平行(parallel)数据的词元。例如,在双语语料库中,来自新语言的对齐句子被直接映射到通用本体语言中的平行句子。词和多记号词可以使用在两种语言中都众所周知的统计方法来使其对齐。然后,可以自动生成词元和映射。
在将词元216-2的最终集合映射到通用本体214-1中的词元216-1之后,通用本体中的关系218-1可以被关系映射引擎222直接映射到词元216-2的最终集合。在许多情况下,关系218-1可以直接映射到法语本体214-2中的词元216-2的最终集合,以便生成法语关系218-2。在一些情况下,法语本体214-2的词元216-2的最终集合中的词元在通用本体214-1的词元216-1中可能没有直接的类似物。这种情况将在下面更详细地讨论。在一些实施例中,关系映射引擎222可以简单地从通用本体218-1读取关系并将它们直接应用到法语本体214-2,使得法语关系218-2与通用本体中关系218-1相同。如果存在无法在法语语言和通用本体之间直接映射的词元,那么如果需要,则可以手动添加附加关系,但这应当是很少使用的操作。
图2c示出了根据一些实施例的使用词元翻译的语言分析流水线200c。在这个实施例中,可以针对具体的材料语料库开发通用本体214-1。例如,出现英语的web域的主版本可以被用来生成特定于这个特定web域的通用本体。如对于跨国公司是常见的情况,web域的主版本可以被翻译成各种其它语言,以服务国际客户群。不是分别分析以英语出现的web域的主版本的翻译,而是通用本体214-1可以被用来自动生成各种其它语言的本体。
对于出现在通用本体214-1中的每个词元216-1,词元翻译引擎224可以生成另一种语言(诸如法语)的词元216-2的最终集合。在一些情况下,对英语词的翻译可能会导致可以在法语中使用的同义词集合。例如,“bicycle”的英语词可以生成法语语言中五个同义词的集合。法语同义词可以与web域的法语翻译的实际语料库进行比较,以确定哪个同义词应当在法语本体214-2中使用。在为法语本体214-2生成词元216-2的最终集合之后,关系映射引擎222可以被用来为法语本体214-2生成关系218-2。要指出的是,在这个实施例中,完整的法语本体214-2是基于通用本体214-1生成的,而不必在整个语言分析流水线中处理web域的法语语料库。
图3a示出了根据一些实施例的在词元映射期间本体的图300a。在处理的这个阶段,用于法语语言的词元集合可以由语言分析流水线生成。例如,已经对在巴黎处理自行车运输的web域进行了分析,以生成图3a中出现的词元。通过将法语词元的语言翻译成通用本体(例如,英语)的语言,法语语言的词元可以被映射到通用本体中的词元。如上所述,每个词元概念可以具有一个或多个同义词,其可以被用来在语言之间映射概念。在图3a中,用于vehicle302、314的概念被映射,用于bike304、316的概念被映射,并且具体类型的自行车(诸如touringbike306、320,motorbike310、322和/或tandembike312、324)被映射。
要指出的是,dirtbike308的概念在来自特定法语语料库的法语词元集合中不具有类似的词。在一些实施例中,语言之间的差异是预期的,并且一种语言的词元可能不一定与另一种语言中的词元直接相关。
图3b示出了根据一些实施例的在关系映射期间本体的图300b。在使用图3b的映射词元之后,来自通用本体的词元之间的关系可以被映射并复制,以形成法语语言本体。如图300b中所示,法语本体是使用vehicle词元314、bike词元316等之间的“是...的一种类型”关系来建立的。不需要法语专家来组织在法语语料库中找到的词元之间的关系,而是通用本体的现有关系可以被用来自动生成法语本体中的对应关系。
图4a示出了根据一些实施例的用于使用同义词数据库生成本体的系统400a。语言分析流水线404可以接受语料库402(诸如web域)作为输入,以生成词元406。词元映射引擎408可以将生成的词元映射到通用本体412中的概念。词元映射引擎408还可以使用附加资源映射到词元,诸如在语言之间映射概念的市售或专有同义词数据库416。词元映射引擎408可以通过api或web接口420访问数据库416。接下来,关系映射引擎410可以重新使用来自通用本体412的关系,以生成如上所述的特定于最终语言的本体414。
图4b示出了根据一些实施例的用于使用语言翻译服务数据库生成本体的系统400b。系统400b的实施例与系统400a的实施例类似,不同之处在于api或web接口424使用web翻译服务422来生成语料库402的词元与通用本体412的词元之间的映射。
图5示出了根据一些实施例的用于生成用在自然语言处理中的本体的方法的流程图500。该方法可以包括接收第一语言的第一本体,第一本体具有词元和词元之间的关系(502)。第一本体可以是与语言无关的、利用关系链接在一起的词元概念的集合。第一本体可以特定于特定语料库,诸如web域或文档集合。在一些实施例中,可以使用语言分析流水线来生成第一本体,其中语言分析流水线从语料库中提取和过滤词元并且从语言专家接收词元之间的关系。
该方法还可以包括接收第二语言的第二词元集合(504)。第二语言可以与用来表达第一(或通用)本体的第一语言不同。第二词元集合可以以类似于第一本体的词元如何生成的方式从语言分析流水线生成。在一些实施例中,用于第一本体的语料库和用于第二词元集合的语料库可以从不同语言的相同语料库导出。该方法可以附加地包括将第二语言中的每个词元映射到第一语言的词元(506)。这个步骤可以通过将第二语言的词元翻译成第一语言的同义词集合、然后识别在第一本体的词元中出现的同义词来实现。最后,该方法还可以包括通过使用第一本体中的关系创建第二语言的词元之间的关系来生成第二语言的第二本体(508)。
应当认识到的是,图5中所示的具体步骤提供了根据本发明各种实施例的从通用本体生成本体的特定方法。还可以根据替代实施例执行其它步骤序列。例如,本发明的替代实施例可以以不同的次序执行上述步骤。而且,图5中所示的个体步骤可以包括可以以适于个体步骤的各种顺序执行的多个子步骤。此外,依赖于特定应用,可以添加或去除附加步骤。本领域普通技术人员将认识到许多变化、修改和替代。
本文描述的每种方法可以由计算机系统来实现。这些方法的每个步骤可以由计算机系统自动执行,和/或可以提供有涉及用户的输入/输出。例如,用户可以为方法中的每个步骤提供输入,并且这些输入中的每一个可以响应于请求这种输入的具体输出,其中输出由计算机系统生成。每个输入可以响应于对应的请求输出而被接收。此外,输入可以从用户接收、作为数据流从另一个计算机系统接收、从另一个计算机系统检索、从存储器位置检索、经网络检索、从web服务请求,等等。同样,输出可以作为数据流提供给用户、提供给另一个计算机系统、保存在存储器位置中、经网络发送、提供给web服务,等等。简而言之,本文所述的方法的每个步骤可以由计算机系统执行,并且可以涉及到计算机系统或来自计算机系统的可能涉及或不涉及用户的任何数量的输入、输出和/或请求。那些不涉及用户的步骤可以说是由计算机系统自动执行的,无需人为干预。因此,根据本公开内容将理解,本文所述的每个方法的每个步骤可以被更改,以包括到用户和来自用户的输入和输出,或者可以由计算机系统自动完成而无需人为干预,其中任何确定都由处理器进行。此外,本文所述的每个方法的一些实施例可以被实现为存储在有形的非暂态存储介质上以形成有形软件产品的指令集合。
图6绘出了用于实现实施例之一的分布式系统600的简化图。在所示实施例中,分布式系统600包括一个或多个客户端计算设备602、1304、606和608,这些客户端计算设备被配置为经由一个或多个网络610执行和操作客户端应用,诸如web浏览器、专有客户端(例如,oracleforms)等等。服务器612可以经由网络610与远程客户端计算设备602、604、606和608通信耦合。
在各种实施例中,服务器612可以适于运行由系统的组件中的一个或多个组件提供的一个或多个服务或软件应用。在一些实施例中,这些服务可以作为基于web或云的服务或者作为软件即服务(softwareasaservice,saas)模型提供给客户端计算设备602、604、606和/或608的用户。操作客户端计算设备602、604、606和/或608的用户又可以利用一个或多个客户端应用与服务器612交互,以利用由这些组件提供的服务。
在该图所绘出的配置中,系统600的软件组件618、620和622被示为在服务器612上实现。在其它实施例中,系统600的组件中的一个或多个组件和/或由这些组件提供的服务也可以由客户端计算设备602、604、606和/或608中的一个或多个来实现。操作客户端计算设备的用户然后可以使用一个或多个客户端应用来使用由这些组件提供的服务。这些组件可以用硬件、固件、软件或其组合来实现。应当认识到的是,各种不同的系统配置是可能的,这些配置可以与分布式系统600不同。因此,在该图中示出的实施例是用于实现实施例系统的分布式系统的一个示例,并不是要进行限制。
客户端计算设备602、604、606和/或608可以是运行诸如microsoftwindows
虽然示例性分布式系统600被示为具有四个客户端计算设备,但是任何数量的客户端计算设备都可以被支持。诸如具有传感器的设备等的其它设备可以与服务器612交互。
在分布式系统600中的(一个或多个)网络610可以是对本领域技术人员熟悉的、可以支持利用包括但不限于tcp/ip(传输控制协议/互联网协议)、sna(系统网络体系结构)、ipx(互联网数据包交换)、appletalk等任何各种商用协议的数据通信的任何类型的网络。仅仅作为示例,(一个或多个)网络610可以是局域网(lan),诸如基于以太网、记号环等的局域网。(一个或多个)网络610可以是广域网和互联网。它可以包括虚拟网络,包括但不限于,虚拟专用网(vpn)、内联网、外联网、公共交换电话网(pstn)、红外网络、无线网络(例如,在任何电气和电子协会(ieee)802.11协议套件、蓝牙和/或任何其它无线协议下操作的网络);和/或这些和/或其它网络的任意组合。
服务器612可以包括一个或多个通用计算机、专用服务器计算机(作为示例,包括pc(个人计算机)服务器、
服务器612可以运行操作系统,包括任何以上讨论的操作系统,以及任何商用的服务器操作系统。服务器612也可以运行任何各种附加的服务器应用和/或中间层应用,包括http(超文本传输协议)服务器、ftp(文件传输协议)服务器、cgi(公共网关接口)服务器、
在一些实现中,服务器612可以包括分析和整合从客户端计算设备602、604、606和608的用户接收到的数据馈送和/或事件更新的一个或多个应用。作为示例,数据馈送和/或事件更新可以包括,但不限于,
分布式系统600也可以包括一个或多个数据库614和616。数据库614和616可以驻留在各种位置中。作为示例,数据库614和616中的一个或多个可以驻留在服务器612本地的非暂态存储介质上(和/或驻留在服务器612中)。可替代地,数据库614和616可以远离服务器612,并且经由基于网络的或专用的连接与服务器612通信。在一组实施例中,数据库614和616可以驻留在存储区域网络(san)中。类似地,用于执行属于服务器612的功能的任何必要的文件可以根据需要存储在服务器612本地上和/或远程地存储。在一组实施例,数据库614和616可以包括适于响应于sql格式的命令来存储、更新和检索数据的关系数据库,诸如由
图7是根据本公开内容实施例的系统环境700的一个或多个组件的简化框图,通过该系统环境的一个或多个组件,由实施例系统的一个或多个组件提供的服务可以作为云服务提供。在所示的实施例中,系统环境700包括可由用户使用以与提供云服务的云基础设施系统702交互的一个或多个客户端计算设备704、706和708。客户端计算设备可以被配置为操作可以被客户端计算设备的用户使用来与云基础设施系统702交互,以使用由云基础设施系统702提供的服务的客户端应用,诸如web浏览器、专有客户端应用(例如,oracleforms)或一些其它应用。
应当认识到的是,在该图中绘出的云基础设施系统702可以具有除了所绘出的那些之外的其它组件。此外,在该图中示出的实施例只是可以结合本发明实施例的云基础设施系统的一个示例。在一些其它实施例中,云基础设施系统702可以具有比在该图中示出的组件更多或更少的组件、可以合并两个或更多个组件、或者可以具有不同的组件配置或布置。
客户端计算设备704、706和708可以是类似于上述用于602、604、606和608的那些设备。
虽然示例性系统环境700被示为具有三个客户端计算设备,但是任何数量的客户端计算设备都可以被支持。诸如具有传感器的设备等的其它设备可以与云基础设施系统702交互。
(一个或多个)网络710可以促进客户端704、706和708与云基础设施系统702之间的通信和数据交换。每个网络可以是对本领域技术人员熟悉的、可以支持利用任何各种商业协议的数据通信的任何类型的网络,包括上述用于(一个或多个)网络610的那些网络。
云基础设施系统702可以包括一个或多个计算机和/或服务器,其可以包括上述用于服务器612的那些服务器。
在某些实施例中,由云基础设施系统提供的服务可以包括可以让云基础设施系统的用户按需使用的托管的服务,诸如在线数据存储和备份解决方案、基于web的电子邮件服务、托管的办公套件和文档协作服务、数据库处理、受管理的技术支持服务等。由云基础设施系统提供的服务可以动态地扩展,以满足其用户的需求。由云基础设施系统提供的服务的具体实例在本文中被称为“服务实例”。一般而言,来自云服务提供商系统的、经由诸如互联网的通信网络对用户可用的任何服务被称为“云服务”。通常,在公共云环境中,构成云服务提供商的系统的服务器和系统与客户自己的办公场所服务器和系统不同。例如,云服务提供商的系统可以托管应用,并且用户可以经由诸如互联网的通信网络按需订购和使用应用。
在一些示例中,在计算机网络云基础设施中的服务可以包括对由云供应商提供给用户的存储、托管的数据库、托管的web服务器、软件应用或其它服务的受保护的计算机网络访问,或者如以其它方式在本领域中已知的。例如,服务可以包括通过互联网对云上远程存储的密码保护的访问。作为另一个示例,服务可以包括用于被联网的开发人员私人使用的基于web服务的托管的关系数据库和脚本语言中间件引擎。作为另一个示例,服务可以包括对在云供应商的网站上托管的电子邮件软件应用的访问。
在某些实施例中,云基础设施系统702可以包括以自助服务、基于订阅、弹性可扩展、可靠、高可用性并且安全的方式交付给客户的一套应用、中间件和数据库服务产品。这种云基础设施系统的示例是由本受让人提供的
在某些实施例中,云基础设施系统702可以适于自动供应、管理和跟踪客户对由云基础设施系统702提供的服务的订阅。云基础设施系统702可以经由不同的部署模型来提供云服务。例如,服务可以在公共云模型下提供,其中云基础设施系统702由销售云服务的组织拥有(例如,被oracle拥有)并且使得服务对一般公众和不同行业的企业可用。作为另一个示例,服务可以在私有云模型下提供,其中云基础设施系统702只为单个组织运营并且可以为该组织内的一个或多个实体提供服务。云服务也可以在社区云模型下提供,其中云基础设施系统702和由云基础设施系统702提供的服务被相关社区中的若干个组织共享。云服务也可以在混合云模型下提供,它是两种或更多种不同模型的组合。
在一些实施例中,由云基础设施系统702提供的服务可以包括在软件即服务(saas)类别、平台即服务(paas)类别、基础设施即服务(iaas)类别、或包括混合服务的其它服务类别下提供的一个或多个服务。客户经由订阅订单可以订购由云基础设施系统702提供的一个或多个服务。云基础设施系统702然后执行处理,以提供客户的订阅订单中的服务。
在一些实施例中,由云基础设施系统702提供的服务可以包括但不限于应用服务、平台服务和基础设施服务。在一些实例中,应用服务可以由云基础设施系统经由saas平台提供。saas平台可以被配置为提供属于saas类别的云服务。例如,saas平台可以提供在集成的开发和部署平台上构建和交付点播应用套件的能力。saas平台可以管理和控制用于提供saas服务的底层软件和基础设施。通过利用由saas平台提供的服务,客户可以利用在云基础设施系统上执行的应用。客户可以获取应用服务,而无需客户购买单独的许可证和支持。可以提供各种不同的saas服务。示例包括但不限于为大型组织提供用于销售绩效管理、企业集成和业务灵活性的解决方案的服务。
在一些实施例中,平台服务可以由云基础设施系统经由paas平台提供。paas平台可以被配置为提供属于paas类别的云服务。平台服务的示例可以包括但不限于,使组织(诸如
通过利用由paas平台提供的服务,客户可以采用由云基础设施系统支持的编程语言和工具,并且还控制所部署的服务。在一些实施例中,由云基础设施系统提供的平台服务可以包括数据库云服务、中间件云服务(例如,oraclefusionmiddleware服务)和java云服务。在一个实施例中,数据库云服务可以支持共享服务部署模型,其使得组织能够汇集数据库资源并且以数据库云的形式向客户提供数据库即服务。中间件云服务可以为客户提供开发和部署各种业务应用的平台,以及java云服务可以在云基础设施系统中为客户提供部署java应用的平台。
可以由云基础设施系统中的iaas平台提供各种不同的基础设施服务。基础设施服务促进底层计算资源(诸如存储装置、网络和其它基本计算资源)的管理和控制,以便客户利用由saas平台和paas平台提供的服务。
在某些实施例中,云基础设施系统702还可以包括基础设施资源730,用于提供用来向云基础设施系统的客户提供各种服务的资源。在一个实施例中,基础设施资源730可以包括执行由paas平台和saas平台提供的服务的硬件(诸如服务器、存储装置和联网资源)的预先集成和优化组合。
在一些实施例中,在云基础设施系统702中的资源可以由多个用户共享并且按需动态地重新分配。此外,资源可以分配给在不同时区中的用户。例如,云基础设施系统730可以使第一时区内的第一用户集合能够利用云基础设施系统的资源指定的小时数,然后使得能够将相同资源重新分配给位于不同时区中的另一用户集合,从而最大化资源的利用率。
在某些实施例中,可以提供由云基础设施系统702的不同组件或模块以及由云基础设施系统702提供的服务共享的多个内部共享服务732。这些内部共享服务可以包括,但不限于,安全性和身份服务、集成服务、企业储存库服务、企业管理器服务、病毒扫描和白名单服务、高可用性、备份和恢复服务、用于启用云支持的服务、电子邮件服务、通知服务、文件传输服务等。
在某些实施例中,云基础设施系统702可以在云基础设施系统中提供云服务(例如,saas、paas和iaas服务)的综合管理。在一个实施例中,云管理功能可以包括用于供应、管理和跟踪由云基础设施系统702接收到的客户的订阅等的能力。
在一个实施例中,如在该图中所绘出的,云管理功能可以由诸如订单管理模块720、订单编制模块722、订单供应模块724、订单管理和监视模块726以及身份管理模块728的一个或多个模块提供。这些模块可以包括一个或多个计算机和/或服务器或者利用一个或多个计算机和/或服务器来提供,该一个或多个计算机和/或服务器可以是通用计算机、专用服务器计算机、服务器场、服务器集群或任何其它适当的布置和/或组合。
在示例性操作734中,使用客户端设备(诸如客户端设备704、706或708)的客户可以通过请求由云基础设施系统702提供的一个或多个服务并且对由云基础设施系统702提供的一个或多个服务的订阅下订单来与云基础设施系统702交互。在某些实施例中,客户可以访问云用户界面(ui)、云ui712、云ui714和/或云ui716并经由这些ui下订阅订单。响应于客户下订单而由云基础设施系统702接收到的订单信息可以包括识别客户和客户打算订阅的由云基础设施系统702提供的一个或多个服务的信息。
在客户下订单之后,订单信息经由云ui712、714和/或716被接收。
在操作736,订单被存储在订单数据库718中。订单数据库718可以是由云基础设施系统702操作和结合其它系统元素操作的若干个数据库之一。
在操作738,订单信息被转发到订单管理模块720。在一些情况下,订单管理模块720可以被配置为执行与订单相关的计费和记帐功能,诸如验证订单,并且在通过验证时,预订订单。
在操作740,关于订单的信息被传送到订单编排模块722。订单编排模块722可以利用订单信息为客户下的订单编排服务和资源的供应。在一些情况下,订单编排模块722可以编排资源的供应,以利用订单供应模块724的服务支持订阅的服务。
在某些实施例中,订单编排模块722使得能够管理与每个订单关联的业务流程,并且应用业务逻辑来确定订单是否应当继续供应。在操作742,当接收到新订阅的订单时,订单编排模块722向订单供应模块724发送分配资源和配置履行订阅订单所需的那些资源的请求。订单供应模块724使得能够为由客户订购的服务分配资源。订单供应模块724在由云基础设施系统700提供的云服务和用来供应用于提供所请求的服务的资源的物理实现层之间提供抽象层。订单编排模块722可以因此与实现细节隔离,诸如服务和资源是实际上被实时供应还是预先被供应并且仅在请求时才进行分配/指定。
在操作744,一旦供应了服务和资源,就可以通过云基础设施系统702的订单供应模块724向客户端设备704、706和/或708上的客户发送所提供的服务的通知。
在操作746,可以由订单管理和监视模块726来管理和跟踪客户的订阅订单。在一些情况下,订单管理和监视模块726可以被配置为收集订阅订单中的服务的使用统计数据,诸如所使用的存储量、所传送的数据量、用户的数量、以及系统运行时间和系统停机时间的量。
在某些实施例中,云基础设施系统702可以包括身份管理模块728。身份管理模块728可以被配置为提供身份服务,诸如云基础设施系统702中的访问管理和授权服务。在一些实施例中,身份管理模块728可以控制关于希望利用由云基础设施系统702提供的服务的客户的信息。这种信息可以包括认证这种客户的身份的信息和描述那些客户被授权相对于各种系统资源(例如,文件、目录、应用、通信端口、存储器段等)执行哪些动作的信息。身份管理模块728也可以包括关于每个客户的描述性信息和关于如何和由谁来访问和修改描述性信息的管理。
图8示出了其中可以实现本发明各种实施例的示例性计算机系统800。系统800可以用来实现上述计算机系统中的任何一个。如图所示,计算机系统800包括经由总线子系统802与多个外围子系统通信的处理单元804。这些外围子系统可以包括处理加速单元806、i/o子系统808、存储子系统818和通信子系统824。存储子系统818包括有形的计算机可读存储介质822和系统存储器810。
总线子系统802提供了用于让计算机系统800的各种组件和子系统按意图彼此通信的机制。虽然总线子系统802被示意性地示为单条总线,但是总线子系统的可替代实施例可以利用多条总线。总线子系统802可以是若干种类型的总线结构中的任何一种,包括存储器总线或存储器控制器、外围总线、以及利用任何各种总线体系架构的局部总线。例如,这些体系架构可以包括工业标准体系架构(isa)总线、微通道体系架构(mca)总线、增强型isa(eisa)总线、视频电子标准协会(vesa)局部总线和外围组件互连(pci)总线,其可以实现为按ieeep1386.1标准制造的夹层(mezzanine)总线。
可以实现为一个或多个集成电路(例如,常规的微处理器或微控制器)的处理单元804控制计算机系统800的操作。一个或多个处理器可以包括在处理单元804中。这些处理器可以包括单核或多核处理器。在某些实施例中,处理单元804可以实现为一个或多个独立的处理单元832和/或834,其中在每个处理单元中包括单核或多核处理器。在其它实施例中,处理单元804也可以实现为通过将两个双核处理器集成到单个芯片中形成的四核处理单元。
在各种实施例,处理单元804可以响应于程序代码执行各种程序并且可以维护多个并发执行的程序或进程。在任何给定时间,要执行的程序代码中的一些或全部可以驻留在(一个或多个)处理器804中和/或存储子系统818中。通过适当的编程,(一个或多个)处理器804可以提供上述各种功能。计算机系统800可以附加地包括处理加速单元806,其可以包括数字信号处理器(dsp)、专用处理器等。
i/o子系统808可以包括用户接口输入设备和用户接口输出设备。用户接口输入设备可以包括键盘、诸如鼠标或轨迹球的指示设备、结合到显示器中的触摸板或触摸屏、滚轮、点拨轮、拨盘、按钮、开关、键板、具有语音命令识别系统的音频输入设备、麦克风以及其它类型的输入设备。用户接口输入设备可以包括,例如,诸如microsoft
用户接口输入设备也可以包括,但不限于,三维(3d)鼠标、操纵杆或指示杆、游戏板和绘图平板、以及音频/视频设备,诸如扬声器、数码相机、数码摄像机、便携式媒体播放器、网络摄像机、图像扫描仪、指纹扫描仪、条形码读取器3d扫描仪、3d打印机、激光测距仪、以及眼睛注视跟踪设备。此外,用户接口输入设备可以包括,例如,医疗成像输入设备,诸如计算机断层扫描、磁共振成像、正电子发射断层摄影术、医疗超声设备。用户接口输入设备也可以包括,例如,音频输入设备,诸如midi键盘、数字乐器等。
用户接口输出设备可以包括显示子系统、指示器灯或诸如音频输出设备的非视觉显示器等。显示子系统可以是阴极射线管(crt)、诸如利用液晶显示器(lcd)或等离子显示器的平板设备、投影设备、触摸屏等。一般而言,术语“输出设备”的使用旨在包括用于从计算机系统800向用户或其它计算机输出信息的所有可能类型的设备和机制。例如,用户接口输出设备可以包括但不限于,可视地传达文本、图形和音频/视频信息的各种显示设备,诸如监视器、打印机、扬声器、耳机、汽车导航系统、绘图仪、语音输出设备和调制解调器。
计算机系统800可以包括存储子系统818,其包括被示为当前位于系统存储器810内的软件元素。系统存储器810可以存储可加载并且可在处理单元804上执行的程序指令,以及在这些程序执行期间生成的数据。
依赖于计算机系统800的配置和类型,系统存储器810可以是易失性的(诸如随机存取存储器(ram))和/或非易失性的(诸如只读存储器(rom)、闪存存储器,等等)。ram通常包含可被处理单元804立即访问和/或目前正被处理单元804操作和执行的数据和/或程序模块。在一些实现中,系统存储器810可以包括多种不同类型的存储器,诸如静态随机存取存储器(sram)或动态随机存取存储器(dram)。在一些实现中,诸如在启动期间,包含有助于在计算机系统800内的元素之间传送信息的基本例程的基本输入/输出系统(bios)通常可以存储在rom中。作为示例,而不是限制,系统存储器810还示出了可以包括客户端应用、web浏览器、中间层应用、关系数据库管理系统(rdbms)等的应用程序812、程序数据814以及操作系统816。作为示例,操作系统816可以包括各种版本的microsoft
存储子系统818也可以提供用于存储提供一些实施例的功能的基本编程和数据结构的有形计算机可读存储介质。当被处理器执行时提供上述功能的软件(程序、代码模块、指令)可以存储在存储子系统818中。这些软件模块或指令可以被处理单元804执行。存储子系统818也可以提供用于存储根据本发明被使用的数据的储存库。
存储子系统818也可以包括计算机可读存储介质读取器820,其可以进一步连接到计算机可读存储介质822。可选地,与系统存储器810一起和组合,计算机可读存储介质822可以全面地表示用于临时和/或更持久地包含、存储、传送和检索计算机可读信息的远程、本地、固定和/或可移动存储设备加存储介质。
包含代码或代码的部分的计算机可读存储介质822也可以包括本领域已知或使用的任何适当的介质,包括存储介质和通信介质,诸如但不限于,以用于信息的存储和/或传输的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。这可以包括有形的计算机可读存储介质,诸如ram、rom、电可擦除可编程rom(eeprom)、闪存存储器或其它存储器技术、cd-rom、数字多功能盘(dvd)或其它光存储装置、磁带盒、磁带、磁盘存储或其它磁存储设备、或其它有形的计算机可读介质。这也可以包括非有形的计算机可读介质,诸如数据信号、数据传输,或者可以用来传送期望的信息并且可以被计算机系统800访问的任何其它介质。
作为示例,计算机可读存储介质822可以包括从不可移动的非易失性磁介质读取或写到其的硬盘驱动器、从可移动的非易失性磁盘读取或写到其的磁盘驱动器、以及从可移动的非易失性光盘,诸如cdrom、dvd和
通信子系统824提供到其它计算机系统和网络的接口。通信子系统824用作用于从其它系统接收数据和从计算机系统800向其它系统传送数据的接口。例如,通信子系统824可以使计算机系统800能够经由互联网连接到一个或多个设备。在一些实施例中,通信子系统824可以包括用于访问无线语音和/或数据网络的射频(rf)收发器组件(例如,利用蜂窝电话技术,诸如3g、4g或edge(用于全球演进的增强型数据速率)的先进数据网络技术,wi-fi(ieee802.11系列标准),或其它移动通信技术,或其任意组合)、全球定位系统(gps)接收器组件和/或其它组件。在一些实施例中,作为无线接口的附加或替代,通信子系统824可以提供有线网络连接(例如,以太网)。
在一些实施例中,通信子系统824也可以代表可能使用计算机系统800的一个或多个用户以结构化和/或非结构化的数据馈送826、事件流828、事件更新830等形式接收输入通信。
作为示例,通信子系统824可以被配置为实时地从社交网络和/或其它通信服务的用户接收数据馈送826,诸如
此外,通信子系统824也可以被配置为以连续数据流的形式接收本质上可能是连续的或无界的没有明确结束的数据,其中连续数据流可以包括实时事件的事件流828和/或事件更新830。生成连续数据的应用的示例可以包括例如传感器数据应用、金融报价机、网络性能测量工具(例如网络监视和流量管理应用)、点击流分析工具、汽车流量监视等。
通信子系统824也可以被配置为向一个或多个数据库输出结构化和/或非结构化的数据馈送826、事件流828、事件更新830等,其中这一个或多个数据库可以与耦合到计算机系统800的一个或多个流数据源计算机通信。
计算机系统800可以是各种类型中的一种,包括手持便携式设备(例如,
由于计算机和网络不断变化的本质,在该图中绘出的计算机系统800的描述旨在仅仅作为具体示例。具有比该图中所绘出的系统更多或更少组件的许多其它配置是可能的。例如,定制的硬件也可以被使用和/或特定的元素可以用硬件、固件、软件(包括applets)或其组合来实现。另外,可以采用到诸如网络输入/输出设备的其它计算设备的连接。基于本文所提供的公开内容和教导,本领域普通技术人员将认识到实现各种实施例的其它方式和/或方法。
在前面的描述中,为了说明的目的,阐述了众多具体细节,以便提供对本发明各种实施例的透彻理解。但是,对本领域技术人员降显而易见的是,可以在没有这些具体细节中的一些的情况下实践本发明的实施例。在其它情况下,众所周知的结构和设备以框图形式示出。
前面的描述仅仅提供示例性实施例,并不意在限制本公开内容的范围、适用性或配置。相反,示例性实施例的前面描述将为本领域技术人员提供实现示例性实施例的使能描述。应当理解的是,在不背离如所附权利要求中阐述的本发明的精神和范围的情况下,可以对元件的功能和布置进行各种改变。
在前面的描述中给出了具体细节,以提供对实施例的透彻理解。但是,本领域普通技术人员将理解的是,可以在没有这些具体细节的情况下实践实施例。例如,电路、系统、网络、处理和其它组件可以以框图的形式被示为组件,以便不以不必要的细节模糊实施例。在其它情况下,可以以不必要的细节显示众所周知的电路、处理、算法、结构和技术,以避免模糊实施例。
而且,应当指出的是,各种实施例可以被描述为被绘制为流程表、流程图、数据流程图、结构图或框图的处理。虽然流程图可以将操作描述为顺序的处理,但是许多操作可以被并行或并发地执行。此外,操作的顺序可以被重新布置。处理在其操作完成时被终止,但是可以具有未包括在附图中的附加步骤。处理可以与方法、函数、过程(procedure)、子例程、子程序等对应。当处理与函数对应时,其终止可以与函数返回到调用函数或主函数对应。
术语“计算机可读介质”包括但不限于便携式或固定存储设备、光存储设备、无线信道,以及能够存储、包含或携带(一条或多条)指令/或数据的各种其它介质。代码段或机器可执行指令可以表示过程(procedure)、函数、子程序、程序、例程、子例程、模块、软件包、类、或指令、数据结构或程序语句的任何组合。代码段可以通过传递和/或接收信息、数据、自变量、参数或存储器内容耦合到另一代码段或硬件电路。信息、自变量、参数、数据等可以经由包括存储器共享、消息传递、记号传递、网络传输等的任何合适的手段来传递、转发或发送。
此外,实施例可以通过硬件、软件、固件、中间件、微代码、硬件描述语言或其任意组合来实现。当用软件、固件、中间件或微代码来实现时,执行必要任务的程序代码或代码段可以存储在机器可读介质中。(一个或多个)处理器可以执行这些必要的任务。
在前面的说明书中,参照本发明的具体实施例描述了本发明的各方面,但是本领域技术人员将认识到本发明不限于此。上述发明的各种特征和方面可以单独使用或共同使用。另外,在不背离本说明书的更广泛的精神和范围的情况下,实施例可以用在超出本文所述的任何数量的环境和应用中。因而,说明书和附图应当被认为是说明性而不是限制性的。
此外,为了说明的目的,以特定的次序描述了方法。应当认识到的是,在替代实施例中,方法可以以与所描述的次序不同的次序执行。还应当认识到的是,上述方法可以由硬件组件执行或者可以以机器可执行指令的序列来体现,机器可执行指令可以用来使诸如通用或专用处理器或用所述指令编程的逻辑电路的机器执行所述方法。这些机器可执行指令可以存储在一个或多个机器可读介质上,诸如cd-rom或其它类型的光盘、软盘、rom、ram、eprom、eeprom、磁卡或光卡、闪存、或适于存储电子指令的其它类型的机器可读介质。可替代地,所述方法可以通过硬件和软件的组合来执行。