数据分发方法和装置与流程

文档序号:14571904发布日期:2018-06-01 22:44阅读:252来源:国知局
数据分发方法和装置与流程

本发明涉及数据处理技术领域,特别是涉及一种数据分发方法和装置。



背景技术:

随时人工智能的兴起,越来越多的行业已经开始应用深度学习来完善公司的产品。而深度学习的第一步,就是要保证模型数据集的准确性,因此,如何确保数据的准确性成为了重中之重。

传统技术中,在进行数据分发时,会对待分发的数据集进行分发范围的划分,例如数据集包括200条数据,规定第1~100条数据分发给用户A进行处理,第101~200条数据分发给用户B进行处理,按照数据范围进行分发,这种分发方式难以保证每个人都可以分发到数据,未做到真正的数据分发。

以问答场景为例进行说明,利用传统的数据分发方案,针对一个问题分发给用户A,那么用户A对该问题(可以理解为某个数据)做出的答案(可以理解为对该数据的处理结果)即作为该问题的正确答案。那么,采用单个用户对某条数据的处理结果来作为唯一的数据处理结果,则难以保证该问题答案(数据的处理结果)的准确度。进一步的,如果以该用户做出的问题答案来作为训练模型的数据集,则一方面无法保证数据集的准确性,另一方面也无法保证训练出的模型的准确度。

因此,目前需要本领域技术人员迫切解决的一个技术问题就是:如何提供一种数据分发方案来真正做到数据的分发,并提升数据分发性能。



技术实现要素:

本发明提供了一种数据分发方法和装置,以解决现有技术中的数据分发方案所存在的数据分发可靠性差、准确性低的问题。

为了解决上述问题,根据本发明的第一方面,本发明公开了一种数据分发方法,该数据分发方法包括:

接收用户的数据领取请求;

根据所述数据领取请求,在预设数据库中查找未被所述用户领取且分发次数大于零的目标数据;

将所述目标数据分发至所述用户,并将所述目标数据的分发次数减一。

可选地,所述根据所述数据领取请求,在预设数据库中查找未被所述用户领取且分发次数大于零的目标数据之后,根据第一方面所述的数据分发方法还可以包括:

在所述预设数据库中生成所述用户对所述目标数据的领取记录;

对所述目标数据设置处理时间阈值;

可选地,所述将所述目标数据分发至所述用户,并将所述目标数据的分发次数减一之后,根据第一方面所述的数据分发方法还可以包括:

当所述用户领取所述目标数据的时间长度超过所述目标数据的处理时间阈值、且未接收到所述用户对所述目标数据的处理结果时,则将所述用户对所述目标数据的领取记录清除;

将所述目标数据的分发次数加一。

可选地,所述将所述目标数据分发至所述用户,并将所述目标数据的分发次数减一之后,根据第一方面所述的数据分发方法还可以包括:

当所述用户领取所述目标数据的时间长度未超过所述目标数据的处理时间阈值、且接收到所述用户对所述目标数据的处理结果时,将所述处理结果添加至所述用户对所述目标数据的领取记录中。

可选地,所述对所述目标数据设置处理时间阈值之后,根据第一方面所述的数据分发方法还可以包括:

将所述目标数据保存至分布式缓存中;

当未接收到所述用户对所述目标数据的处理结果、且再次接收到所述用户的数据领取请求时,则将所述分布式缓存中的所述目标数据分发至所述用户。

可选地,所述将所述目标数据保存至分布式缓存中之后,根据第一方面所述的数据分发方法还可以包括:

当所述目标数据在所述分布式缓存中的保存时间超过所述处理时间阈值时,则将所述目标数据从所述分布式缓存中清除。

根据本发明的第二方面,本发明还公开了一种数据分发装置,应用于服务器,该数据分发装置包括:

接收模块,用于接收用户的数据领取请求;

查找模块,用于根据所述数据领取请求,在预设数据库中查找未被所述用户领取且分发次数大于零的目标数据;

第一分发模块,用于将所述目标数据分发至所述用户,并将所述目标数据的分发次数减一。

可选地,根据第二方面所述的数据分发装置还可以包括:

生成模块,用于在所述预设数据库中生成所述用户对所述目标数据的领取记录;

设置模块,用于对所述目标数据设置处理时间阈值;

第一清除模块,用于当所述用户领取所述目标数据的时间长度超过所述目标数据的处理时间阈值、且未接收到所述用户对所述目标数据的处理结果时,则将所述用户对所述目标数据的领取记录清除;

处理模块,用于将所述目标数据的分发次数加一。

可选地,根据第二方面所述的数据分发装置还可以包括:

添加模块,用于当所述用户领取所述目标数据的时间长度未超过所述目标数据的处理时间阈值、且接收到所述用户对所述目标数据的处理结果时,将所述处理结果添加至所述用户对所述目标数据的领取记录中。

可选地,根据第二方面所述的数据分发装置还可以包括:

保存模块,用于将所述目标数据保存至分布式缓存中;

第二分发模块,用于当未接收到所述用户对所述目标数据的处理结果、且再次接收到所述用户的数据领取请求时,则将所述分布式缓存中的所述目标数据分发至所述用户。

可选地,根据第二方面所述的数据分发装置还可以包括:

第二清除模块,用于当所述目标数据在所述分布式缓存中的保存时间超过所述处理时间阈值时,则将所述目标数据从所述分布式缓存中清除。

根据本发明的第三方面,本发明还公开了一种服务器,该服务器包括:

存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上述任一项所述的数据分发方法的步骤。

根据本发明的第四方面,本发明还公开了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述任一项所述的数据分发方法中的步骤。

与现有技术相比,本发明包括以下优点:

本发明通过将未被某个用户领取过,且分发次数大于零的数据分发给该用户,从而可以使得同一条数据能够分发给多个人,同时,同一个人对一条数据只能领取一次,从而保证了数据分发的最大化和差异化,通过分散性的收集各个用户对同一数据的处理结果,排除个人对某个数据的处理错误,从而可以保证对分发的数据的处理结果的准确性,提升数据分发的可靠性和准确性。

附图说明

图1是本发明的一种数据分发方法实施例的步骤流程图;

图2是本发明的一种数据分发装置实施例的结构框图。

具体实施方式

为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。

参照图1,示出了本发明的一种数据分发方法实施例的步骤流程图,具体可以包括如下步骤:

步骤101,接收用户的数据领取请求;

其中,本发明实施例的方法可以接收一个或多个用户的数据领取请求,其中,该数据领取请求可以携带发起数据领取的用户的标识。

步骤102,根据所述数据领取请求,在预设数据库中查找未被所述用户领取且分发次数大于零的目标数据;

其中,本发明实施例可以预设数据库,在该数据库中存储有所有需要被分发的数据,即需要被用户领取的数据。该数据的形式可以包括但不限于文字、图片、视频、音频等。数据库中的这些需要被用户领取的数据在分发给用户后,由用户对该数据进行处理。

在一个示例中,本发明实施例的方法可以预先将需要分发的数据持久化到所述预设数据库中,并对每个数据配置分发次数,此外,当某个数据被领取后,该预设数据库中还可以存储领取该数据的用户信息(例如用户标识)。

因此,本发明实施例的方法可以根据数据领取请求中的用户标识,来在预设数据库中查找未被对应于该用户标识的用户领取、且分发次数还大于零的目标数据。

步骤103,将所述目标数据分发至所述用户,并将所述目标数据的分发次数减一。

其中,目标数据可以是一个或多个数据,在将目标数据分发给该用户后,还需要将预设数据库中该目标数据的分发次数减一。

借助于本发明上述实施例的技术方案,本发明通过将未被某个用户领取过,且分发次数大于零的数据分发给该用户,从而可以使得同一条数据能够分发给多个人,同时,同一个人对一条数据只能领取一次,从而保证了数据分发的最大化和差异化,通过分散性的收集各个用户对同一数据的处理结果,排除个人对某个数据的处理错误,从而可以保证对分发的数据的处理结果的准确性,提升数据分发的可靠性和准确性。

为了更好的理解本发明实施例的上述技术方案,下面结合问答系统这一具体实例来对本发明的上述技术方案进行详细阐述。本发明实施例的数据分发方法可以包括如下流程:

步骤1:数据预处理;

对于需要分发数据集,本发明实施例在创建数据集时,可以对数据集中的数据设置一个阈值字段,用于存储该数据的处理时间阈值。

在将需要分发的数据集(包括数十万条数据,该数据可以体现为文字形式的问题)导入到数据库之前,本发明实施例的方法可以根据该数据集的配置选项(例如该配置选项可以包括对数据集中排列在前30%的多条数据配置分发给3个人、对数据集中排列在后70%的多条数据配置分发给5个人),计算出数据集中每条数据需要被分发的次数,即分发次数(其中,分发给3个人,即被分发的次数为3);在一种可能的实施方式中,本发明实施例的方法还可以通过拦截器来对数据集作一些额外的配置,从而使数据集中每条数据都有一个额外配置结果;相应的,在进行上述预设配置以及额外配置后,就可以将数据集中经过配置后的每条数据存储在数据库中。其中,拦截器采用可插拔的插件,从而可以保证系统的灵活性,同时丰富分发系统的功能。

其中,通过设置可插拔的拦截器能够根据用户需要灵活的对待分发的数据进行配置,并将数据的额外配置结果存储至数据库中。本实施例中,未对数据集作额外的配置,因此,数据表中没有存储额外配置结果。

本发明实施例通过在将待分发的数据持久化到数据库时,针对每条数据计算出需要被分发的次数,从而可以保证每条数据都可以被不同的无依赖关系的人领取,从而保证提交的问题答案的差异化。

步骤2:分发器获取分发数据;

分发器可以在数据库中维护两张表,表A与表B,

其中,表A中记录了步骤1中数据集中所有需要分发的数据的基本信息(例如数据的名称、数据的标识、分发次数、数据内容),其中,每条数据的分发次数字段,用于记录每条数据需要被分发的次数(即,步骤1中配置的分发次数);

表B中可以记录表A中每条数据的用户处理结果,表B中的字段可以包括表A中的数据的名称(和/或数据的标识)、用户的处理(例如标注)结果(处理结果,即,对领取的问题返回的答案)、处理时间、处理该数据的用户名称(或用户标识)以及数据状态;

其中,表A和表B通过数据的名称(和/或数据的标识)来关联。

其中,表B中的数据状态字段可以包括两种状态,分别为预领取状态和已处理状态。其中,在具体实现时,可以通过对该字段进行不同的赋值,来指代不同的状态。其中,预领取状态表示这条数据已经被某个人领取(例如,该问题在用户的终端页面上展示),但是,用户尚未对该问题进行答案标注,即尚未处理;而已处理状态则表示这条数据不仅被某个用户领取,而且,该用户已经返回对该数据的处理结果。需要注意的是,不论是预处理状态还是已处理状态,只要记录在表B中的数据,该数据在表A中的分发次数均会减一,直到为零为止。

用户在领取数据库中的数据时,可以经由分发器进行数据分配。当分发器接收到用户A的数据领取请求时,分发器就可以进行联表查询,具体的,可以从数据库的表B中查询出当前用户A已处理以及预处理的数据集合C(即表B中处理该数据的用户名称字段为该用户A的数据记录,再确定这些数据记录在表B中的数据的名称和/或数据的标识字段,就可以确定数据集合C);

然后,再利用从表B中查找到的数据集合C的例如数据的名称,来与表A做联表查询,从而可以从表A查询到排除数据集合C之外、且分发次数大于0的数据集合D;

最后,将从表A中查询到的数据集合D存入到表B中(其中,数据集合D中从表A中存入表B中的信息可以包括数据的名称和/或数据的标识),其中,数据集合D为数据集中该用户A尚未领取或处理过的数据集合。并且,在将数据集合D存入到表B中时,还会将处理该数据的用户名称字段,设置为用户A;此外,还可以将数据集合D中的数据,在表B中设置为预处理状态;其中,数据集合D在表B中以数据记录的方式存储时,可以理解为在数据库中生成了用户A对该数据集合D的领取记录。

本发明实施例通过对领取的数据设置表A和表B中的数据记录,从而保证了数据分发的隔离性。使得同一条数据可以分配给多个人,同时,同一个人只能领取一次,保证了数据处理结果的最大差异化。

步骤3:分发器分发数据。

分发器在从数据库中获取到数据集合D后,在一种可能的实施方式中,可以将查询出来的数据集合D保存在分布式缓存中,以供用户A获取。具体的可以将分布式缓存中存储的数据集合D分发给用户A,并在用户A领取了数据集合D中的任意一条数据后,将数据库的表A中对应上述任意一条数据的分发次数减一,表示该条数据已经有人领取,正在处理。

此外,本发明实施例的分发器还会对存入至表B中的数据集合D设置处理时间阈值,即对上述阈值字段进行赋值。其中,该处理时间阈值的作用在于当用户领取数据后,用户持有这些数据的时间达到该处理时间阈值还未提交其对该领取的数据的处理结果(本例中为提交问题的答案),则需要对该数据进行释放。

因此,如果用户A领取所述数据集合D的时间长度超过该数据集合D的处理时间阈值、且本发明实施例的方法还未接收到用户A对所述数据集合D的处理结果,则本发明实施例的方法会将数据库的表B中针对该数据集合D生成的数据记录进行清除,并将表A中对应该数据集合D中的每条记录的分发次数加一。

此外,本发明实施例的方法还可以将用户A侧领取的数据集合D进行清除,使这些数据集合D在用户侧不再展示。

这样,本发明实施例通过对已领取的数据设置处理时间阈值,即构成闭环通路,用户在领取数据之后,如果未能对数据进行操作处理,即一段时间都未提交处理结果,那么一段时间之后,该被领取的数据会重新进入到分发池中,继续分发给其他用户处理。

在一种可能的实施方式中,本发明实施例的分发器还会对存入至分布式缓存中的数据集合D设置缓存时间阈值。

相反,在一种可能的实施方式中,如果用户A领取数据集合D的时间长度未超过数据集合D的处理时间阈值、且本发明实施例的方法接收到用户A对所述数据集合D的处理结果(其中,该处理结果包括数据处理结果和数据处理时间,具体而言,本例中处理的数据为问题,给出的数据处理结果则是问题的答案,那么数据处理时间则指代用户提交该问题的答案的时间)时,然后,本发明实施例的方法就可以在数据库的表B中,将用户提交的答案、提交时间分别存储在对应数据集合D的数据记录中用户的处理结果和处理时间字段处。

在一种可能的实施方式中,在用户A在发起数据领取请求时,本发明实施例会获取一个分布式锁来对用户A的数据分发过程进行加锁,这样可以保证领取数据的多个用户之间是串行的,保证数据的准确性、完整性,在用户领取数据结束之后会自动释放锁,从而供其他的用户去继续获取上述数据集合D中的任意一条数据。此数据领取/分发流程很快,基本在几十毫秒。

在一种可能的实施方式中,如果用户A在处理完已经领取的数据集合D之前,仍旧一直领取数据(例如不停地刷新页面),即未接收到用户A对数据集合D的处理结果、且再次接收到用户A的数据领取请求时,则本发明实施例的方法可以将所述分布式缓存中的所述数据集合D分发至用户A。这样保证了在用户正式提交数据之前,用户每次都会领取到相同的数据。

在一种可能的实施方式中,当数据集合D在所述分布式缓存中的保存时间已经超过数据集合D的所述处理时间阈值时,则本发明实施例的方法可以将数据集合D从所述分布式缓存中清除。

举例来说,例如设置的处理时间阈值是30分钟,用户领取数据集合D的时间是11点,那么如果该用户一直没提交对数据集合D中的数据的处理结果,则在11点30分,该数据集合D会从该分布式缓存中自动清除;然后下一个用户可以继续领取数据集合D中的任意一条数据,从该下一个用户的领取数据时间点开始计时,如果计时达到30分钟,该下一个用户未提交所领取的数据的处理结果,则同样将领取的数据从分布式缓存中清除。

也就是说,只有在分布式缓存中缓存的数据到期之后,这些数据才会重新进入到数据分发的流程,在分布式缓存中缓存的数据到期之前,其他用户无法领取该数据集合D中的任意一条数据。

在一种可能的实施方式中,本发明实施例还可以建立题库,并随机将已知答案的题目加入到题库中。那么在用户的标注答案进行正确性的抽查。那么在用户进行数据处理(即,对领取的问题进行作答)的时候,本发明实施例的方法可以从题库中随机选择具有已知答案的题目添加至数据库中,从而可以利用该已知答案来对用户提交的数据处理结果,即问题的答案,进行判断,经过多次判断,就可以确定该用户的答题准确率。

当然,需要注意的是,上述问答场景只不过是本发明列举的一个示意性场景,还可以包括视频描述场景,即用户领取的数据的形式为视频,用户提交对该视频的内容描述结果;以及图片等等,数据分发的流程类似,这里不再赘述。

综上,本发明实施例创造了数据的闭环通路,保证了数据最终能被领取、处理。同时数据之间的隔离性保证了一条数据不会被同一个人重复领取,从而可以保证数据的最大客观性。不会出现因为一个人多次领取从而导致这条数据的结果偏向这个人的选择。同时持久化数据的控制维度,精确到每一条数据,从而更加保证了数据的准确性。同时,增加题库的使用,在用户标注数据的过程中,会随机加入题库中的数据,从而答题判断用户的答题准确率,发现准确率低的用户,系统会自动将用户的权限清除,并在用户需要通过特定的考试之后,才可以继续领取数据。从而进一步提升了数据最终的准确性。

需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。

与上述本发明实施例所提供的方法相对应,参照图2,示出了本发明一种数据分发装置实施例的结构框图,具体可以包括如下模块:

接收模块21,用于接收用户的数据领取请求;

查找模块22,用于根据所述数据领取请求,在预设数据库中查找未被所述用户领取且分发次数大于零的目标数据;

第一分发模块23,用于将所述目标数据分发至所述用户,并将所述目标数据的分发次数减一。

在一种可能的实施方式中,所述装置还可以包括:

生成模块,用于在所述预设数据库中生成所述用户对所述目标数据的领取记录;

设置模块,用于对所述目标数据设置处理时间阈值;

第一清除模块,用于当所述用户领取所述目标数据的时间长度超过所述目标数据的处理时间阈值、且未接收到所述用户对所述目标数据的处理结果时,则将所述用户对所述目标数据的领取记录清除;

处理模块,用于将所述目标数据的分发次数加一。

在一种可能的实施方式中,所述装置还可以包括:

添加模块,用于当所述用户领取所述目标数据的时间长度未超过所述目标数据的处理时间阈值、且接收到所述用户对所述目标数据的处理结果时,将所述处理结果添加至所述用户对所述目标数据的领取记录中。

在一种可能的实施方式中,所述装置还可以包括:

保存模块,用于将所述目标数据保存至分布式缓存中;

第二分发模块,用于当未接收到所述用户对所述目标数据的处理结果、且再次接收到所述用户的数据领取请求时,则将所述分布式缓存中的所述目标数据分发至所述用户。

在一种可能的实施方式中,所述装置还可以包括:

第二清除模块,用于当所述目标数据在所述分布式缓存中的保存时间超过所述处理时间阈值时,则将所述目标数据从所述分布式缓存中清除。

对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

根据本发明的一个实施例,还提供了一种服务器,该服务器包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上述任一项所述的数据分发方法的步骤。

根据本发明的一个实施例,还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述任一项所述的数据分发方法中的步骤。

本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。

本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。

以上对本发明所提供的一种数据分发方法和一种数据分发装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

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