用于从电子数据结构中提取属性的注释系统的制作方法

文档序号:15362182发布日期:2018-09-05 00:56阅读:165来源:国知局

随着电子商务和电子库存系统变得更加广泛,对于提供和确保产品信息的准确性出现新的困难。例如,在电子库存中,每个单独的产品都包括许多不同的属性。属性可以包括识别号码、价格、品牌名称、详细描述等。因此,当库存的单个类别可能包括数千个单独的产品时,确保信息准确是一项复杂且耗时的任务,特别是考虑到输入信息是手动过程。

例如,在杂货店的情景中,被输入到电子库存中的每个产品可以包括诸如重量、味道、品牌名称、价格、每包装的件数等等之类的许多不同的属性。各种属性通常与数据库中的单独的列相关联并且因此信息由工作人员手动审查并输入到单独的列中。此外,因为产品描述是非结构化的并且不遵循任何特定的格式,所以它们可能包括语法错误、拼写错误和/或其他错误。因此,仅仅将信息复制到数据库中不能提供准确的和适当编目的信息。因此,在数据库中提供准确的产品描述是有许多复杂性的困难任务。



技术实现要素:

在本公开的一个方面中,公开了一种存储指令的非暂态计算机可读介质,这些指令在由计算设备的一个或多个处理器执行时使得计算设备至少进行以下操作:关联来自描述串的标记(token)与产品的定义的属性,其中所定义的属性被组织到电子库存数据库中的列中,其中关联标记包括识别所定义的属性中的哪些属性与标记匹配,以及使用注释串将标记映射到列,以指示所定义的属性与标记中的相应标记之间的匹配,其中产品中的每个产品与描述串和注释串中的相应的描述串和注释串关联,并且其中描述串中的每个描述串包括指示库存中的产品属性的字母数字字符的非结构化组合;通过根据所定义的属性和识别的标记之间的关联迭代地分析描述串和注释串,来生成用于标记中的未被识别的标记的建议的匹配;以及通过从描述串中提取标记并将标记插入到由注释串的映射所指定的列中来填充电子库存数据库。公开了一种执行类似功能的计算机实现的方法。

在非暂态计算机可读介质的另一个实施例中,使得计算设备填充电子库存数据库的指令包括使得计算设备进行以下操作的指令:通过从描述串自动提取标记并将标记存储到由注释串所识别的电子库存数据库的列中以针对产品中的每个产品在电子库存数据库中填充描述,来根据注释串结构化描述串,其中标记具有不同的长度,其中库存是零售业务的库存,并且其中边界标志分隔描述串的标记并且包括空格或非字母数字字符。

在上面的非暂态计算机可读介质的另一个实施例中,非暂态计算机可读介质还包括使得计算设备进行以下操作的指令:通过从存储介质中读取电子数据来访问包括用于库存类别中的产品的描述串的电子数据,并且其中描述串是不符合定义的协议的数据的非结构化串,其中所定义的属性与电子库存数据库的列关联并且包括多个产品的特性,以及其中关联标记初始化注释串以初始地识别标记与所定义的属性之间的匹配。

在本公开的另一个方面中,公开了一种计算系统,包括:注释模块,其被存储在非暂态计算机可读介质中并配置有用于关联来自描述串的标记与产品的定义的属性的指令,其中所定义的属性被组织到电子库存数据库中的列中,其中关联标记包括识别所定义的属性中的哪些属性与标记匹配,以及使用注释串将标记与列进行映射,以指示所定义的属性与标记中的相应标记之间的匹配,其中产品中的每个产品与描述串和注释串中的相应的描述串和注释串关联,并且其中描述串中的每个描述串包括指示库存中的产品的属性的字母数字字符的非结构化组合;推断模块,其被存储在非暂态计算机可读介质中并且被配置有用于如下操作的指令:通过根据由依据关联的统计模型定义的所定义的属性和识别的标记之间的关联迭代地分析描述串和注释串,来生成用于标记中的未被识别的标记的建议的匹配,其中生成所建议的匹配包括使用所建议的匹配来更新注释串,以将标记中的未被识别的标记与所定义的属性进行映射;以及结构模块,其存储在非暂态计算机可读介质中并且配置有用于如下操作的指令:通过从描述串中提取标记并将标记插入到由注释串的映射所指定的列中来填充电子库存数据库。

在计算系统的另一个实施例中,结构模块被配置为通过根据注释串结构化描述串来填充数据库,根据注释串结构化描述串包括从描述串中自动提取标记,并将标记存储到由注释串识别的电子库存数据库的列中,以针对产品中的每个产品填充电子库存数据库中的描述,其中标记具有不同的长度,其中库存是零售业务的库存,其中边界标志分隔描述串的标记并包括空格或非字母数字字符。

在另一个实施例中,计算系统还包括:通信模块,其被存储在非暂态计算机可读介质中,并配置有用于通过从存储介质读取电子数据来接收和访问包括用于库存的类别中的产品的描述串的电子数据的指令,并且其中描述串是不符合定义的协议的数据的非结构化串,其中所定义的属性与电子库存数据库的列关联并且包括多个产品的特性,以及其中关联模块配置有用于关联标记以初始化注释串以便初始地识别标记与所定义的属性之间的匹配的指令。

在计算系统的另一个实施例中,推断模块还被配置有用于通过分析注释串以验证注释串与用于描述串的定义的属性之间的关联的准确性来检测注释串中的错误的指令。

在计算系统的另一个实施例中,推断模块被配置有用于进行以下操作的指令:根据选择的分布将描述串和相应的注释串划分为训练集合和测试集合以提供两个单独的串集合作为电子输入,其中测试集合中的描述串被指派了不包括注释的测试注释串并且暂时将注释串中的原始注释串替换为测试集合中的描述串;根据如使用条件随机场模型从训练集合的注释串所建模的、训练集合的标记和所定义的属性之间的关联来分析测试集合和所定义的属性,其中分析测试集合新注释用于测试集合的描述串的测试注释串以建议测试集合的描述串中的标记与所定义的属性之间的匹配;以及将测试注释串与原始注释串进行比较以根据测试集合中的新识别的标记生成建议的匹配。

在另一个实施例中,公开了一种由计算设备执行的计算机实现的方法,该计算设备包括被配置为用于从描述串提取属性的处理器。该方法包括:通过通信网络从远程设备接收包括描述串的电子数据流,其中描述串是描述库存中的产品属性的字母数字字符的非结构化组合;至少由处理器通过识别所定义的属性中的哪些属性与标记相匹配来关联来自描述串的标记与电子库存数据库中定义的属性,以将标记链接到与所定义的属性关联的数据库的列,其中关联标记使用用于产品中的每个产品的注释串来跟踪和注释链接;至少由处理器通过使用条件随机场模型根据识别的标记与所定义的属性之间的已知关联而生成用于未被识别的标记的建议的匹配,来迭代地更新用于标记中的未被识别的标记的注释串;以及至少由处理器通过将来自描述串的标记自动地存储到由注释串所识别的列中,来根据注释串使用来自描述串的所识别的标记填充数据库。

附图说明

并入说明书并构成说明书的一部分的附图示出了本公开的各种系统、方法和其他实施例。将理解的是,所示出的元素边界(例如,方框、方框组或其他形状)表示边界的一个实施例。在一些实施例中,一个元素可以被实现为多个元素或者多个元素可以被实现为一个元素。在一些实施例中,被示为另一个元素的内部组件的元素可以被实现为外部组件,反之亦然。此外,元素可以不是按比例绘制的。

图1示出了与从非结构化描述串提取属性相关联的计算系统的一个实施例。

图2示出了与为电子库存数据库中的产品描述提供结构化属性相关联的方法的一个实施例。

图3示出了与注释串以将描述串中的值与所定义的属性链接相关联的方法的一个实施例。

图4示出了与生成定义的属性与非结构化描述串中的值之间的建议的匹配相关联的方法的实施例。

图5示出了与校正描述串的注释中的错误相关联的方法的实施例。

图6示出了配置有所公开的示例系统和方法的计算系统的实施例。

具体实施方式

本文描述了计算机化的系统和方法,该系统和方法将具有关于产品的非结构化属性信息的描述串转换成数据库中的结构化条目,该数据库关联属性信息与适当的列。在一个实施例中,计算系统访问数据结构并从数据结构中读取用于被分类在单个类别中的产品的以描述串形式的属性信息。类别例如是酸奶、奶酪、男士领带或某些其他产品类别。在任一情况下,产品通常与实物关联(relatedinkind)。然而,描述串是非结构化的,因为包含在描述串中的信息由各种不同的源提供,并且不被控制以符合任何标准。也就是说,例如,描述串不是以系统的方式被组织以使得可以根据已知的布置、标签或其他已知格式来提取单独的属性。描述串不符合任何具体格式、协议或其他布局。因此,描述串是非结构化的。

通常,用于每个产品的描述串是例如具有由边界标志(即,非字母数字字符或空格)分隔的每个单独元素(在本文中也被称为标记(token))的字母数字字符串。然而,描述串中的属性顺序、具体属性的格式以及缩写的使用是未知的或者根据格式标准以其他方式被控制。因此,由于描述串是非结构化的,因此从描述串中提取属性是困难的。

因此,在一个实施例中,计算系统被配置为识别描述串中的属性并将属性与数据库的列进行映射,使得计算系统可以从描述串中提取属性。以此方式,计算系统被编程为使用来自非结构化描述串的属性来填充数据库以在数据库中提供产品描述。现在将讨论与识别和提取属性相关联的系统和方法。

参考图1,示出了计算系统100的一个实施例。计算系统100被实现为执行以下功能:将产品属性与电子/计算机化的库存数据库110中的列进行映射/链接,以识别属性并将属性组织到电子/计算机化的库存数据库110中。

在一个实施例中,计算系统100是包括可执行的应用或分布式应用集合的计算/数据处理系统。应用和计算系统100可以被配置为与基于云的网络系统、软件即服务(saas)架构或其他类型的联网计算解决方案一起操作或被实现为基于云的网络系统、软件即服务(saas)架构或其他类型的联网计算解决方案。在一个实施例中,计算系统100是集中式的服务器侧应用,该服务器侧应用至少提供本文所公开的功能并且由许多用户通过计算机网络经由与计算系统100通信的(充当服务器的)计算设备/终端进行访问。

在一个实施例中,本文描述的组件中的一个或多个组件被配置为存储在非暂态计算机可读介质中的程序模块。程序模块被配置有存储的指令,这些存储的指令在至少由处理器执行时使得计算设备执行如本文所述的对应的(一个或多个)功能。

因此,在一个实施例中,计算系统100包括若干模块以及存储描述串130和注释串140的存储器120。例如,计算系统100包括注释模块150、推断模块160、结构模块170和通信模块180,这些模块一起操作以从描述串130中提取非结构化/未格式化的属性并且以结构化的形式(即,作为数据库表)将属性输出到电子库存数据库110中。

因此,在一个实施例中,模块150、160、170和180被实现为专用硬件处理器以将非结构化属性转换成结构化属性,并将结构化属性作为电子数据结构电子地输出到电子库存数据库110。在另一个实施例中,模块150、160、170和180用来控制硬件处理器以完成转换非结构化属性。此外,模块150、160、170和180对存储在存储器120和数据库110中的电子数据进行操作。在一个实施例中,存储器120是随机存取存储器(ram)、硬盘驱动器(hdd)或适于存储电子数据结构的另一种存储器,其中该电子数据结构包括描述串130、注释串140和用于如本文所讨论的提取和转换的其他信息。

此外,电子库存数据库110存储电子数据结构,这些电子数据结构包括以列和行的结构化形式的产品信息,使得该信息可以被索引并用于各种计算机化的任务。通常,电子库存数据库110将数据以电子格式存储在非暂态介质中。数据包括例如用于零售业务的库存中的多个产品的信息,零售业务诸如杂货店、百货商店、电子商务网站或其他零售机构。

另外,在一个实施例中,根据产品的单独属性定义单独的列。例如,数据库110包括用于识别号码(库存单位(sku))、品牌名称、重量、营养信息等的单独的列,以便分隔每个产品的不同信息。当然,取决于产品的特定类别,可以存在与所列出的属性不同的定义的属性和对应的数据库列。在任一情况下,数据库110包括用于每个属性的单独的列,计算系统100用从描述串130中识别的属性来填充这些单独的列。

在一个实施例中,计算系统100通过通信网络190获得描述串130。也就是说,计算系统100是通过通信网络190通信的硬件设备。通信网络190是例如因特网、广域网(wan)或类似的网络。在一个实施例中,计算系统100由通信模块180控制以使用嵌入在计算系统100中的网络接口卡(nic)或类似设备通过通信网络190进行通信,以与远程设备交换信息(例如,描述串130)。

计算设备100的其他方面将结合图2-图5一起讨论。图2的方法200示出了原始非结构化描述串如何被接收、注释、更新、验证、并且然后被结构化/组织到电子库存数据库110中的整体视图。方法300、400和500提供了对方法200的元素220、230和240的详细描述。因此,将在一般上下文中讨论方法200的元素中的每个元素,随后分别是与图3、图4和图5一起的对元素220、230和240的详细描述。此外,将从图1的计算系统100的角度来讨论图2至图5。

因此,方法200可以由计算系统100执行,并且在210处响应于通过通信网络190从远程设备接收电子数据流来访问存储在存储器110中的描述串130而启动。在一个实施例中,通信模块180通过检测来自到网络190的链路的电子通信信号、识别来自该信号的数据、缓冲该数据并随后将该数据存储在存储器120中来接收数据流。

通常,数据流可以是来自零售商的、请求将多个产品输入到电子库存数据库110中的库存类别中的通信。因此,数据至少包括描述多个产品的描述串130。在一个实施例中,描述串130是指示多个产品的属性的字母数字字符的组合。此外,如先前所指定的,描述串130是不符合定义的协议的数据的非结构化串。也就是说,描述串130不包括用于指示哪些字符与数据库110中的哪个属性相关联的标识符和/或不具有用于识别属性的特定排序或其他组织。

描述串130是字符串。在一个实施例中,描述串130包括各个标记(即,构成属性的单词和字符)之间的边界标志。然而,应该注意,边界标志在分隔一些属性时并不被认为是一致的,并且因此一些属性可以连续出现而没有边界标志。尽管如此,边界标志之间的一系列连续字符被定义为单个标记。通常,注释模块150和推断模块160对标记进行操作。

因此,描述串130中的每个描述串通常包括多个标记。标记具有不同的长度。也就是说,标记可以包括不同数量的字母和/或数字字符(即,字母数字字符)。另外,分隔标记的边界标志是非字母数字字符,诸如空格和其他符号(例如,%、#、/)。因此,在一个实施例中,通信模块180通过读取在存储器110中存储描述串的电子数据结构并在必要时将描述串传送给模块150、160和170来访问描述串130。

在220处,注释模块150将标记中的一些标记与数据库110中定义的属性(即,列)相关联。随后将参考图3和方法300更详细地讨论220处的关联。然而,通常,将来自描述串130的标记与电子库存数据库110中所定义的属性相关联充当例如初始化,以部分地填充注释串140。

也就是说,例如,因为随后的元素可以使用从标记和所定义的属性之间的已知关系得到的关联,所以识别标记和所定义的属性之间的至少一些匹配可以改进例如在230处生成匹配。在任一情况下,在220处,注释模块150识别所定义的属性中的哪些属性与标记匹配以将标记的至少一部分与所定义的属性进行映射/链接。

在一个实施例中,注释模块150使用注释串140来识别描述串130中的标记并将标记与所定义的属性进行映射。例如,注释串150中的每个注释串包括用于描述串130中的每个描述串的每个值的占位符。也就是说,注释串140与描述串130以一一对应的方式对应。因此,描述串130中的每个描述串具有对应的注释串140。

另外,注释串140中的每个注释串包括与相应描述串相同数量的字符。当注释模块150识别描述串130中的标记与数据库110中定义的属性之间的匹配时,使用所定义的属性的唯一标识符来标记/注释相应注释串140中的对应位置以映射描述串140和所定义的属性之间的匹配。以此方式,计算系统100使用注释串140来跟踪标记中的哪些标记已被识别以及哪些仍未被识别。注释串140的示例将在随后更详细地讨论并且在表1和表4中示出。

在230处,推断模块160为未被识别的标记生成建议的匹配。也就是说,在220处完成关联后,标记中的部分标记被识别,而其余的标记未被识别(即,与数据库110中的列/属性不匹配)。因此,为了进一步识别标记,推断模块160根据识别的标记与所定义的属性之间的已知关联来推断用于未被识别的标记的全部或部分的匹配。在一个实施例中,推断模块160使用依据关联的统计模型来推断(即,推导)匹配。例如,推断模块160可以执行至少部分地基于条件随机场(crf)分析的机器学习例程来生成统计模型。

随后,推断模块160通过例如使用注释串140和描述串130作为电子输入来训练(即,生成)模型而生成建议的匹配。推断模块160使用来自模型的识别的关联和其他信息来生成用于未被识别的标记的建议的匹配。此外,在一个实施例中,用于未被识别的标记的建议的匹配被审查、并且接受或拒绝。例如,所建议的匹配可以被转换到图形用户界面(gui)中并被显示给用户以供验证。因此,通信模块180可以通过通信网络190向远程设备提供具有所建议的匹配的gui,从而使得远程设备向用户显示具有所建议的匹配的gui。此后,用户可以选择性地验证所建议的匹配中的哪些建议的匹配是正确的(即,哪些建议的匹配应当被用来更新注释串以及将未被识别的标记映射到数据库110中的列)。

通常,关联可以包括与某些属性相关联的标记的典型长度、某些字符的存在、用于某些属性的描述串中的字符的相对位置等等。以此方式,推断模块160提供对于匹配的建议,这些建议被用来迭代地更新注释串并将未被识别的标记映射到数据库110中的列。

此外,尽管随后将结合方法400来讨论框230的更多细节,但是应该理解,更新注释串140迭代地出现,其中每个随后的迭代对从当前建议的匹配收集的模型应用改进,以便用每个随后的迭代来改进匹配。因此,推断模块160可以迭代地生成建议的匹配以更新注释串140直到例如推断模块160不能生成在未被识别的标记和定义的属性之间的任何新的匹配为止。

在240处,注释模块150检测注释串140中的错误。在一个实施例中,注释模块150通过分析230处的注释串以验证描述串140与所定义的属性之间的映射的准确性,来执行一致性检查。因此,在一个实施例中,如在230处完成的原始注释串140与完全由推断模块160生成的新注释串进行比较。两组注释串之间的不一致例如被识别为可能的错误。

此外,在一个实施例中,所识别的可能的错误可以被审查并且被接受或拒绝。例如,可能的错误可以被转换到图形用户界面(gui)中并被显示给用户以供验证。因此,通信模块180可以通过通信网络190向远程设备提供具有错误的gui,从而使得远程设备向用户显示具有错误的gui。此后,用户可以选择性地验证这些错误中的哪些错误是有效的(即,哪些注释应该由于错误而被替换)。因此,gui根据被传送回通信模块180的、来自用户的交互来生成控制输入。随后,计算系统100根据控制输入来更新注释串140。随后将与方法500一起讨论错误检测的其他方面。

在250处,结构模块170将框220-240的结果输出到电子库存数据库110。在一个实施例中,结构模块170使用注释串140来将来自相应描述串130的属性提取到电子数据结构中,该电子数据结构例如是数据库表。例如,数据库表包括与由电子库存数据库110中所指定的每个定义的属性相关联的单独的列。因此,结构模块170使用注释串140来从描述串130中提取所定义的属性的值(例如,标记)并将值存储在表的适当列中。

以此方式,结构模块170通过将来自描述串130的属性组织并链接到适当的列中来结构化描述串130,使得属性可以被识别并在数据库110中被使用。此后,结构模块170将表存储在数据库110中以使用有组织的格式的相关信息来填充产品的描述。因此,计算系统100根据方法200操作,以接收/访问非结构化描述串中的属性信息,并将描述串转换成库存数据库110中的数据库表,以使得属性可以被索引、分类、查询以及以其他方式被计算机化以用于电子应用。

参考图3,示出了方法300。如先前所解释的,方法300示出了关于图2的框220的附加细节。因此,在一个实施例中,方法300由注释模块150执行。

因此,在305处,注释模块150创建注释串140。在一个实施例中,注释模块150通过在存储器120中生成电子数据结构来创建注释串,该电子数据结构包括与描述串130中的每个描述串相关联的单独的字符串。另外,注释模块150使用指定描述串130中的标记全部未被识别的值来初始化注释串140中的每个注释串。

表1示出了注释模块150生成并初始化注释串140之后的三个单独的描述串和对应的注释串的示例。表1中的描述串与酸奶类别中的三个单独的产品相关联。此外,表1示出了每个注释串140如何包括与相应描述串130的字符的一一对应。注释串中的值“o”是用于指示相关联的字符是边界标志或者标记的一部分未被识别的值。尽管在本示例中使用“o”,但是设想的是可以使用任何唯一的字符。

在310处,注释模块150分析描述串130以确定标记频率。标记频率例如是描述串130中每个不同标记的出现次数。通常,标记被定义为一组连续的字母或数字字符,它们由在本文也被称为边界标志的非字母数字字符(例如,“%”,“#”,“/”,“?”,“”)与描述串中的其他字符分隔。因此,不同的标记是通过边界标志与其他字符分隔或者例如作为数字和字母字符之间的切换的任何唯一的字符集合。

相应地,注释模块150通过针对不同标记来扫描(即,解析)描述串130、将不同的标记与字符串中的标记进行比较以及例如维护用于不同标记的每个匹配的计数来确定标记频率。

之后,在315处,注释模块150通过根据用于不同标记的标记频率过滤标记来列出标记。因此,在一个实施例中,注释模块150根据标记频率对不同标记进行排序,并在列表中输出经排序的不同标记。在一个实施例中,列表由通信模块180通过通信网络190传送,从而使得列表被显示在远程设备的gui上以作为对用户的警报或其他提示。

表2示出了用于三个描述串的组的标记的示例列表。如示例列表中所看到的,标记“gr”具有最高的标记频率3,列表中接下来是具有低标记频率的其他标记。尽管在表2的示例中列出了所有标记,但是在一个实施例中,注释模块150可以只列出频率大于n的标记以便显示更感兴趣的标记。

在320处,注释模块150根据标记控制输入修改注释串。在一个实施例中,注释模块150经由通信模块180从远程设备上的gui接收标记控制输入。在另一个实施例中,标记控制输入可以根据定义的标记的关联和/或由用户通过计算系统100的i/o端口进行的电子输入自动生成。在还有的其他实施例中,标记控制输入根据用于将标记与属性匹配的定义的规则自动生成。

在任一情况下,标记控制输入将标记的至少部分与所定义的属性相关联。在一个实施例中,当不同的标记与所定义的属性相关联时,注释模块150将唯一的标签指派给不同的标记。表3示出了被指派给具有大于2的标记频率的每个不同标记的标签(即,唯一标识符)。

因此,注释模块150在对应于不同标记的位置处用被加标签的不同标记来注释(即,标注)注释串。在一个实施例中,注释模块150通过修改注释串140的数据结构中对应于如根据标记控制输入所识别的被加标签的标记的位置来进行注释。

表4中示出了修改注释串140的一个示例。表4示出了与表1和表2中所示的相同的三个描述串。在表4中,对应的注释串已由注释模块150修改以反映被加标签的标记。应该注意,产品的描述串中的每个字符在注释串中具有对应的字符,该对应的字符指示用于标记的识别标签或者指示标记如最初初始化的那样未被识别(即,“o”)。

继续方法300,方法300的元素325-345一般地示出了注释串如何被细化(refine)。也就是说,一旦注释串已经被初始地注释以将标记中的至少一些标记和数据库110的定义的属性进行映射/链接,则注释模块150细化注释串以进一步识别所定义的属性中的哪些属性对应于未被识别的标记。

在325处,注释模块150通过根据相邻标记生成有向图来发起对注释串140的细化。在一个实施例中,注释模块150通过以下操作来生成有向图:在存储器120中生成电子数据结构(例如,链表、树结构)以存储相邻标记的关系并随后使用定义有向图的标记之间的关系来填充电子数据结构。

此外,本公开内所使用的有向图是单个描述串中的两个相邻标记的任何组合。因此,每个有向图包括第一标记和第二标记。由于方法300的一般目的是将标记与所定义的属性相关联,因此注释模块150生成有向图,在该有向图中第一标记是识别的标记并且第二标记未被识别。以此方式,可以分析标记以及相邻标记之间的关联的进一步分析,该分析可以提供对未被识别的标记和与所识别的标记的相同的属性是否相关联的见解。

因此,在330处,注释模块150分析有向图以确定不同的有向图(即,不同的标记对)的有向图频率。除了对有向图操作而不是对单独的标记操作之外,注释模块150在框330处执行与框310的功能类似的功能。因此,在330处,注释模块150扫描描述串130以用于匹配不同的图,并维护用于每个不同有向图的有向图频率的计数。以此方式,可以确定每个不同有向图的出现次数。

在335处,注释模块150通过根据有向图频率过滤有向图来列出有向图。在一个实施例中,注释模块150根据有向图频率对不同的有向图进行排序并将经排序的有向图输出到列表中。在一个实施例中,列表由通信模块180通过通信网络190传送,从而使得列表作为对用户的警报或其他提示显示在远程设备的gui上。

表5示出了来自先前的表1-表4的示例的延续。一般而言,有向图提供了对整个有向图(即,多个标记)应当被一起注释为单个属性的情况的见解。例如,包括两个标记而不是单个标记的品牌名称可以在分析有向图后被完全注释。在表5中,标记1(token1)和标记2(token2)的组合表示有向图。

在340处,注释模块150通过根据有向图控制输入用第一标记的注释替换第二标记的注释来修改注释串140。在一个实施例中,注释模块150经由通信模块180从远程设备上的gui接收有向图控制输入。在另一个实施例中,有向图控制输入可以根据有向图的定义的关联和/或由用户通过计算系统100的i/o端口进行的电子输入自动生成。在任一情况下,注释模块150使用有向图控制输入来关联与相同的定义的属性对应的有向图内的标记。

表6将有向图控制输入示为“批准”列。在表6的示例中,有向图控制输入已经指示批准“apple”和“strawb”的组合。也就是说,批准指示用于标记“strawb”的标签(即,标签“f”)和对应的定义的属性也适用于标记“apple”。因此,如表7所示,注释模块150更新用于包括有向图的描述串的对应的注释串以反映所识别的标记。

以此方式,描述串130的注释被细化以进一步将未被识别的标记与电子库存数据库110的定义的属性相关联。

尽管讨论了用于识别进一步的标记的注释串140的单个细化,但是当然,从框325-345细化注释串140可以迭代地出现,直到例如最高频率被部分注释的有向图(即,具有一个识别的标记和一个未被识别的标记的有向图)的频率满足阈值量(例如,<n)或者没有进一步的有向图被批准用于进行注释替换。

此外,在345处,注释模块150生成指示有向图中的哪些有向图不被批准用于替换注释的未被批准的有向图的列表(即,如表6中所列出的未被批准的有向图)。当进行细化的随后的迭代时,未被批准的有向图可以从列表中隐藏,因为它们已经被针对批准进行审查。因此,当在335处进行随后的迭代时,未经批准的有向图的列表可以简化列表。

在方法300完成之后,计算系统100继续对应于方法400的方法200的框230。方法400通常在方法300完成后由计算系统100的推断模块160执行以根据从注释串140和描述串130推导出的关联来生成建议的匹配。以此方式,如由注释串140所累积的描述串的字符与标记之间的关系被用于进一步识别标记。

因此,在410处,推断模块160通过将多个产品划分为训练集合和测试集合来发起方法400。在一个实施例中,在410处,该划分包括将用于第一组产品的描述串和注释串分组为训练集合,并将用于第二组产品的描述串和注释串分组为测试集合。随后的框产生用于测试集合中的描述串的新的测试注释串,这将在随后更详细地讨论。新的测试注释串与来自注释串140中的原始测试注释串进行比较以找到标记和属性的新的匹配。

另外,在一个实施例中,推断模块160根据选择的分布将产品(即,描述串和注释串)进行划分/分组,以提供字符串的两个单独的集合作为到随后的框420-440的电子输入。用于划分产品的所选择的分布可以包括若干不同选项中的一个或多个。例如,产品可以被随机划分为两个集合、根据注释串的注释质量(例如,训练集合中注释的较高百分比相对于测试集合中的较低百分比)划分和/或一次根据单个属性进行划分。

表9示出了将产品划分到集合中的一个示例。在表9中,推断模块160根据属性在集合之间对字符串进行分组。也就是说,推断模块160将具有用于品牌属性的识别的标记的描述串分组到训练集合中,而将没有用于品牌属性的识别的标记的描述串分组到测试集合中。

在一个实施例中,所选择的分布被选择以创建包括具有可用于机器学习的关联的注释串的训练集合。例如,来自训练集合注释串的关联和更完整的信息由推断模块160用来根据表示描述串130与数据库110的定义的属性之间的匹配的关联和其他数据来训练统计模型。

在任一情况下,使用方法400的每个单独迭代在410处将产品划分为组。此外,取决于如由预先选择的分布所指定的选择,随后的迭代可以使用相同的划分或不同的划分(例如,根据不同的属性或不同的选项)。

在产品被划分为集合之后,推断模块160在420处建议测试集合的标记与所定义的属性之间的匹配。在一个实施例中,推断模块160根据训练集合的标记与所定义的属性之间的关联来推断匹配。

例如,作为用于框420的启动动作,推断模块160使用机器学习技术来对来自训练集合中的注释串140和训练集合的描述串130的信息进行建模。在一个实施例中,机器学习技术包括对训练集合使用条件随机场(crf)分析。推断模块160通过解析、扫描和以其他方式分析训练集合以识别训练集合中的数据元素之间的模式/关联来执行crf分析。训练集合通常充当体现属性之间的模式的示例的样品集合。因此,推断模块160使用crf分析来在字符级别学习(1)属性的值和特征、以及(2)属性/标记的相邻字符之间的关系/关联。

也就是说,推断模块160生成电子数据结构,该电子数据结构对属性的值和特征以及用于匹配所定义的属性的识别的标记的相邻字符之间的关系/关联进行建模。随后,推断模块160应用模型中的信息来生成测试集合中的描述串130的标记与数据库110中的列的定义的属性之间的建议的匹配。

例如,训练集合的crf分析学习用于每个属性的一些实际值(即,在训练集合中相关的值)。另外,crf分析还学习属性的特征,诸如,用于属性的值的典型长度(例如,度量单位的长度相对于品牌名称的长度)、与某些属性相关联的值是否包括数字字符(例如,体积、重量等)以及用于某些属性的值在描述串中的相对位置(例如,在开始处出现的品牌值相对于在结尾处的大小)。

此外,推断模块160还通过解析和扫描训练集合数据来执行crf分析,以学习某些字符是否与某个属性相关联、相邻字符可能与哪个属性相关联等等。作为示例,推断模块160可以指示在一系列数字之后的接下来的字母标记可能是度量单位。在任一情况下,推断模块160从训练集合生成并收集表征与某些属性匹配的标记的概率的数据,并生成存储在存储器120中的统计模型。

此后,推断模块160使用模型来推断匹配,并且新注释用于测试集合的描述串130的测试注释串。以此方式,推断模块160生成用于测试集合的描述串130中的每个描述串的新的注释串,并且建议测试集合的描述串130中的标记与所定义的属性之间的可能匹配。

作为框420的结果,推断模块160根据所建议的匹配来注释新的测试注释串。因此,推断模块160可以将新的测试注释串存储在存储器120中。

在430处,推断模块160将在420处产生的新的测试注释串与测试集合中的用于产品的原始注释串140进行比较。将来自测试的注释串与原始注释串进行比较识别用于测试集合中的先前未被识别的标记的定义的属性。

表10示出了推断模块160如何在测试字符串上自动注释品牌属性,该品牌属性在用于该产品的原始注释串中先前未被识别。因此,在430处,当推断模块160比较字符串时,新识别的标记作为匹配被建议。

在440处,推断模块160选择性地将用于来自新测试注释串的新识别的标记的注释记录到原始注释串140。在一个实施例中,推断模块160可以列出来自430的所推断的匹配并提供列表以供批准。在一个实施例中,列表由通信模块180通过通信网络190传送,从而使得列表显示在远程设备的gui上以作为对用户的警报或其他提示。

此外,在一个实施例中,推断模块160经由通信模块180从远程设备上的gui接收批准控制输入。在另一个实施例中,可以根据定义的规则(例如,始终批准推断的匹配、当相同匹配的次数超过阈值时批准等)和/或由用户通过计算系统100的i/o端口进行的电子输入自动生成批准控制输入。在任一情况下,批准控制输入控制在框420处产生的建议的匹配是否被记录到原始注释串140。

在450处,推断模块160确定来自框420的建议的匹配的数量是否满足定义的阈值。所定义的阈值指示条件,诸如,从执行方法400没有产生进一步的推断的匹配或者建议的匹配低于定义的数量。通常,所定义的阈值被选择以使得推断模块160迭代地生成建议的匹配并且更新注释串直到例如没有进一步的改进被获得为止。

因此,在一个实施例中,推断模块160被配置为重复框410-450以针对很多迭代来进一步更新注释串140。通常,推断模块160重复方法400,因为在420处,被记录的每个新识别的标记随后被用于更新模型。因此,每个随后的迭代包括用于推断附加匹配的改进的模型数据。因而,随后的迭代可能会建议用于标记的先前错过的匹配。以此方式,推断模块160迭代地分析字符串以改进标记的识别并且因此还改进属性的提取。

方法500描述如在图2的240处简要描述的检测注释串140中的错误的方面。此外,方法500在若干方面与方法400类似。例如,方法500的一般意图是识别用于注释串的定义的属性与标记之间的匹配。也就是说,方法400的结果例如是所有注释串140的完整注释。因此,方法500寻求通过重新生成注释来识别注释串140中的差异。例如,计算设备100,并且更具体地,推断模块160,执行方法500以使用先前所讨论的crf分析来识别新的测试注释串。以此方式,推断模块160产生注释串的附加集合以交叉验证原始注释串140,并且检查注释的一致性以验证如从方法400提供的注释串140与定义的属性之间的关联的准确性。

如所陈述的,方法500包括与方法400类似的若干方面。因此,为了简洁起见,一般将往回参考方法400,同时指出方法500和方法400之间的区别。

在510处,推断模块160通过将描述串和相应的注释串划分成训练集合和测试集合来发起方法500。如针对方法400的410所讨论的,将字符串划分成训练集合和测试集合通常包括将字符串中的一些字符串分组到每个集合中并且初始化用于测试集合中的每个描述串的测试注释串。类似地,在510处,描述串和注释串被划分成相应的组,并且为测试集合中的描述串创建新的测试注释串。

然而,在510处,产品例如被随机地划分成两个集合。这是因为来自描述串130的标记已经在注释串140中被注释,如上面使用方法400所讨论的。因此,根据其他指定的选项来划分产品不一定会改进方法500的操作,因为注释串140已经完成。

在520处,如针对框420所指定的,推断模块160推断测试集合的标记与定义的属性之间的匹配。520与420之间的主要区别在于在520处推断模块160使用训练和crf分析来识别先前识别的标记与所建议的匹配之间的差异,而不是如在420处那样识别新的标记。这是因为先前使用方法400识别了标记,并且方法500检测错误,而不识别新的标记。因此,推断模块160在520处新注释/映射用于测试集合的所有标记以提供新测试注释串,以用于在530处进行比较。

继续方法500,在530处,推断模块160将测试注释串与用于测试集合中的产品的原始注释串140进行比较。530处的比较识别了原始注释串140与生成的用于测试集合中的产品的新测试注释串之间的建议的错误。推断模块160将建议的错误存储在列表中或以其他方式显示建议的错误以供随后批准/不批准。

在540处,推断模块160针对所建议的错误选择性地校正原始注释串140。在一个实施例中,推断模块160接收指示是否校正所建议的错误中的每个错误的错误控制输入。在一个实施例中,错误控制输入指示来自负责编辑属性的一组用户的众包的(crowdsourced)批准/不批准。另外,在另一个实施例中,推断模块160可以自动校正所有建议的错误,或者当例如相同错误的数量超过阈值时校正建议的错误。以此方式,被不正确地注释的标记被识别并被校正,以便提高从描述串130中提取属性的准确性。

在550处,所定义的阈值被检查。在一个实施例中,预定阈值可以是用于检查错误的方法500的迭代次数。在另一个实施例中,所定义的阈值指示方法500将重复直到没有进一步的错误被批准为止。以此方式,类似于方法400中的迭代,可以通过使用更准确的数据更新注释串140来改进模型,该更准确的数据引发用于随后迭代的附加的建议的错误。此外,通过迭代地重复方法500,所有描述串将最终被包括在迭代中的至少一个迭代的测试集合中,并且因此将针对可能的错误被检查至少一次。

计算设备实施例

图6示出了使用本文描述的示例系统和方法中的一个或多个和/或等价物被配置和/或编程的示例计算设备。示例计算设备可以是计算机600,计算机600包括由总线608可操作地连接的处理器602、存储器604以及输入/输出端口610。在一个示例中,计算机600可以包括注释逻辑630,注释逻辑630被配置为便于与图1的计算系统100和相关联的方法200-500类似地从描述串中提取非结构化属性。在不同的示例中,提取逻辑630可以以硬件、具有存储的指令的非暂态计算机可读介质、固件和/或其组合来实现。尽管提取逻辑630被示为附接到总线608的硬件组件,但是应当理解,在其他实施例中,提取逻辑630可以在处理器602中实现、存储在存储器604中或存储在盘606中。

在一个实施例中,逻辑630或计算机是用于执行所描述的动作的部件(例如,结构:硬件、非暂态计算机可读介质、固件)。在一些实施例中,计算设备可以是在云计算系统中操作的服务器、在软件即服务(saas)架构中配置的服务器、智能电话、笔记本电脑、平板计算设备等。

部件(means)可以被实现为例如被编程以根据识别的关联来注释注释串以及推断未被识别的标记和所定义的属性之间的匹配的asic。部件还可以被实现为存储的计算机可执行指令,这些计算机可执行指令作为暂时存储在存储器604中的数据616被呈现给计算机600并然后由处理器602执行。

逻辑630还可以提供用于以下操作的部件(例如,硬件、存储可执行指令的非暂态计算机可读介质、固件):执行条件随机场(crf)分析以推断匹配、根据所推断的匹配提取属性以及生成电子数据结构以将非结构化数据转换成存储在数据库中的结构化属性,其中该电子数据结构是用于电子库存数据库的表。

一般地描述计算机600的示例配置,处理器602可以是包括双微处理器和其他多处理器架构的各种各样的处理器。存储器604可以包括易失性存储器和/或非易失性存储器。非易失性存储器可以包括例如rom、prom等等。易失性存储器可以包括例如ram、sram、dram等等。

存储盘606可以经由例如输入/输出(i/o)接口(例如,卡、设备)618和输入/输出端口610可操作地连接到计算机600。盘606可以是例如磁盘驱动器、固态盘驱动器、软盘驱动器、带驱动器、zip驱动器、闪存卡、记忆棒等等。此外,盘606可以是cd-rom驱动器、cd-r驱动器、cd-rw驱动器、dvdrom等等。例如,存储器604可以存储进程614和/或数据616。盘606和/或存储器604可以存储控制和分配计算机600的资源的操作系统。

计算机600可以经由i/o接口618和输入/输出端口610与输入/输出(i/o)设备交互。输入/输出设备可以是例如键盘、麦克风、指向和选择设备、相机、视频卡、显示器、盘606、网络设备620等等。输入/输出端口610可以包括例如串行端口、并行端口和usb端口。

计算机600可以在网络环境中操作,并且因此可以经由i/o接口618和/或i/o端口610连接到网络设备620。通过网络设备620,计算机600可以与网络交互。通过网络,计算机600可以被逻辑地连接到远程计算机。计算机600可以与其交互的网络包括但不限于lan、wan和其他网络。

定义和其他实施例

在另一个实施例中,所描述的方法和/或它们的等价物可以使用计算机可执行指令实现。因此,在一个实施例中,非暂态计算机可读/存储介质被配置有算法/可执行应用的存储的计算机可执行指令,该计算机可执行指令在由(一个或多个)机器执行时使得(一个或多个)机器(和/或相关联的组件)执行方法。示例机器包括但不限于处理器、计算机、云计算系统中操作的服务器、在软件即服务(saas)架构中配置的服务器、智能电话等。在一个实施例中,计算设备使用被配置为执行所公开的方法中的任何方法的一个或多个可执行算法来实现。

在一个或多个实施例中,所公开的方法或它们的等价物由以下中的任一项执行:被配置为执行方法的计算机硬件;或体现在存储在非暂态计算机可读介质中的模块中的计算机指令,其中指令被配置为在当至少由计算设备的处理器执行时被配置为执行方法的可执行算法。

尽管为了简化解释的目的,所示出的方法被示为并描述为算法的一系列框,但是应该理解,方法不受框的顺序的限制。一些框可以以与所示出和描述的顺序不同的顺序出现和/或与其他框同时出现。此外,可以使用少于全部所示出的框来实现示例方法。框可以被组合或分割成多个动作/组件。此外,附加的和/或可替代的方法可以采用未在框中示出的附加动作。

以下包括本文采用的所选择的术语的定义。定义包括落入术语范围内并且可以用于实现的组件的各种示例和/或形式。这些示例并非旨在进行限制。术语的单数和复数形式都可以在定义之内。

对“一个实施例”、“实施例”、“一个示例”、“示例”等的引用指示如此描述的(一个或多个)实施例或(一个或多个)示例可以包括特定特征、结构、特性、性质、元素或限制,但是并非每个实施例或示例都必定包括该特定特征、结构、特性、性质、元素或限制。此外,重复使用短语“在一个实施例中”不一定指代相同的实施例,尽管它可能指代相同的实施例。

如本文所使用的“数据结构”是存储在存储器、存储设备或其他计算机化的系统中的计算系统中的数据组织。数据结构可以是例如数据字段、数据文件、数据阵列、数据记录、数据库、数据表、图、树、链表等等中的任何一个。数据结构可以由许多其他数据结构形成并且包含许多其他数据结构(例如,数据库包括许多数据记录)。根据其他实施例,数据结构的其他示例也是可能的。

如本文所使用的“计算机可读介质”或“计算机存储介质”是指存储指令和/或数据的非暂态介质,这些指令和/或数据被配置为当被执行时执行所公开的功能中的一个或多个功能。在一些实施例中,数据可以用作指令。计算机可读介质可以采取包括但不限于非易失性介质和易失性介质的形式。非易失性介质可以包括例如光盘、磁盘等等。易失性介质可以包括例如半导体存储器、动态存储器等。计算机可读介质的常见形式可以包括但不限于软盘、柔性盘、硬盘、磁带、其他磁介质、专用集成电路(asic)、可编程逻辑设备、光盘(cd)、其他光学介质、随机存取存储器(ram)、只读存储器(rom)、存储器芯片或卡、记忆棒、固态存储设备(ssd)、闪存驱动器和计算机、处理器或其他电子设备可以与其一起工作的其他介质。每个类型的介质如果在一个实施例中被选择用于实现,则可以包括被配置为执行所公开的和/或所要求保护的功能中的一个或多个功能的算法的存储的指令。

本文所使用的“逻辑”表示组件,该组件使用计算机或电子硬件、具有可执行应用或程序模块的存储的指令的非暂态介质、和/或这些的组合来实现以执行如本文所公开的功能或动作中的任何功能或动作,和/或使得来自另一逻辑、方法和/或系统的功能或动作如本文所公开的那样被执行。等效逻辑可以包括固件、用算法编程的微处理器、离散逻辑(例如asic)、至少一个电路、模拟电路、数字电路、编程逻辑设备、包含算法指令的存储设备等等,以上各项中的任何一个可以被配置为执行所公开的功能中的一个或多个功能。在一个实施例中,逻辑可以包括被配置为执行所公开的功能中的一个或多个功能的一个或多个门、门的组合或其他电路组件。在描述多个逻辑的情况下,有可能将多个逻辑合并到一个逻辑中。类似地,在描述单个逻辑的情况下,有可能在多个逻辑之间分布该单个逻辑。在一个实施例中,这些逻辑中的一个或多个逻辑是与执行与所公开的和/或所要求保护的功能关联的对应结构。可以基于期望的系统条件或规格来选择要实现哪种类型的逻辑。例如,如果考虑更高的速度,则将选择硬件来实现功能。如果考虑较低的成本,则将选择存储的指令/可执行应用来实现功能。

如本文所使用的“用户”包括但不限于一个或多个人员、计算机或其他设备或这些的组合。

尽管所公开的实施例已经被相当详细地示出和描述,但是并非旨在将所附权利要求的范围限定或以任何方式限制到这样的细节。当然,不可能出于描述主题的各个方面的目的而描述组件或方法的每个可想到的组合。因此,本公开不限于所示出和描述的具体细节或说明性示例。因此,本公开旨在涵盖落入所附权利要求的范围内的改变、修改和变型。

就具体实施方式或权利要求中采用术语“包括”或“包含”而言,其旨在以类似于术语“包括”当在权利要求中被用作过渡词时被解释的方式那样是包含性的。

就在具体实施方式或权利要求书中使用术语“或”(例如,a或b)而言,其旨在表示“a或b或a和b两者”。当申请人旨在指示“只有a或b而不是a和b两者”时,则将使用短语“仅a或b但不是a和b两者”。因此,本文中术语“或”的使用是包含性的,而非排他性的使用。

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