WO2022019499A1 - 인공지능 학습 데이터 생성을 위한 크라우드소싱 기반 프로젝트의 티어 자료 구조를 활용한 작업 다중 할당 방법, 그 장치 및 그 컴퓨터 프로그램 - Google Patents
인공지능 학습 데이터 생성을 위한 크라우드소싱 기반 프로젝트의 티어 자료 구조를 활용한 작업 다중 할당 방법, 그 장치 및 그 컴퓨터 프로그램 Download PDFInfo
- Publication number
- WO2022019499A1 WO2022019499A1 PCT/KR2021/007975 KR2021007975W WO2022019499A1 WO 2022019499 A1 WO2022019499 A1 WO 2022019499A1 KR 2021007975 W KR2021007975 W KR 2021007975W WO 2022019499 A1 WO2022019499 A1 WO 2022019499A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- job
- data
- task
- identifier
- stack
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/06—Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
- G06Q10/063—Operations research, analysis or management
- G06Q10/0631—Resource planning, allocation, distributing or scheduling for enterprises or organisations
- G06Q10/06311—Scheduling, planning or task assignment for a person or group
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/10—Office automation; Time management
Definitions
- the present invention relates to a multi-task assignment method using a tier data structure of a crowdsourcing-based project.
- the company assigns the results of the work completed by the operator to the inspector to perform the inspection.
- a plurality of tasks are assigned to each of a plurality of workers.
- Each worker performs a plurality of assigned tasks and provides task results.
- a plurality of inspection tasks for the work results are assigned to each of the plurality of inspectors, and each inspector performs the assigned plurality of inspection tasks.
- a specific project requires a multi-task assignment method in which the same task is assigned to a plurality of different workers.
- This multi-task assignment method has a problem in that the number of simultaneously controllable data is limited because one job must be assigned to a plurality of workers.
- the problem to be solved by the present invention is to query and manage key-values of each data item included in the queue or stack area in the allocation tier storage, the reallocation tier storage, and the companion tier storage, in the scan process for multi-task allocation. It is to provide a multi-task assignment method using the tier data structure of a crowdsourcing-based project that can be assigned to workers by scanning tasks that can be quickly assigned through a single scan without the load of a single scan.
- the task multiple assignment method using the tier data structure of the crowdsourcing-based project according to an aspect of the present invention for solving the above-mentioned problems is to assign each task to n (n is a natural number greater than 1) different workers.
- a work assignment method using the tier data structure of a crowd sourcing-based project (hereinafter referred to as the project) of a multi-assignment method of redundant assignment a queue into which job data corresponding to a job that has not been assigned to the worker is inserted , configuring an allocation tier storage including one or more j-th stacks into which job data corresponding to a job that has been allocated j times (j is a natural number less than n) is inserted, respectively; and using the allocation tier storage, allocating the task of the project to a worker requesting task assignment (hereinafter, a target worker) and requesting to perform the task.
- a worker requesting task assignment hereinafter, a target worker
- the job data consists of a key-value pair including the identifier of the job and n pieces of multiple assignment data
- the multiple assignment data includes the identifier and multiple assignment index of the worker to which the job is assigned.
- Consisting of a key-value pair including, the step of requesting to perform a task by allocating the task of the project extracts the task data of the top of the current stack in descending order with respect to the one or more j-th stacks and check whether an identifier of a target worker exists in the topmost job data of the current stack, and if the target worker ID does not exist in the topmost job data of the current stack, retrieve the job data from the current stack fetches, requests to perform a job by allocating a job corresponding to the job data fetched from the current stack to the target worker, and includes an identifier of the target worker in the multi-allocation data of the job data fetched from the current stack is input, and the work data fetched from the current stack is pushed into the previous stack.
- the step of requesting to perform a task by allocating the task of the project includes whether the current stack is empty, the current stack is deleted, or the target worker is assigned to the topmost task data of the current stack. If the identifier of , it can move to the next stack.
- the step of requesting to perform the task by allocating the task of the project includes whether the first stack is empty, the first stack is deleted, or the uppermost task data of the first stack is If the identifier of the target worker exists, it moves to the queue, dequeues the job data from the queue, and assigns a job corresponding to the job data fetched from the queue to the target worker to request job performance, , input the identifier of the target worker to the multiple allocation data of the job data fetched from the queue, and insert the job data fetched from the queue into the first stack.
- the step of allocating the task of the project and requesting to perform the task may include fetching the task data from the current stack and then deleting the current stack when the current stack becomes empty, and Before inserting the work data fetched from the stack into the previous stack, if the previous stack is deleted, re-create the previous stack, and before inserting the work data fetched from the queue into the first stack, the first If the stack is deleted, the first stack may be re-created.
- the step of requesting to perform the task by allocating the task of the project includes: when the current stack is an n-1 th stack, fetching the task data from the n-1 th stack, and A job corresponding to the job data fetched from the n-1 stack may be assigned to the target worker to request job performance, and the job data fetched from the n-1 th stack may be dropped.
- Some embodiments of the present invention include the steps of: configuring a rejection tier repository including one or more rejection data corresponding to workers having a rejected job result (hereinafter, a rejected job result) according to an inspection result; and using the rejected tier storage, requesting the target worker to perform rework when the rejected job result exists to the target worker.
- the rejection data is composed of a key-value pair including an identifier of a worker in which the rejected job result exists and a rejection job queue, and an identifier of a job corresponding to the rejected job result is inserted into the rejection job queue
- the step of requesting to perform the rework when a rejected job result occurs, inserting the identifier of the job corresponding to the rejected job result into the rejection job queue corresponding to the worker who entered the rejected job result ( enqueue), check whether the target worker's identifier exists in the one or more rejection data of the companion tier storage, and if the target worker's identifier exists in the one or more rejection data of the companion tier storage, the target worker An identifier of a job corresponding to the rejected job result may be fetched from the corresponding rejected job queue, and a rework may be requested from the target worker for the job corresponding to the retrieved job identifier.
- the step of allocating the task of the project and requesting to perform the task may include using the allocation tier storage if the target worker's identifier does not exist in the one or more objection data of the objection tier storage.
- the task of the project may be assigned to the target worker and the task may be requested.
- reassignment data corresponding to a job to be reassigned to a new worker respectively (hereinafter, a job requiring reassignment) is inserted based on the k-th (k is a natural number) reassignment number.
- the reassignment data consists of a key-value pair including an identifier of the task requiring reassignment and a set of identifiers of one or more previous workers to which the task requiring reassignment has been assigned, and reassigning the task of the project to the task
- reallocation data corresponding to the task requiring reallocation is inserted into the kth queue corresponding to the number of reallocation times of the task requiring reallocation, and the one or more With respect to the k-th queue, in descending order, reallocation data is fetched from the current queue, it is confirmed whether the identifier of the target worker exists in the reallocation data fetched from the current queue, and the reallocation data fetched from the current queue If the identifier of the target worker does not exist, the job corresponding to the reassignment data retrieved from the current queue is reassigned to the target worker to request to perform the job, and the reassigning the task of the project.
- the step of requesting to perform a task by reallocating the task of the project may include: the current queue is empty, the current queue is deleted, or the target is assigned to the reallocation data fetched from the current queue. If the worker's identifier exists, it can move to the next queue.
- the step of requesting to perform a task by reallocating the task of the project after fetching the reallocation data from the current queue, deletes the current queue when the current queue becomes empty, Before inserting the reallocation data corresponding to the reallocation necessary task, if the kth queue corresponding to the number of reallocations of the reallocation necessary task is deleted, the kth queue may be re-created.
- the step of requesting to perform a task by reallocating the task of the project may include using the temporary key when a task requiring reallocation that has been reallocated to the target worker needs to be reallocated again to a new worker. Accordingly, reassignment data corresponding to the reallocation necessary work that has been reallocated to the target worker may be inserted into the kth queue corresponding to the number of reassignment of the reassignment required work that has been reassigned to the target worker.
- the step of requesting to perform a task by reallocating the task of the project is, if the current queue is empty or the current queue is deleted, moves to the next queue, and re-fetched from the current queue
- the reassignment data retrieved from the current queue may be re-inserted into the current queue and moved to the next queue.
- the step of allocating the task of the project and requesting to perform the task may include: confirming an identifier of the task of the task data of the highest level of the current stack; confirms whether the identifier of the target worker exists in the temporary key including the identifier of the job of If it does not exist and the identifier of the target worker does not exist in the topmost job data of the current stack, the job data is fetched from the current stack, and a job corresponding to the job data fetched from the current stack is performed as the target.
- the step of requesting to perform the task by allocating the task of the project includes the identifier of the target worker in the temporary key including the identifier of the task of the uppermost task data of the current stack. If present, it can move to the next stack.
- the step of requesting to perform the task by allocating the task of the project includes the identifier of the target worker in the temporary key including the identifier of the task of the uppermost task data of the first stack. If exists, it can move to the queue.
- the step of requesting to perform a task by reallocating the task of the project may include, if the identifier of the target worker does not exist in the one or more objection data of the objection tier storage, the reassignment tier storage By using , it is possible to request to perform the task by reallocating the task of the project to the target worker.
- the step of requesting to perform the task by allocating the task of the project may include, if the identifier of the target worker exists in the reallocation data fetched from the current queue of the reallocation tier storage, the allocation By using the tier storage, it is possible to assign the task of the project to the target worker and request to perform the task.
- the task multi-assignment device using the tier data structure of the crowdsourcing-based project according to another aspect of the present invention for solving the above-described problem is to assign each task to n (n is a natural number greater than 1) different plurality of tasks.
- the processor includes, when the program is executed, a queue into which task data corresponding to a task not assigned to the worker is inserted, each j constructing an allocation tier storage including one or more j-th stacks into which job data corresponding to a job that has been allocated a number of times (j is a natural number less than n); using the allocation tier storage, allocating the task of the project to a worker requesting task assignment (hereinafter, a target worker) and requesting to perform the task; configuring a rejection tier storage including one or more rejection data corresponding to workers having rejected job results (hereinafter, rejected job results) according to the inspection result
- the job data is popped from the current stack, and the job data fetched from the current stack is Allocating a corresponding job to the target worker to request job performance, inputting an identifier of the target worker to the multi-allocation data of the job data fetched from the current stack, and transferring the job data fetched from the current stack to the previous stack is inserted into , and the rejection data is composed of a key-value pair including an identifier of a worker in which the rejected job result exists and a rejection job queue, and the rejected job queue contains a corresponding
- the step of inserting the identifier of the job and requesting to perform the rework when a rejected job result occurs, the job corresponding to the rejected job result is placed in the rejected job queue corresponding to the worker who entered the rejected job result inserts the identifier of (enqueue), confirms whether the target worker's identifier exists
- a multiple assignment method of redundantly assigning each job to a plurality of different workers by n (n is a natural number greater than 1)
- the step of allocating and requesting to perform a task includes extracting, in descending order, from the one or more j-th stacks, the task data of the top of the current stack, and adding the task data of the top of the current stack to the task data of the target
- the job data is popped from the current stack, and the job data fetched from the current stack is Allocating a corresponding job to the target worker to request job performance, inputting an identifier of the target worker to the multi-allocation data of the job data fetched from the current stack, and transferring the job data fetched from the current stack to the previous stack is inserted into , and the rejection data is composed of a key-value pair including an identifier of a worker in which the rejected job result exists and a rejection job queue, and the rejected job queue contains a corresponding
- the step of inserting the identifier of the job and requesting to perform the rework when a rejected job result occurs, the job corresponding to the rejected job result is placed in the rejected job queue corresponding to the worker who entered the rejected job result inserts the identifier of (enqueue), confirms whether the target worker's identifier exists
- concurrency can be secured when multiple tasks are allocated with only a single thread, and other advantages are that it is easy to expand the service according to the number of users.
- FIG. 1 is a conceptual diagram of a crowdsourcing service according to an embodiment of the present invention.
- FIG. 2 is a flowchart for explaining a process of a crowdsourcing-based project according to an embodiment of the present invention.
- 3 is a diagram for explaining a data management method for multi-task assignment according to the related art.
- FIG. 4 is a flowchart illustrating a process of allocating a job using an allocation tier storage.
- 5A to 5G are diagrams for explaining an example of allocating a task using an allocation tier storage.
- FIG. 6 is a flowchart for explaining a process of requesting to perform rework using the companion tier storage.
- 7A to 7B are diagrams for explaining an example of requesting to perform rework using the companion tier storage.
- FIG. 8 is a flowchart illustrating a process of requesting to perform a task using a reallocation tier storage.
- 9A to 9C are diagrams for explaining an example of requesting to perform a task using a reallocation tier storage.
- 10A to 10B are diagrams for explaining an example of requesting to perform a task using each tier storage.
- FIG. 11 is a diagram for explaining a multi-task assignment apparatus according to an embodiment of the present invention.
- FIG. 1 is a conceptual diagram of a crowdsourcing service according to an embodiment of the present invention.
- the crowdsourcing service consists of a requester 10 , a service provider 20 , and the public 30 .
- the client 10 refers to a company or individual requesting a crowdsourcing-based project (hereinafter, the project).
- the client 10 requests a project for the purpose of collecting source data or data annotation for the generation of artificial intelligence learning data.
- Data generated through the project can be used as learning data for arbitrary machine learning such as supervised learning, unsupervised learning, and reinforcement learning.
- the collection of source data means the collection of raw data such as recorded voice collection and photo collection.
- Data annotation refers to inputting relevant annotation data into source data such as text, photos, and videos.
- data annotation may include, but is not limited to, finding an entity in a given fingerprint, finding a similar sentence, and the like.
- the type of the above-mentioned project is only one embodiment, and various projects may be handled in the present invention according to the design of the client.
- the service provider 20 refers to a company that provides a crowdsourcing service.
- the service provider 20 When the service provider 20 receives a request for a project for a product or service from the client 10 , the service provider 20 allocates the work for the project to the general public 30 and receives the work result from the public 30 . Thereafter, the final product extracted based on the work result is provided to the client 10 .
- the service provider 20 provides a crowdsourcing service to the client 10 and the public 30 through the crowdsourcing platform (hereinafter, platform). That is, when the service provider 20 receives a project request from the client 10 , the service provider 20 opens the project on the platform. Thereafter, when receiving the work results for the open project from the public 30 , the project may be terminated on the platform, and the final product may be extracted and provided to the client 10 .
- platform the crowdsourcing platform
- the public 30 refers to the general public participating in the project open on the platform.
- the public 30 may participate in a project open to the platform through an application or website provided by the service provider 20 .
- the public 30 consists of an operator 32 and an inspector 34 .
- the worker 32 decides to participate in a specific project among a plurality of projects open to the platform. Thereafter, the worker 32 collects source data or performs a task such as data annotation, and transmits it to the platform.
- the inspector 34 decides to participate in a specific project among a plurality of projects open to the platform. Thereafter, the inspector 34 performs inspection on the results of the work performed by the operator 32 . As a result of the inspection, the inspector 34 may process the inspection passing or reject it, and may input a reason for rejecting the reject process. In the case of passing inspection, rework and subsequent re-inspection are not required, so passing inspection has the same meaning as inspection completion.
- FIG. 2 is a flowchart for explaining a process of a crowdsourcing-based project according to an embodiment of the present invention.
- the client 10 requests one or more projects to the service provider 20 (S11).
- the service provider 20 opens the requested project on the platform (S12).
- the service provider 20 may determine the grade in consideration of the difficulty of the corresponding project before opening the project. That is, it is possible to determine whether to expose the project to the public 30 of which grade or higher according to the degree of difficulty. Accordingly, it is possible to increase the reliability of the work result of the project.
- the service provider 20 requests the work by allocating the work to the workers 32 of the corresponding level or higher according to the level of the project (S13).
- the worker 32 performs the assigned task (S14).
- the operator 32 may input a reason for not being able to work without performing the job for a job in which the job itself is impossible for some reason.
- the service provider 20 receives the work result from the worker 32 (S15), and assigns an inspection task for the work result to the inspector 34 to request the inspection (S16).
- an embodiment of the present invention may allow only suitable projects among all projects being performed according to the qualification requirements of the inspector 34 or grades set according to the difficulty of the project to be exposed to the inspector 34 .
- the inspector 34 performs the assigned inspection (S17). At this time, the inspector 34 determines that the inspection is completed if it is determined that the work has been performed properly, and rejects the inspection if it is determined that the inspection work is wrong. At the time of rejection processing, the inspector 34 inputs the reason for rejection as to whether the work was judged to be incorrect for some reason.
- the service provider 20 receives the inspection result from the inspector 34 (S18).
- the service provider 20 uses the corresponding work result as valid data, and based on this, extracts the final product at the end of the project.
- the service provider 20 may internally perform the inspection again, or assign the task to the worker 32 again to perform the rework. In case of rework, re-inspection by the inspector is required.
- the service provider 20 terminates the project when the project period is over or sufficient valid data is secured (S19), and calculates a final result based on the secured valid data and provides it to the client 10 ( S20).
- the service provider 20 evaluates the performance results of the worker 32 and the inspector 34 , and calculates the work cost and inspection cost according to the evaluation to the operator 32 and the inspector 34 . give.
- 3 is a diagram for explaining a data management method for multi-task assignment according to the related art.
- the number of data loaded into one queue area may be defined as a multiplication operation of source data and multiple allocation values.
- a process of scanning the entire queue area is required in order to assign multiple tasks to a certain worker. That is, in order to assign a job corresponding to the job data loaded in the middle of the queue area (eg, job data 4) to a specific worker as shown in FIG. 3 , all 10,000 job data loaded in the queue must be scanned. This leads to a slowdown for other workers.
- the prior art has a problem in that, due to the limitation of the Java List data structure, the greater the difference in the amount of work between workers, the worse the scan performance occurs. In other words, a scan process is required to ensure that the same work as the work that has already been completed is not assigned to a worker. It happens exponentially, which in turn leads to poor scan performance.
- an embodiment of the present invention defines a queue area and a stack area in the work allocation tier, the work reallocation tier, and the reject work tier, and searches for key-value of each item in the queue area and the stack area and Through management, there is no load in the scanning process for multi-task assignment, and a single scan can quickly scan allocable jobs and assign them to workers.
- each task is redundantly assigned to a plurality of different workers 32 by n (n is a natural number greater than 1).
- n is a natural number greater than 1.
- the number of workers 32 performing a task for each task may be set to be the same for all tasks of the project. For example, when a specific task is repeatedly assigned to three workers, other tasks may also be duplicately assigned to three workers.
- an embodiment of the present invention is characterized in that multiple tasks are assigned to a plurality of workers 32 using a tier data structure.
- the tier data structure includes an allocation tier storage for allocating new jobs to the worker 32 , a reallocation tier storage for when reallocation of the allocated jobs is required, and the job results for the assigned jobs are submitted. and includes a rejection tier repository to manage when the work result is rejected.
- Each of these tiered repositories can be configured with queues or stacks. According to the present invention, a plurality of tasks to be multi-allocated can be managed more quickly with only a single scan of a tier data structure through data insertion and retrieval events from a queue or stack of each tier storage.
- FIG. 4 is a flowchart illustrating a process of allocating a job using an allocation tier storage.
- 5A to 5G are diagrams for explaining an example of allocating a task using an allocation tier storage.
- FIG. 4 may be understood to be performed by a platform server (hereinafter, referred to as a server) operated by the service provider 20, but is not limited thereto.
- a platform server hereinafter, referred to as a server operated by the service provider 20, but is not limited thereto.
- the server configures an allocation tier storage for allocating a new task to the worker 32 (S110), and assigns the task of the project to the worker (hereinafter referred to as the target worker) who requests the task assignment using the allocation tier storage. Request to perform a task (S120).
- the allocation tier storage consists of a queue and a stack.
- the queue is configured to insert job data corresponding to a job that has not been assigned to the worker 32 .
- work data corresponding to the work that has been allocated j times is inserted into the stack, and is composed of one or more j-th stacks.
- the allocation tier storage consists of one queue, a first stack, and a second stack.
- the number of multi-allocated workers will be described as an example of three.
- the job data inserted into the queue or stack of the allocation tier storage and managed is composed of a key-value pair including the identifier of the job and n pieces of multi-assignment data.
- the multi-assignment data is composed of a key-value pair including the identifier of the worker 32 to which the job is assigned and the multi-assignment index.
- the job data at the top of the first stack of FIG. 5A has an identifier of job "4" and three multiple assignment data as key-values, among which multiple assignment data assigned to worker 5 is configured to have the identifier of worker "number 5" and the multi-assignment index "1" as key-values.
- the server extracts the work data of the top of the current stack in descending order with respect to one or more j-th stacks in order to assign the task of the project to the worker 32 and request the work to be performed. Then, it is checked whether the identifier of the target worker 32 exists in the highest job data of the current stack.
- the server moves to the next stack if the identifier of the target worker 32 exists in the topmost job data of the current stack. In this case, the server moves to the next stack even when all of the work data of the current stack is moved and empty or the current stack is deleted.
- the highest task data is first extracted from the second stack in descending order. Then, it is checked whether the identifier of the 13th worker exists in the highest job data of the second stack.
- the second stack is a stack in which job data already assigned to two of the tasks to be multi-assigned to a total of three workers is inserted, and corresponds to the highest (n-1 th) stack.
- the server since the identifier of worker 13 already exists in job data 5 of the second stack, in this case, the server does not assign the job corresponding to job data 5 to worker 13, but moves to the next stack, the first stack. Move.
- the server fetches the job data from the current stack and performs a job corresponding to the job data fetched from the current stack. Assign to and request to perform work. Then, the identifier of the target worker 32 is input to the multi-allocation data of the job data fetched from the current stack, and the job data fetched from the current stack is pushed into the previous stack.
- the identifier of the worker No. 13 is identified in the job data No. 4 that is the top job data of the first stack, which is the current stack. Since it does not exist, the server fetches job data No. 4 of the first stack, assigns a job corresponding to job data No. 4 to worker No. 13, and requests to perform the job.
- the server inputs the identifier of the 13th worker to the multi-allocation data of the 4th job data fetched from the first stack, and inserts the 4th job data into the second stack, which is the previous stack.
- the server moves to the queue when the first stack is empty, the first stack is deleted, or when the identifier of the target worker 32 exists in the topmost job data of the first stack. That is, the server checks the highest job data of j stacks in descending order, and when the first stack, which is the last stack, is in a state in which the job cannot be assigned to the target worker 32, the server moves to the next queue.
- the server dequeues the job data from the queue, allocates a job corresponding to the job data fetched from the queue to the target worker 32, and requests the job to be performed. Then, the identifier of the target worker 32 is input to the multi-allocation data of the job data fetched from the queue, and the job data fetched from the queue is inserted into the first stack.
- the server moves to the next stack, the first stack, without assigning the job corresponding to the 4th job data to the 5th worker.
- the second job data which is the highest working data of the first stack, which is the current stack, also has the identifier of worker 5, so the server Instead of assigning the job corresponding to job 2 data to worker 5, it moves to the next queue.
- job data corresponding to a job that has not yet been assigned to the worker 32 is inserted into the queue, and the server fetches job data No. 6 at the top of the queue without a verification process like in the stack.
- the corresponding task is assigned to worker number 5 and requested to perform the task.
- the server inputs the identifier of the 5th worker to the multi-allocation data of the 6th job data fetched from the queue, and inserts the 6th job data into the first stack.
- an embodiment of the present invention allocates multiple tasks faster through only a single scan of the highest task data inserted into the stack or queue, unlike the conventional method in which all task data inserted into the queue must be retrieved and checked. There are advantages to being able to do this.
- the server fetches the work data from the current stack, and when the work data no longer exists in the current stack, the current stack is deleted.
- the server before inserting work data fetched from the current stack into the previous stack, the server re-creates the previous stack if the previous stack is deleted. Similarly, before inserting the work data fetched from the queue into the first stack, if the first stack is deleted, the first stack is re-created.
- the server moves from the second stack to the first stack and checks the highest working data. As a result of the check, since the identifier of the 13th worker does not exist in the 2nd job data of the 1st stack, the server assigns the job corresponding to the 2nd job data to the 13th worker and requests to perform the job, and the 2nd job data After inputting the identifier of the 13th worker, the 2nd job data is moved to the 2nd stack.
- FIG. 5F shows a state after moving job data No. 2 to the second stack in FIG. 5E.
- job data No. 2 is fetched from the first stack, which is the current stack, the job data no longer exists in the first stack. Therefore, the server deletes the first stack.
- the identifier of the worker 13 is present in the top job data of the second stack, so it moves to the first stack, and the first stack is deleted in the previous step. Then it moves to the next queue.
- the server fetches the data of job 6 from the top of the queue without the same verification process as in the stack, assigns the corresponding job to worker 13, and requests to perform the job. And the server inputs the identifier of the 13th worker to the multi-allocation data of the 6th job data fetched from the queue, and inserts the 6th job data into the first stack. At this time, since the first stack has been deleted in the previous step, the server creates the first stack again for insertion of the sixth job data. This process can be equally applied to the relationship between the queue and the stack as well as the relationship between the stacks.
- the server fetches the work data from the n-1 th stack, that is, the n-1 th stack, which is the highest stack among the generated stacks, in which the current stack is the n-1 th stack, and corresponds to the n-1 th stack.
- the task is requested to be performed by allocating the task to the target worker 32, the task data fetched from the n-1 th stack is dropped.
- the server fetches the second job data to assign the job corresponding to the second job data inserted in the second stack, the current stack is the n-1th stack, to the first worker, and then the corresponding job is assigned to worker No. 1, and the identifier of worker No. 1 is entered in the multi-assignment data of job No. 2 data.
- the server since the second stack corresponds to the top stack, in this case, the server does not create an additional stack, and since the second job data is multi-assigned to all three workers, the server drops the second job data from the allocation tier storage make it possible
- one embodiment of the present invention has the advantage of enabling faster scan and multi-task assignment as the project progresses, since it is only necessary to manage the remaining work data in the queue or stack as the multi-assignment is completed.
- FIG. 6 is a flowchart for explaining a process of requesting to perform rework using the companion tier storage.
- 7A to 7B are diagrams for explaining an example of requesting to perform rework using the companion tier storage.
- the worker 32 submits the job result, and the inspector 34 passes the inspection as a result of inspecting the job result or Enter return.
- the server configures a rejection tier storage including one or more rejection data corresponding to the worker 32 who has a rejected job result (hereinafter, rejected job result) according to the inspection result (S210), and the rejection tier storage If there is a work result returned to the target worker 32 using , it requests the target worker 32 to perform rework (S220).
- the rejection data is composed of a key-value pair including an identifier of the worker 32 in which the rejected job result exists and the rejection job queue, and the identifier of the job corresponding to the rejected job result is inserted in the rejection job queue .
- the rejection data is a key-value pair in the form of "worker 4 - companion job queue", "worker 8 - companion job queue”, and "worker 1 - companion job queue” is composed of
- the job queue of worker 4 No. 21, No. 47, No. 90, No. 8, and No. 16 are inserted as job identifiers corresponding to the rejected job result. Since this rejection data is generated to correspond to the worker 32 whenever a rejected job result of the worker 32 is generated, the rejection job queue is also generated to correspond to each worker 32 having a rejected job result.
- the server When a rejected job result occurs, the server enqueues the identifier of the job corresponding to the rejected job result in the rejection job queue corresponding to the worker 32 who has input the rejected job result.
- the server checks whether the identifier of the target worker 32 exists in one or more rejection data of the rejection tier storage.
- the server fetches the identifier of the job corresponding to the rejected job result from the rejection job queue corresponding to the target worker 32, , request the target worker 32 to perform rework for the job corresponding to the identifier of the fetched job.
- the server when a job or rework execution request is made to worker 4, the server first checks the reject tier storage, and as a result of the check, the identifier of the worker for worker 4 exists, The identifier of the 16th job is fetched, and the 4th worker is requested to perform rework for the job corresponding to the retrieved 16th job identifier.
- the identifier of the 16th job is dropped.
- the server assigns the project task to the target worker 32 using the allocation tier storage and requests to perform the task will do
- a job execution request is made to the worker 32 , first, it is checked whether there is a rejected job result through a scan of the rejected tier storage, and if there is no rejected job result, the allocation tier storage is used. to assign a task to the target worker 32 to request the task to be performed.
- the server when requesting the 3rd worker to perform a job as shown in FIG. 7B , the current 3rd worker has not returned any work results, so the identifier of the 3rd worker does not exist in the rejection tier storage.
- the server moves from the companion tier storage to the allocation tier storage, as described with reference to FIGS. 4 to 5G , the server sequentially scans from the highest stack to determine whether to allocate the task.
- FIG. 8 is a flowchart illustrating a process of requesting to perform a task using a reallocation tier storage.
- 9A to 9C are diagrams for explaining an example of requesting to perform a task using a reallocation tier storage.
- the server configures a reallocation tier storage into which reallocation data corresponding to a task to be reallocated (hereinafter, a task requiring reallocation) is inserted to the new worker 32 (S310), and using the reallocation tier storage, the target worker (32) to reallocate the task of the project to request to perform the task (S320).
- a task to be reallocated hereinafter, a task requiring reallocation
- the reallocation tier storage is configured to include one or more kth queues, into which the reallocation data is inserted based on the kth (k being a natural number) number of reallocations. For example, when the task assigned to the worker 32 must be first reallocated to the new worker 32 due to work assignment being released or job abandonment, reassignment data corresponding to the reassignment required work is stored in the first queue is inserted into
- the reassignment data inserted in the first queue is reassigned to a new worker once again, but the job is not performed and needs to be reassigned again a second time, the reassignment data is inserted into the second queue .
- the number of queues in the reallocation tier storage is configured by the number corresponding to the number of reallocations.
- the reassignment data which is queued and managed in the reassignment tier storage, consists of a key-value pair that includes the identifier of the task requiring reallocation and a set of identifiers of one or more previous workers to which the task requiring reallocation was assigned.
- the reassignment data inserted into the first queue of the reassignment tier storage is “7” with an identifier of a task requiring reallocation of “No. 3” and a history of being assigned a task corresponding to “No. It consists of a key-value pair containing the identifier of the operator.
- the reassignment data inserted into the second queue is the identifier of the task requiring reassignment "No. 1" and the identifier set of the worker "No. 10" and “No. 13" who have been assigned or reassigned the "No. 1" task. It consists of a key-value pair containing
- the server When a job requiring reallocation occurs, the server inserts reallocation data corresponding to the job requiring reallocation into the kth queue corresponding to the number of reallocations of the job requiring reallocation. That is, when reassignment is required as the 7th worker gives up the job with respect to the job corresponding to the 3rd job data in FIG. 9a, the server requires reassignment for the first time. Insert the reassignment data No. 3 into the first queue.
- the server fetches reallocation data from the current queue in descending order with respect to one or more k-th queues for a request to perform reallocation of a job corresponding to the reallocation data inserted into the reallocation tier storage, and the fetched data from the current queue It is checked whether the identifier of the target worker 32 exists in the reassignment data.
- the server reassigns the job corresponding to the reassignment data fetched from the current queue to the target worker 32 and performs the job to request
- a temporary key including the identifier set of one or more previous workers 32 to which the identifier of the task requiring reallocation of the reallocation data fetched from the current queue and the identifier of the target worker 32 is added is generated.
- the server fetches and confirms the first reassignment data inserted into the second queue, and as a result, the identifier of the fifth worker does not exist in the reassignment data corresponding to the first job, so the server reassigns the first
- the task corresponding to the data is reassigned to worker number 5 and requested to perform the task.
- the server completes the reassigned task by the 5th worker, the 1st reassignment data is dropped, but a reassignment issue such as giving up the reassigned task occurs, or the same task is allocated from the allocation tier storage later
- the identifier of operator No. 5 is included in the identifier set of the previous operator and generated as a temporary key.
- the server moves to the next queue. At this time, the server moves to the next queue even when all job data in the current queue is moved and empty or the current queue is deleted.
- the server moves to the reassignment tier without requesting to perform rework because there is no rejection data corresponding to the 10th worker in the rejection tier storage when the server requests a job from the 10th worker.
- the first reassignment data inserted into the second queue of the reassignment tier already has a history of assigning a job to the 10th worker.
- the server moves to the next queue, the first queue. Since the identifier of worker No. 10 does not exist in the reassignment data no. 3 inserted into the first queue, the server reallocates the job corresponding to the reassignment data No. 3 to worker No. 10 and requests to perform the work, will generate a key.
- the server fetches reallocation data from the current queue and deletes the current queue when the reallocation data is no longer inserted into the current queue. And before inserting the reallocation data corresponding to the reallocation required task into the next queue, if the kth queue corresponding to the number of reallocations of the reallocation necessary task is deleted, the kth queue is re-created.
- the server If worker 6 fails to perform job 11 while the first queue is deleted, and the initial reallocation of job 11 is required, the server returns the first queue corresponding to the number of reallocations of the job requiring reallocation. After re-creation, the reallocation data corresponding to task 11 is inserted into the first queue.
- the server uses the temporary key to the k-th queue corresponding to the number of reassignment of the reassignment required work that has been reallocated to the target worker 32, Insert the corresponding reallocation data.
- the server reallocates the job corresponding to the 3rd reassignment data inserted in the first queue to the 10th worker and requests to perform the job, and generates a temporary key related thereto. After that, if the reassignment is required because the corresponding reassigned task by worker No. 10 cannot be performed, the server uses the temporary key to which the identifier of worker No. 10 is added to the second queue corresponding to the number of reassignments. Insert reassignment data 3 times.
- the server moves to the next queue even when all job data of the current queue is moved and is empty or the current queue is deleted.
- the server inserts the reassignment data retrieved from the current queue into the current queue and moves to the next queue.
- the server fetches and checks the reassignment data inserted in the second queue of the reassignment tier storage, and as a result, the reassignment data No. 1 includes the identifier of the worker No. 10, so the No. 1 reassignment After the data is re-inserted at the bottom of the second queue, which is the current queue, it moves to the next queue, the first queue, and checks whether reassignment is possible.
- 10A to 10B are diagrams for explaining an example of requesting to perform a task using each tier storage.
- the server can prevent the task reassigned to the specific worker 32 from being assigned to the same worker 32 by using the temporary key.
- the server when the server assigns the task of the project to the worker 32 and requests to perform the task, the server checks the identifier of the task of the uppermost task data of the current stack of the allocation tier storage, and the worker ( It is checked whether the identifier of the target worker 32 exists in the temporary key including the identifier of 32).
- the job corresponding to the top job data of the current stack is assigned to the worker 32 do.
- the server Since the ID of worker 10 exists in the top 5 job data of the second stack of the allocation tier storage, the server moves to the first stack, and the ID of the 10 worker is in the job 4 job data located at the top of the first stack. It does not exist, and even in the temporary key, there is no history of reassignment to worker number 10 in relation to the reassignment data number 4. Accordingly, the server fetches job data No. 4 of the first stack, assigns a job corresponding to job data No. 4 fetched from the first stack to worker No. 10, and requests to perform the job. Then, the identifier of the 10th worker is input to the multi-allocation data of the 4th job data fetched from the first stack, and the 4th job data fetched from the first stack is inserted into the second stack.
- the server In order to prevent duplicate allocation of work data to worker number 10, it moves to the next stack, and if the current stack is the first stack, it moves to the queue.
- an embodiment of the present invention uses an allocation tier storage, a reallocation tier storage, and a companion tier storage. Allocate work by scanning the queue or stack in the order of the allocation tier storage.
- the server first checks one or more reject data in the reject tier repository to determine whether it needs to request the target worker 32 to perform rework, and includes the target worker ( If the identifier of 32) does not exist, the task execution is requested by reallocating the task of the project to the target worker 32 using the reallocation tier storage.
- the server By using the tier storage, the task of the project is assigned to the target worker 32 and the task is requested.
- steps S110 to S320 may be further divided into additional steps or combined into fewer steps according to an embodiment of the present invention.
- some steps may be omitted if necessary, and the order between steps may be changed.
- the content of FIG. 11 to be described later may be applied to the multiple allocation method using the tier data structure of the crowdsourcing-based project of FIGS. 1 to 10B .
- a multiple assignment device 400 (hereinafter referred to as a task multiple assignment device) using the tier data structure of a crowdsourcing-based project according to an embodiment of the present invention will be described.
- FIG. 11 is a diagram for explaining a multi-task assignment apparatus 400 according to an embodiment of the present invention.
- an apparatus for multiple assignment of work 400 includes a memory 410 and a processor 420 .
- the memory 410 stores a program for allocating multiple jobs using a tier data structure to a plurality of different workers for each job (n is a natural number greater than 1).
- the processor 420 executes a program stored in the memory 410 .
- the processor 420 executes the program stored in the memory 410, it configures an allocation tier storage including a queue and one or more stacks, and uses the allocation tier storage to provide the target worker 32 with the task of the project. Assign and request to perform a task.
- the processor 420 extracts the top job data of the current stack and checks whether the identifier of the target worker 32 exists, and if it does not exist as a result of checking, the processor 420 fetches the job data from the current stack and performs the corresponding job with the target worker ( 32) and request to perform the task. Then, the identifier of the target worker 32 is input to the multi-allocation data of the job data fetched from the current stack, and the job data fetched from the current stack is inserted into the previous stack.
- the method for multiple assignment of work using the tier data structure of a crowdsourcing-based project according to an embodiment of the present invention described above is implemented as a program (or application) to be executed in combination with a computer, which is hardware, and stored in a medium.
- the above-mentioned program in order for the computer to read the program and execute the methods implemented as a program, C, C++, JAVA, Ruby, which the processor (CPU) of the computer can read through the device interface of the computer; It may include code coded in a computer language such as machine language. Such code may include functional code related to a function defining functions necessary for executing the methods, etc., and includes an execution procedure related control code necessary for the processor of the computer to execute the functions according to a predetermined procedure. can do. In addition, the code may further include additional information necessary for the processor of the computer to execute the functions or code related to memory reference for which location (address address) in the internal or external memory of the computer to be referenced. have.
- the code uses the communication module of the computer to determine how to communicate with any other computer or server remotely. It may further include a communication-related code for whether to communicate and what information or media to transmit and receive during communication.
- the storage medium is not a medium that stores data for a short moment, such as a register, a cache, a memory, etc., but a medium that stores data semi-permanently and can be read by a device.
- examples of the storage medium include, but are not limited to, ROM, RAM, CD-ROM, magnetic tape, floppy disk, and an optical data storage device.
- the program may be stored in various recording media on various servers accessible by the computer or in various recording media on the computer of the user.
- the medium may be distributed in a computer system connected to a network, and a computer-readable code may be stored in a distributed manner.
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Human Resources & Organizations (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- Entrepreneurship & Innovation (AREA)
- General Physics & Mathematics (AREA)
- Strategic Management (AREA)
- Economics (AREA)
- Quality & Reliability (AREA)
- Tourism & Hospitality (AREA)
- General Business, Economics & Management (AREA)
- Operations Research (AREA)
- Marketing (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Development Economics (AREA)
- Educational Administration (AREA)
- Game Theory and Decision Science (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
크라우드소싱 기반 프로젝트의 티어 자료 구조를 활용한 작업 다중 할당 방법이 제공된다. 상기 방법은 각각의 작업을 n명의(n은 1보다 큰 자연수) 서로 다른 복수의 작업자에게 중복적으로 할당하는 다중 할당 방식의 크라우드 소싱 기반 프로젝트(이하, 프로젝트)의 티어 자료 구조를 활용한 작업 할당 방법으로서, 상기 작업자에게 할당된 바 없는 작업에 상응하는 작업 데이터가 삽입되는 큐(queue), 각각 j회(j는 n보다 작은 자연수) 할당된 바 있는 작업에 상응하는 작업 데이터가 삽입되는 하나 이상의 제j 스택(stack)을 포함하는 할당 티어(tier) 저장소를 구성하는 단계; 및 상기 할당 티어 저장소를 이용하여, 작업 할당을 요청하는 작업자(이하, 대상 작업자)에게 상기 프로젝트의 작업을 할당하여 작업 수행을 요청하는 단계를 포함한다.
Description
본 발명은 크라우드소싱 기반 프로젝트의 티어 자료 구조를 활용한 작업 다중 할당 방법에 관한 것이다.
최근, 기업 활동의 일부 과정에 일반 대중을 참여시키는 크라우드소싱 기반으로 많은 양의 데이터를 수집 및 가공하는 기업들이 늘고 있다. 즉, 기업은 하나의 프로젝트를 오픈하여 일반 대중, 즉 작업자가 해당 프로젝트에 참여하게 함으로써, 작업자에 의해 완료된 작업 결과를 통해 필요한 정보를 수집하게 된다.
이때, 기업은 보다 신뢰도가 높은 정보를 수집하기 위해, 작업자에 의해 완료된 작업 결과를 검수자에게 배정하여 검수 작업을 수행하도록 한다.
구체적으로, 하나의 프로젝트가 오픈되면, 복수의 작업자 각각에게 복수의 작업이 배정된다. 각각의 작업자는 배정받은 복수의 작업을 수행하고, 작업 결과를 제공한다. 이후, 복수의 검수자 각각에게 작업 결과에 대한 복수의 검수 작업이 배정되고, 각각의 검수자는 배정받은 복수의 검수 작업을 수행하게 된다.
한편, 특정 프로젝트에서는 동일한 작업을 서로 다른 복수의 작업자에게 배정하는 작업 다중 할당 방식을 필요로 하고 있다.
이러한 작업 다중 할당 방식은 하나의 작업을 복수 명의 작업자에게 할당해야 하기 때문에, 동시에 제어 가능한 데이터의 수가 제한되는 문제가 있다.
또한, 웹 어플리케이션 서버(Web Application Server)에 종속적인 로컬 메모리를 사용하고 있어, 사용자가 증가하는 것에 맞추어 서비스를 확장하거나 변경하기 어려운 문제가 있다.
이와 더불어, 작업자 간의 작업 속도 차이가 클수록 작업 할당을 위한 스캔 과정에서 많은 리소스가 소요되며, 이로 인한 속도 저하가 크다는 문제가 있다.
본 발명이 해결하고자 하는 과제는 할당 티어 저장소, 재할당 티어 저장소 및 반려 티어 저장소에서의 큐 또는 스택 영역에 포함된 각 데이터 항목의 키-값 조회 및 관리를 통해, 작업 다중 할당을 위한 스캔 과정에서의 부하가 없으며, 단일 스캔을 통해 빠르게 할당 가능한 작업을 스캔하여 작업자에게 할당할 수 있는 크라우드소싱 기반 프로젝트의 티어 자료 구조를 활용한 작업 다중 할당 방법을 제공하는 것이다.
다만, 본 발명이 해결하고자 하는 과제는 상기된 바와 같은 과제로 한정되지 않으며, 또다른 과제들이 존재할 수 있다.
상술한 과제를 해결하기 위한 본 발명의 일 면에 따른 크라우드소싱 기반 프로젝트의 티어 자료 구조를 활용한 작업 다중 할당 방법은 각각의 작업을 n명의(n은 1보다 큰 자연수) 서로 다른 복수의 작업자에게 중복적으로 할당하는 다중 할당 방식의 크라우드 소싱 기반 프로젝트(이하, 프로젝트)의 티어 자료 구조를 활용한 작업 할당 방법으로서, 상기 작업자에게 할당된 바 없는 작업에 상응하는 작업 데이터가 삽입되는 큐(queue), 각각 j회(j는 n보다 작은 자연수) 할당된 바 있는 작업에 상응하는 작업 데이터가 삽입되는 하나 이상의 제j 스택(stack)을 포함하는 할당 티어(tier) 저장소를 구성하는 단계; 및 상기 할당 티어 저장소를 이용하여, 작업 할당을 요청하는 작업자(이하, 대상 작업자)에게 상기 프로젝트의 작업을 할당하여 작업 수행을 요청하는 단계를 포함한다. 이때, 상기 작업 데이터는 상기 작업의 식별자 및 n개의 다중 할당 데이터를 포함하는 키-값(key-value) 쌍으로 구성되고, 상기 다중 할당 데이터는 상기 작업이 할당된 작업자의 식별자 및 다중 할당 인덱스를 포함하는 키-값 쌍으로 구성되고, 상기 프로젝트의 작업을 할당하여 작업 수행을 요청하는 단계는, 상기 하나 이상의 제j 스택을 대상으로, 내림차순으로, 현재 스택의 최상위(top)의 작업 데이터를 추출하고, 상기 현재 스택의 상기 최상위의 작업 데이터에 대상 작업자의 식별자가 존재하는지 확인하고, 상기 현재 스택의 상기 최상위의 작업 데이터에 상기 대상 작업자의 식별자가 존재하지 않으면, 상기 현재 스택으로부터 상기 작업 데이터를 인출(pop)하고, 상기 현재 스택으로부터 인출된 작업 데이터에 상응하는 작업을 상기 대상 작업자에게 할당하여 작업 수행을 요청하고, 상기 현재 스택으로부터 인출된 작업 데이터의 상기 다중 할당 데이터에 상기 대상 작업자의 식별자를 입력하고, 상기 현재 스택으로부터 인출된 작업 데이터를 이전 스택에 삽입(push)한다.
본 발명의 일부 실시예에서, 상기 프로젝트의 작업을 할당하여 작업 수행을 요청하는 단계는, 상기 현재 스택이 비어있거나, 상기 현재 스택이 삭제되었거나, 상기 현재 스택의 상기 최상위의 작업 데이터에 상기 대상 작업자의 식별자가 존재하면, 다음 스택으로 이동할 수 있다.
본 발명의 일부 실시예에서, 상기 프로젝트의 작업을 할당하여 작업 수행을 요청하는 단계는, 상기 제1 스택이 비어있거나, 상기 제1 스택이 삭제되었거나, 상기 제1 스택의 상기 최상위의 작업 데이터에 상기 대상 작업자의 식별자가 존재하면, 상기 큐로 이동하고, 상기 큐로부터 상기 작업 데이터를 인출(dequeue)하고, 상기 큐로부터 인출된 작업 데이터에 상응하는 작업을 상기 대상 작업자에게 할당하여 작업 수행을 요청하고, 상기 큐로부터 인출된 작업 데이터의 상기 다중 할당 데이터에 상기 대상 작업자의 식별자를 입력하고, 상기 큐로부터 인출된 작업 데이터를 상기 제1 스택에 삽입할 수 있다.
본 발명의 일부 실시예에서, 상기 프로젝트의 작업을 할당하여 작업 수행을 요청하는 단계는, 상기 현재 스택으로부터 상기 작업 데이터를 인출한 후, 상기 현재 스택이 비게되면 상기 현재 스택을 삭제하고, 상기 현재 스택으로부터 인출된 작업 데이터를 이전 스택에 삽입하기 전에, 상기 이전 스택이 삭제되어 있으면, 상기 이전 스택을 다시 생성하고, 상기 큐로부터 인출된 작업 데이터를 상기 제1 스택에 삽입하기 전에, 상기 제1 스택이 삭제되어 있으면, 상기 제1 스택을 다시 생성할 수 있다.
본 발명의 일부 실시예에서, 상기 프로젝트의 작업을 할당하여 작업 수행을 요청하는 단계는, 상기 현재 스택이 제n-1 스택이고, 상기 제n-1 스택으로부터 상기 작업 데이터를 인출하고, 상기 제n-1 스택으로부터 인출된 작업 데이터에 상응하는 작업을 상기 대상 작업자에게 할당하여 작업 수행을 요청하고, 상기 제n-1 스택으로부터 인출된 작업 데이터를 드롭(drop)할 수 있다.
본 발명의 일부 실시예는, 검수 결과에 따라 반려된 작업 결과(이하, 반려된 작업 결과)가 존재하는 작업자에 상응하는 하나 이상의 반려 데이터를 포함하는 반려 티어 저장소를 구성하는 단계; 및 상기 반려 티어 저장소를 이용하여, 상기 대상 작업자에게 상기 반려된 작업 결과가 존재하면 상기 대상 작업자에게 재작업 수행을 요청하는 단계를 더 포함할 수 있다. 이때, 상기 반려 데이터는 상기 반려된 작업 결과가 존재하는 작업자의 식별자 및 반려 작업 큐를 포함하는 키-값 쌍으로 구성되고, 상기 반려 작업 큐에는 상기 반려된 작업 결과에 상응하는 작업의 식별자가 삽입되고, 상기 재작업 수행을 요청하는 단계는, 반려된 작업 결과가 발생하면, 상기 반려된 작업 결과를 입력한 작업자에 상응하는 반려 작업 큐에 상기 반려된 작업 결과에 상응하는 작업의 식별자를 삽입(enqueue)하고, 상기 반려 티어 저장소의 상기 하나 이상의 반려 데이터에 상기 대상 작업자의 식별자가 존재하는지 확인하고, 상기 반려 티어 저장소의 상기 하나 이상의 반려 데이터에 상기 대상 작업자의 식별자가 존재하면, 상기 대상 작업자에 상응하는 반려 작업 큐로부터 상기 반려된 작업 결과에 상응하는 작업의 식별자를 인출하고, 상기 인출된 작업의 식별자에 상응하는 작업에 대해서 상기 대상 작업자에게 재작업 수행을 요청할 수 있다.
본 발명의 일부 실시예에서, 상기 프로젝트의 작업을 할당하여 작업 수행을 요청하는 단계는, 상기 반려 티어 저장소의 상기 하나 이상의 반려 데이터에 상기 대상 작업자의 식별자가 존재하지 않으면, 상기 할당 티어 저장소를 이용하여, 상기 대상 작업자에게 상기 프로젝트의 작업을 할당하여 작업 수행을 요청할 수 있다.
본 발명의 일부 실시예는, 새로운 작업자에게 각각 재할당되어야 하는 작업(이하, 재할당 필요 작업)에 상응하는 재할당 데이터가 k번째(k는 자연수) 재할당 회수를 기반으로 삽입되는 하나 이상의 제k큐를 포함하는 재할당 티어 저장소를 구성하는 단계; 및 상기 재할당 티어 저장소를 이용하여, 상기 대상 작업자에게 상기 프로젝트의 작업을 재할당하여 작업 수행을 요청하는 단계를 더 포함할 수 있다. 이때, 상기 재할당 데이터는 상기 재할당 필요 작업의 식별자 및 상기 재할당 필요 작업이 할당되었던 하나 이상의 이전 작업자의 식별자 세트를 포함하는 키-값 쌍으로 구성되고, 상기 프로젝트의 작업을 재할당하여 작업 수행을 요청하는 단계는, 재할당 필요 작업이 발생하면, 상기 재할당 필요 작업의 재할당 회수에 상응하는 상기 제k큐에 상기 재할당 필요 작업에 상응하는 재할당 데이터를 삽입하고, 상기 하나 이상의 제k 큐를 대상으로, 내림차순으로, 현재 큐로부터 재할당 데이터를 인출하고, 상기 현재 큐로부터 인출된 재할당 데이터에 상기 대상 작업자의 식별자가 존재하는지 확인하고, 상기 현재 큐로부터 인출된 재할당 데이터에 상기 대상 작업자의 식별자가 존재하지 않으면, 상기 현재 큐로부터 인출된 재할당 데이터에 상응하는 작업을 상기 대상 작업자에게 재할당하여 작업 수행을 요청하고, 상기 현재 큐로부터 인출된 재할당 데이터의 상기 재할당 필요 작업의 식별자 및 상기 대상 작업자의 식별자가 추가된 상기 하나 이상의 이전 작업자의 식별자 세트를 포함하는 임시 키를 생성할 수 있다.
본 발명의 일부 실시예에서, 상기 프로젝트의 작업을 재할당하여 작업 수행을 요청하는 단계는, 상기 현재 큐가 비어있거나, 상기 현재 큐가 삭제되었거나, 상기 현재 큐로부터 인출된 재할당 데이터에 상기 대상 작업자의 식별자가 존재하면, 다음 큐로 이동할 수 있다.
본 발명의 일부 실시예에서, 상기 프로젝트의 작업을 재할당하여 작업 수행을 요청하는 단계는, 상기 현재 큐로부터 상기 재할당 데이터를 인출한 후, 상기 현재 큐가 비게되면 상기 현재 큐를 삭제하고, 상기 재할당 필요 작업에 상응하는 재할당 데이터를 삽입하기 전에, 상기 재할당 필요 작업의 재할당 회수에 상응하는 상기 제k큐가 삭제되어 있으면, 상기 제k 큐를 다시 생성할 수 있다.
본 발명의 일부 실시예에서, 상기 프로젝트의 작업을 재할당하여 작업 수행을 요청하는 단계는, 상기 대상 작업자에게 재할당되었던 재할당 필요 작업이 새로운 작업자에게 다시 재할당되어야 하면, 상기 임시 키를 이용하여, 상기 대상 작업자에게 재할당되었던 재할당 필요 작업의 재할당 회수에 상응하는 상기 제k 큐에 상기 대상 작업자에게 재할당되었던 재할당 필요 작업에 상응하는 재할당 데이터를 삽입할 수 있다.
본 발명의 일부 실시예에서, 상기 프로젝트의 작업을 재할당하여 작업 수행을 요청하는 단계는, 상기 현재 큐가 비어있거나, 상기 현재 큐가 삭제되었으면, 다음 큐로 이동하고, 상기 현재 큐로부터 인출된 재할당 데이터에 상기 대상 작업자의 식별자가 존재하면, 상기 현재 큐로부터 인출된 재할당 데이터를 상기 현재 큐에 다시 삽입하고, 다음 큐로 이동할 수 있다.
본 발명의 일부 실시예에서, 상기 프로젝트의 작업을 할당하여 작업 수행을 요청하는 단계는, 상기 현재 스택의 상기 최상위의 작업 데이터의 상기 작업의 식별자를 확인하고, 상기 현재 스택의 상기 최상위의 작업 데이터의 상기 작업의 식별자를 포함하는 상기 임시 키에 상기 대상 작업자의 식별자가 존재하는지 확인하고, 상기 현재 스택의 상기 최상위의 작업 데이터의 상기 작업의 식별자를 포함하는 상기 임시 키에 상기 대상 작업자의 식별자가 존재하지 않고, 상기 현재 스택의 상기 최상위의 작업 데이터에 상기 대상 작업자의 식별자가 존재하지 않으면, 상기 현재 스택으로부터 상기 작업 데이터를 인출하고, 상기 현재 스택으로부터 인출된 작업 데이터에 상응하는 작업을 상기 대상 작업자에게 할당하여 작업 수행을 요청하고, 상기 현재 스택으로부터 인출된 작업 데이터의 상기 다중 할당 데이터에 상기 대상 작업자의 식별자를 입력하고, 상기 현재 스택으로부터 인출된 작업 데이터를 이전 스택에 삽입할 수 있다.
본 발명의 일부 실시예에서, 상기 프로젝트의 작업을 할당하여 작업 수행을 요청하는 단계는, 상기 현재 스택의 상기 최상위의 작업 데이터의 상기 작업의 식별자를 포함하는 상기 임시 키에 상기 대상 작업자의 식별자가 존재하면, 다음 스택으로 이동할 수 있다.
본 발명의 일부 실시예에서, 상기 프로젝트의 작업을 할당하여 작업 수행을 요청하는 단계는, 상기 제1 스택의 상기 최상위의 작업 데이터의 상기 작업의 식별자를 포함하는 상기 임시 키에 상기 대상 작업자의 식별자가 존재하면, 상기 큐로 이동할 수 있다.
본 발명의 일부 실시예에서, 상기 프로젝트의 작업을 재할당하여 작업 수행을 요청하는 단계는, 상기 반려 티어 저장소의 상기 하나 이상의 반려 데이터에 상기 대상 작업자의 식별자가 존재하지 않으면, 상기 재할당 티어 저장소를 이용하여, 상기 대상 작업자에게 상기 프로젝트의 작업을 재할당하여 작업 수행을 요청할 수 있다.
본 발명의 일부 실시예에서, 상기 프로젝트의 작업을 할당하여 작업 수행을 요청하는 단계는, 상기 재할당 티어 저장소의 상기 현재 큐로부터 인출된 재할당 데이터에 상기 대상 작업자의 식별자가 존재하면, 상기 할당 티어 저장소를 이용하여, 상기 대상 작업자에게 상기 프로젝트의 작업을 할당하여 작업 수행을 요청할 수 있다.
또한, 상술한 과제를 해결하기 위한 본 발명의 다른 면에 따른 크라우드소싱 기반 프로젝트의 티어 자료 구조를 활용한 작업 다중 할당 장치는 각각의 작업을 n명의(n은 1보다 큰 자연수) 서로 다른 복수의 작업자에게 중복적으로 할당하는 다중 할당 방식의 크라우드 소싱 기반 프로젝트(이하, 프로젝트)의 티어 자료 구조를 활용한 작업 할당 장치로서, 상기 서로 다른 복수의 작업자에게 상기 티어 자료 구조를 활용한 다중 작업 할당을 위한 프로그램이 저장된 메모리; 및 상기 프로젝트의 작업 할당과 관련된 동작을 제어하는 프로세서;를 포함하고, 상기 프로세서는 상기 프로그램이 실행되면, 상기 작업자에게 할당된 바 없는 작업에 상응하는 작업 데이터가 삽입되는 큐(queue), 각각 j회(j는 n보다 작은 자연수) 할당된 바 있는 작업에 상응하는 작업 데이터가 삽입되는 하나 이상의 제j 스택(stack)을 포함하는 할당 티어(tier) 저장소를 구성하는 단계; 상기 할당 티어 저장소를 이용하여, 작업 할당을 요청하는 작업자(이하, 대상 작업자)에게 상기 프로젝트의 작업을 할당하여 작업 수행을 요청하는 단계; 검수 결과에 따라 반려된 작업 결과(이하, 반려된 작업 결과)가 존재하는 작업자에 상응하는 하나 이상의 반려 데이터를 포함하는 반려 티어 저장소를 구성하는 단계; 및 상기 반려 티어 저장소를 이용하여, 상기 대상 작업자에게 상기 반려된 작업 결과가 존재하면 상기 대상 작업자에게 재작업 수행을 요청하는 단계;를 수행하고, 상기 작업 데이터는 상기 작업의 식별자 및 n개의 다중 할당 데이터를 포함하는 키-값(key-value) 쌍으로 구성되고, 상기 다중 할당 데이터는 상기 작업이 할당된 작업자의 식별자 및 다중 할당 인덱스를 포함하는 키-값 쌍으로 구성되고, 상기 프로젝트의 작업을 할당하여 작업 수행을 요청하는 단계는, 상기 하나 이상의 제j 스택을 대상으로, 내림차순으로, 현재 스택의 최상위(top)의 작업 데이터를 추출하고, 상기 현재 스택의 상기 최상위의 작업 데이터에 대상 작업자의 식별자가 존재하는지 확인하고, 상기 현재 스택의 상기 최상위의 작업 데이터에 상기 대상 작업자의 식별자가 존재하지 않으면, 상기 현재 스택으로부터 상기 작업 데이터를 인출(pop)하고, 상기 현재 스택으로부터 인출된 작업 데이터에 상응하는 작업을 상기 대상 작업자에게 할당하여 작업 수행을 요청하고, 상기 현재 스택으로부터 인출된 작업 데이터의 상기 다중 할당 데이터에 상기 대상 작업자의 식별자를 입력하고, 상기 현재 스택으로부터 인출된 작업 데이터를 이전 스택에 삽입(push)하며, 상기 반려 데이터는 상기 반려된 작업 결과가 존재하는 작업자의 식별자 및 반려 작업 큐를 포함하는 키-값 쌍으로 구성되고, 상기 반려 작업 큐에는 상기 반려된 작업 결과에 상응하는 작업의 식별자가 삽입되고, 상기 재작업 수행을 요청하는 단계는, 반려된 작업 결과가 발생하면, 상기 반려된 작업 결과를 입력한 작업자에 상응하는 반려 작업 큐에 상기 반려된 작업 결과에 상응하는 작업의 식별자를 삽입(enqueue)하고, 상기 반려 티어 저장소의 상기 하나 이상의 반려 데이터에 상기 대상 작업자의 식별자가 존재하는지 확인하고, 상기 반려 티어 저장소의 상기 하나 이상의 반려 데이터에 상기 대상 작업자의 식별자가 존재하면, 상기 대상 작업자에 상응하는 반려 작업 큐로부터 상기 반려된 작업 결과에 상응하는 작업의 식별자를 인출하고, 상기 인출된 작업의 식별자에 상응하는 작업에 대해서 상기 대상 작업자에게 재작업 수행을 요청하는 것을 특징으로 한다.
또한, 상술한 과제를 해결하기 위한 본 발명의 다른 면에 따른 컴퓨터와 결합되어, 각각의 작업을 n명의(n은 1보다 큰 자연수) 서로 다른 복수의 작업자에게 중복적으로 할당하는 다중 할당 방식의 크라우드 소싱 기반 프로젝트(이하, 프로젝트)의 티어 자료 구조를 활용한 작업 할당 방법을 실행시키기 위하여 컴퓨터 판독가능 기록매체에 저장된 컴퓨터 프로그램에 있어서, 상기 컴퓨터 프로그램은, 상기 작업자에게 할당된 바 없는 작업에 상응하는 작업 데이터가 삽입되는 큐(queue), 각각 j회(j는 n보다 작은 자연수) 할당된 바 있는 작업에 상응하는 작업 데이터가 삽입되는 하나 이상의 제j 스택(stack)을 포함하는 할당 티어(tier) 저장소를 구성하는 단계; 상기 할당 티어 저장소를 이용하여, 작업 할당을 요청하는 작업자(이하, 대상 작업자)에게 상기 프로젝트의 작업을 할당하여 작업 수행을 요청하는 단계; 검수 결과에 따라 반려된 작업 결과(이하, 반려된 작업 결과)가 존재하는 작업자에 상응하는 하나 이상의 반려 데이터를 포함하는 반려 티어 저장소를 구성하는 단계; 및 상기 반려 티어 저장소를 이용하여, 상기 대상 작업자에게 상기 반려된 작업 결과가 존재하면 상기 대상 작업자에게 재작업 수행을 요청하는 단계;를 수행하고, 상기 작업 데이터는 상기 작업의 식별자 및 n개의 다중 할당 데이터를 포함하는 키-값(key-value) 쌍으로 구성되고, 상기 다중 할당 데이터는 상기 작업이 할당된 작업자의 식별자 및 다중 할당 인덱스를 포함하는 키-값 쌍으로 구성되고, 상기 프로젝트의 작업을 할당하여 작업 수행을 요청하는 단계는, 상기 하나 이상의 제j 스택을 대상으로, 내림차순으로, 현재 스택의 최상위(top)의 작업 데이터를 추출하고, 상기 현재 스택의 상기 최상위의 작업 데이터에 대상 작업자의 식별자가 존재하는지 확인하고, 상기 현재 스택의 상기 최상위의 작업 데이터에 상기 대상 작업자의 식별자가 존재하지 않으면, 상기 현재 스택으로부터 상기 작업 데이터를 인출(pop)하고, 상기 현재 스택으로부터 인출된 작업 데이터에 상응하는 작업을 상기 대상 작업자에게 할당하여 작업 수행을 요청하고, 상기 현재 스택으로부터 인출된 작업 데이터의 상기 다중 할당 데이터에 상기 대상 작업자의 식별자를 입력하고, 상기 현재 스택으로부터 인출된 작업 데이터를 이전 스택에 삽입(push)하며, 상기 반려 데이터는 상기 반려된 작업 결과가 존재하는 작업자의 식별자 및 반려 작업 큐를 포함하는 키-값 쌍으로 구성되고, 상기 반려 작업 큐에는 상기 반려된 작업 결과에 상응하는 작업의 식별자가 삽입되고, 상기 재작업 수행을 요청하는 단계는, 반려된 작업 결과가 발생하면, 상기 반려된 작업 결과를 입력한 작업자에 상응하는 반려 작업 큐에 상기 반려된 작업 결과에 상응하는 작업의 식별자를 삽입(enqueue)하고, 상기 반려 티어 저장소의 상기 하나 이상의 반려 데이터에 상기 대상 작업자의 식별자가 존재하는지 확인하고, 상기 반려 티어 저장소의 상기 하나 이상의 반려 데이터에 상기 대상 작업자의 식별자가 존재하면, 상기 대상 작업자에 상응하는 반려 작업 큐로부터 상기 반려된 작업 결과에 상응하는 작업의 식별자를 인출하고, 상기 인출된 작업의 식별자에 상응하는 작업에 대해서 상기 대상 작업자에게 재작업 수행을 요청하는것을 특징으로 한다.
본 발명의 기타 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
상술한 본 발명에 의하면, 작업 다중 할당을 위한 스택 영역의 유연한 확장 및 축소를 통해 이론상 수량의 제한 없이 작업 할당이 가능하다는 장점이 있다.
또한, 작업 다중 할당을 위한 스캔 과정에서의 부하가 없으며, 단일 스캔만으로 빠르게 작업 할당 가능한 작업을 스캔하여 작업자에게 할당할 수 있다는 장점이 있다.
이와 더불어, 단일 쓰레드만으로도 작업 다중 할당시 동시성을 확보할 수 있으며, 그밖에 사용자 증가에 따른 서비스 확장이 용이하다는 장점이 있다.
본 발명의 효과들은 이상에서 언급된 효과로 제한되지 않으며, 언급되지 않은 또 다른 효과들은 아래의 기재로부터 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
도 1은 본 발명의 일 실시예에 따른 크라우드소싱 서비스의 개념도이다.
도 2는 본 발명의 일 실시예에 따른 크라우드소싱 기반의 프로젝트의 진행 프로세스를 설명하기 위한 흐름도이다.
도 3은 종래 작업 다중 할당을 위한 데이터 관리 방법을 설명하기 위한 도면이다.
도 4는 할당 티어 저장소를 이용하여 작업을 할당하는 과정을 설명하기 위한 순서도이다.
도 5a 내지 도 5g는 할당 티어 저장소를 이용하여 작업을 할당하는 일 예시를 설명하기 위한 도면이다.
도 6은 반려 티어 저장소를 이용하여 재작업 수행을 요청하는 과정을 설명하기 위한 순서도이다.
도 7a 내지 도 7b는 반려 티어 저장소를 이용하여 재작업 수행을 요청하는 일 예시를 설명하기 위한 도면이다.
도 8은 재할당 티어 저장소를 이용하여 작업 수행을 요청하는 과정을 설명하기 위한 순서도이다.
도 9a 내지 도 9c는 재할당 티어 저장소를 이용하여 작업 수행을 요청하는 일 예시를 설명하기 위한 도면이다.
도 10a 내지 도 10b는 각 티어 저장소를 이용하여 작업 수행을 요청하는 일 예시를 설명하기 위한 도면이다.
도 11은 본 발명의 일 실시예에 따른 작업 다중 할당 장치를 설명하기 위한 도면이다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나, 본 발명은 이하에서 개시되는 실시예들에 제한되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술 분야의 통상의 기술자에게 본 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다.
본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 "포함한다(comprises)" 및/또는 "포함하는(comprising)"은 언급된 구성요소 외에 하나 이상의 다른 구성요소의 존재 또는 추가를 배제하지 않는다. 명세서 전체에 걸쳐 동일한 도면 부호는 동일한 구성 요소를 지칭하며, "및/또는"은 언급된 구성요소들의 각각 및 하나 이상의 모든 조합을 포함한다. 비록 "제1", "제2" 등이 다양한 구성요소들을 서술하기 위해서 사용되나, 이들 구성요소들은 이들 용어에 의해 제한되지 않음은 물론이다. 이들 용어들은 단지 하나의 구성요소를 다른 구성요소와 구별하기 위하여 사용하는 것이다. 따라서, 이하에서 언급되는 제1 구성요소는 본 발명의 기술적 사상 내에서 제2 구성요소일 수도 있음은 물론이다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 발명이 속하는 기술분야의 통상의 기술자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있을 것이다. 또한, 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다.
이하, 첨부된 도면을 참조하여 본 발명의 실시예를 상세하게 설명한다.
도 1은 본 발명의 일 실시예에 따른 크라우드소싱 서비스의 개념도이다.
도 1을 참조하면, 크라우드소싱 서비스는 의뢰자(10), 서비스 제공 업체(20) 및 대중(30)으로 구성되어 수행된다.
의뢰자(10)는 크라우드소싱 기반의 프로젝트(이하, 프로젝트)를 의뢰하는 기업이나 개인을 의미한다.
의뢰자(10)는 인공지능 학습데이터의 생성을 위한 소스 데이터의 수집 또는 데이터 어노테이션 등을 목적으로 프로젝트를 의뢰한다. 프로젝트를 통해서 생성된 데이터는 지도 학습, 비지도 학습, 강화 학습 등의 임의의 기계 학습의 학습데이터로 활용될 수 있다. 소스 데이터의 수집은 녹음된 음성 수집, 사진 수집 등 가공되지 않은 데이터를 수집하는 것을 의미한다. 데이터 어노테이션은 텍스트, 사진, 비디오 등의 소스 데이터에 관련 주석 데이터를 입력하는 것을 의미한다. 예들 들어, 데이터 어노테이션은 주어진 지문에서 개체를 찾는 것, 유사한 문장을 찾는 것 등이 있을 수 있으나 이에 제한되지 않는다. 한편, 전술한 프로젝트의 종류는 일 실시예에 불과하며, 의뢰자의 설계에 따라 다양한 프로젝트가 본 발명에서 취급될 수 있다.
서비스 제공 업체(20)는 크라우드소싱 서비스를 제공하는 기업을 의미한다.
서비스 제공 업체(20)는 의뢰자(10)로부터 제품 또는 서비스에 대한 프로젝트를 의뢰받으면, 해당 프로젝트에 대한 작업을 일반 대중(30)에게 배정하여 대중(30)으로부터 작업 결과를 제공받는다. 이후, 작업 결과를 기반으로 추출된 최종 산출물을 의뢰자(10)에게 제공한다.
이때, 서비스 제공 업체(20)는 크라우드소싱 플랫폼(이하, 플랫폼)을 통해 의뢰자(10) 및 대중(30)에게 크라우드소싱 서비스를 제공한다. 즉, 서비스 제공 업체(20)는 의뢰자(10)로부터 프로젝트를 의뢰받으면, 플랫폼에 프로젝트를 오픈한다. 이후, 대중(30)으로부터 오픈된 프로젝트에 대한 작업 결과를 제공받으면, 해당 프로젝트를 플랫폼 상에서 종료하고, 최종 산출물을 추출하여 의뢰자(10)에게 제공할 수 있다.
대중(30)은 플랫폼에 오픈된 프로젝트에 참여하는 일반 대중을 의미한다. 여기서, 대중(30)은 서비스 제공 업체(20)가 제공하는 애플리케이션 또는 웹사이트 등을 통해 플랫폼에 오픈된 프로젝트에 참여할 수 있다.
대중(30)은 작업자(32) 및 검수자(34)로 구성된다.
작업자(32)는 플랫폼에 오픈된 복수의 프로젝트 중 특정 프로젝트에 참여를 결정한다. 이후, 작업자(32)는 소스 데이터의 수집 또는 데이터 어노테이션 등의 작업을 수행하고, 이를 플랫폼에 전송한다.
검수자(34)는 플랫폼에 오픈된 복수의 프로젝트 중 특정 프로젝트에 참여를 결정한다. 이후, 검수자(34)는 작업자(32)가 수행한 작업 결과에 대한 검수를 수행한다. 검수자(34)는 검수 수행 결과로서, 검수 통과 처리 또는 반려 처리를 할 수 있고, 반려 처리시 반려 사유를 입력할 수 있다. 검수 통과의 경우 재작업과 이로 인한 재검수가 필요하지 않으므로, 검수 통과는 검수 완료와 동일한 의미를 가진다.
도 2는 본 발명의 일 실시예에 따른 크라우드소싱 기반의 프로젝트의 진행 프로세스를 설명하기 위한 흐름도이다.
먼저, 의뢰자(10)는 서비스 제공 업체(20)로 하나 이상의 프로젝트를 의뢰한다(S11).
이후, 서비스 제공 업체(20)는 의뢰된 프로젝트를 플랫폼 상에 오픈한다(S12). 이때, 서비스 제공 업체(20)는 프로젝트 오픈 전에, 해당 프로젝트의 난이도 등을 고려하여 등급을 결정할 수 있다. 즉, 난이도에 따라 어떤 등급 이상의 대중(30)에게 해당 프로젝트를 노출시킬지를 결정할 수 있다. 이에 따라, 프로젝트의 작업 결과의 신뢰도를 높일 수 있게 된다.
이후, 서비스 제공 업체(20)는 프로젝트의 등급에 따라 해당 등급 이상의 작업자(32)에게 작업을 할당하여 작업 요청한다(S13).
이후, 작업자(32)는 할당된 작업을 수행하게 된다(S14). 이때, 작업자(32)는 어떤 이유에 의해 작업 자체가 불가능한 작업에 대해서는 작업을 수행하지 않고 작업 불가 사유를 입력할 수 있다.
이후, 서비스 제공 업체(20)는 작업자(32)로부터 작업 결과를 제공받고(S15), 해당 작업 결과에 대한 검수 작업을 검수자(34)에게 할당하여 검수 요청한다(S16).
마찬가지로 본 발명의 일 실시예는 프로젝트의 난이도에 따라 설정된 등급 또는 검수자(34)의 자격 요건에 따라 수행 중인 전체 프로젝트 중 적합한 프로젝트만 검수자(34)에게 노출되게끔 할 수 있다.
이후, 검수자(34)는 할당된 검수를 수행하게 된다(S17). 이때, 검수자(34)는 작업이 적합하게 수행된 것으로 판단하면 검수 완료를 결정하고, 검수 작업이 잘못된 것으로 판단하면 반려 처리한다. 반려 처리 시, 검수자(34)는 어떤 이유로 작업이 잘못된 것으로 판단했는지에 대한 반려 사유를 입력한다.
이후, 서비스 제공 업체(20)는 검수자(34)로부터 검수 결과를 제공받는다(S18).
검수 결과가 검수 완료인 경우, 서비스 제공 업체(20)는 해당 작업 결과를 유효한 데이터로 사용하여, 이를 기반으로 하여 프로젝트 종료 시 최종 산출물을 추출하게 된다.
검수 결과가 반려 처리인 경우, 서비스 제공 업체(20)는 내부적으로 검수를 다시 수행하거나, 작업자(32)에게 다시 작업을 배정하여 재작업을 수행하게 할 수도 있다. 재작업시 검수자의 재검수가 필요하다.
이후, 서비스 제공 업체(20)는 프로젝트 기간이 종료되거나 충분한 유효 데이터를 확보하게 되면 해당 프로젝트를 종료하고(S19), 확보된 유효 데이터를 기반으로 최종 결과물을 산출하여 의뢰자(10)에게 제공한다(S20).
이때, 프로젝트 종료 전, 서비스 제공 업체(20)는 작업자(32) 및 검수자(34)의 수행 결과를 평가하고, 평가에 따라 작업 비용 및 검수 비용을 산출하여 작업자(32) 및 검수자(34)에게 지급한다.
도 1 및 도 2에서는 단순히 의뢰자(10), 서비스 제공 업체(20), 작업자(32), 검수자(34)로 표현하였으나, 이들은 각 참여자에 의해서 운용되는 스마트폰, 태블릿, PDA, 랩톱, 데스크톱, 서버 등과 같은 컴퓨터 장치 또는 전기 통신 장치를 의미한다.
도 3은 종래 작업 다중 할당을 위한 데이터 관리 방법을 설명하기 위한 도면이다.
종래의 작업 다중 할당 방식은 한 번에 10,000개의 데이터만 제어할 수 있으며, 실제 할당할 수 있는 수만큼 큐 영역에 데이터가 적재된다. 즉, 하나의 큐 영역에 적재되는 데이터의 수는 소스 데이터와 다중 할당 값의 곱셈 연산으로 정의될 수 있다.
이때, 종래 기술은 작업자들의 작업량이 수용 단위 최대치인 10,000개에 가까워지면, 다른 작업자들에 의해 현재 큐에 적재된 작업 항목에 대한 작업이 모두 다중 할당될 때까지 일부 작업 대기자가 발생한다. 그리고 현재 큐에 대한 다중 할당이 완성되면 추가로 10,000개의 작업 항목 적재가 가능한 큐가 추가 생성된다. 이와 같은 작업 대기자가 발생하는 것은 결국 리소스의 낭비와 더불어, 프로젝트의 일정 지연으로도 이어질 수 있다.
또한, 어느 작업자에게 작업 다중 할당을 하기 위해서는 전체 큐 영역을 스캔하는 과정이 필요하다. 즉, 도 3과 같이 큐 영역의 중간 부분에 적재된 작업 데이터(예를 들어, 4번 작업 데이터)에 상응하는 작업을 특정 작업자에게 할당하기 위해서는 큐 전체에 적재된 10,000개의 작업 데이터를 모두 스캔해야만 하며, 이는 다른 작업자들에 대해서는 속도 저하로 이어지게 된다.
이와 더불어, 종래 기술은 자바 List 자료 구조의 한계로 인해, 작업자 간의 작업량 차이가 클수록 스캔 성능 저하가 발생하는 문제가 있었다. 즉, 이미 완료한 작업과 동일한 작업을 작업자에게 할당되지 않도록 하기 위한 스캔 과정이 필요한데, 이때 어느 한 작업자가 혼자서 상당한 양의 작업을 수행하였다면, 다른 작업자에게 작업 할당시 작업한 수만큼 의미없는 스캔이 급수적으로 발생하며, 이는 결국 스캔 성능 저하로 이어진다.
이와 달리, 본 발명의 일 실시예는 작업 할당 티어, 작업 재할당 티어 및 반려 작업 티어에서의 큐 영역과 스택 영역을 정의하고, 큐 영역과 스택 영역에서의 각 항목의 키-값에 대한 조회 및 관리를 통해, 작업 다중 할당을 위한 스캔 과정에서의 부하가 없으며, 단일 스캔을 통해 빠르게 할당 가능한 작업을 스캔하여 작업자에게 할당할 수 있다.
이하에서는 도 4 내지 도 10b를 참조하여 본 발명의 일 실시예에 따른 크라우드소싱 기반 프로젝트의 티어 자료 구조를 활용한 작업 다중 할당 방법을 설명하도록 한다.
본 발명의 일 실시예에 따른 크라우드소싱 기반 프로젝트의 티어 자료 구조를 활용한 작업 다중 할당 방법은, 각각의 작업을 n명의(n은 1보다 큰 자연수) 서로 다른 복수의 작업자(32)에게 중복적으로 할당하는 다중 할당 방식을 적용한다. 이때, 하나의 작업마다 작업을 수행하는 작업자(32)의 수는 프로젝트의 모든 작업에 동일하게 설정될 수 있다. 예를 들어, 특정 작업을 3명의 작업자에게 중복 배정한 경우, 다른 작업 역시 3명의 작업자에게 중복 배정될 수 있다.
이와 더불어, 본 발명의 일 실시예는 티어(tier) 자료 구조를 활용하여 복수의 작업자(32)에게 다중으로 작업을 할당하는 것을 특징으로 한다.
일 실시예로, 티어 자료 구조는 작업자(32)에게 새로운 작업을 할당하기 위한 할당 티어 저장소, 할당된 작업에 대한 재할당이 필요한 경우를 위한 재할당 티어 저장소 및 할당된 작업에 대한 작업 결과가 제출되고 해당 작업 결과가 반려된 경우 이를 관리하기 위한 반려 티어 저장소를 포함한다.
이러한 각 티어 저장소는 큐 또는 스택을 포함하여 구성될 수 있다. 본 발명은 각 티어 저장소의 큐 또는 스택에서의 데이터의 삽입 및 인출 이벤트를 통해, 티어 자료 구조에 대한 단일 스캔만으로도 다중 할당되어야 할 복수의 작업을 보다 빠르게 관리할 수 있다.
이하에서는 할당 티어 저장소, 반려 티어 저장소 및 재할당 티어 저장소에서 수행되는 일련의 과정에 대하여 각각 설명한 후, 각 티어 저장소의 우선 순위에 따라 수행되는 과정을 설명하도록 한다.
도 4는 할당 티어 저장소를 이용하여 작업을 할당하는 과정을 설명하기 위한 순서도이다. 도 5a 내지 도 5g는 할당 티어 저장소를 이용하여 작업을 할당하는 일 예시를 설명하기 위한 도면이다.
한편, 도 4에 도시된 단계들은 서비스 제공 업체(20)에 의해 운영되는 플랫폼 서버(이하, 서버)에 의해 수행되는 것으로 이해될 수 있지만, 이에 제한되는 것은 아니다.
먼저, 서버는 작업자(32)에게 새로운 작업을 할당하기 위한 할당 티어 저장소를 구성하고(S110), 할당 티어 저장소를 이용하여 작업 할당을 요청하는 작업자(이하, 대상 작업자)에게 프로젝트의 작업을 할당하여 작업 수행을 요청한다(S120).
일 실시예로, 할당 티어 저장소는 큐(queue)와 스택(stack)으로 구성된다.
구체적으로, 큐에는 작업자(32)에게 할당된 바 없는 작업에 상응하는 작업 데이터가 삽입되도록 구성된다. 그리고 스택은 각각 j회 할당된 바 있는 작업에 상응하는 작업 데이터가 삽입되며, 하나 이상의 제 j 스택으로 구성된다. 예를 들어, 각각의 작업을 3명의 서로 다른 복수의 작업자에게 다중 할당해야 되는 경우, 할당 티어 저장소는 하나의 큐와 제1 스택, 제2 스택으로 구성된다. 이하, 본 발명의 설명에서는 다중 할당되는 작업자의 수는 3명인 것을 예로 들어 설명하도록 한다.
할당 티어 저장소의 큐 또는 스택에 삽입되어 관리되는 작업 데이터는 작업의 식별자 및 n개의 다중 할당 데이터를 포함하는 키-값(key-value) 쌍으로 구성된다. 그리고, 다중 할당 데이터는 작업이 할당된 작업자(32)의 식별자 및 다중 할당 인덱스를 포함하는 키-값 쌍으로 구성된다.
예를 들어, 도 5a의 제1 스택의 최상단(top)의 작업 데이터는 "4번" 작업의 식별자와 3개의 다중 할당 데이터를 키-값으로 가지며, 이 중 5번 작업자에게 할당된 다중 할당 데이터는 "5번" 작업자의 식별자와 다중 할당 인덱스 "1"을 키-값으로 갖도록 구성된다.
서버는 프로젝트의 작업을 작업자(32)에게 할당하여 작업 수행을 요청하기 위해, 하나 이상의 제j 스택을 대상으로 내림차순으로, 현재 스택의 최상위의 작업 데이터를 추출한다. 그리고 현재 스택의 최상위 작업 데이터에 대상 작업자(32)의 식별자가 존재하는지 여부를 확인한다.
서버는 확인 결과, 현재 스택의 최상위의 작업 데이터에 대상 작업자(32)의 식별자가 존재하면 다음 스택으로 이동한다. 이때, 서버는 현재 스택의 작업 데이터가 모두 이동되어 비어있는 경우, 또는 현재 스택이 삭제된 경우에도 다음 스택으로 이동한다.
도 5a를 참조하면, 13번 작업자에게 작업을 할당하여 작업 수행을 요청시, 내림차순에 따라 먼저 제2 스택을 대상으로 최상위의 작업 데이터를 추출한다. 그리고 제2 스택의 최상위 작업 데이터에 13번 작업자의 식별자가 존재하는지 여부를 확인한다. 이때, 제2 스택은 총 3명의 작업자에게 각각 다중 할당 되어야할 작업 중 2명에게 이미 작업이 할당된 작업 데이터를 삽입하고 있는 스택으로, 최상위(n-1번째) 스택에 해당한다.
이때 제2 스택의 최상위 작업 데이터를 확인한 결과, 최상위 작업 데이터인 5번 작업 데이터에는 "10번 작업자-다중 할당 인덱스 1"과 "13번 작업자-다중 할당 인덱스 2"가 키-값으로 기록되어 있는 상태이며, 이는 5번 작업 데이터에 상응하는 작업이 10번 작업자에게 먼저 할당되었고, 이후 13번 작업자에게 할당되어 작업이 수행되었음을 의미한다.
이와 같이, 제2 스택의 5번 작업 데이터에는 13번 작업자의 식별자가 이미 존재하므로, 이 경우 서버는 5번 작업 데이터에 상응하는 작업을 13번 작업자에게 할당하지 않고, 다음 스택인 제1 스택으로 이동한다.
서버는 현재 스택의 최상위 작업 데이터에 대상 작업자(32)의 식별자가 존재하지 않으면, 현재 스택으로부터 작업 데이터를 인출(pop)하고, 현재 스택으로부터 인출된 작업 데이터에 상응하는 작업을 대상 작업자(32)에게 할당하여 작업 수행을 요청한다. 그리고 현재 스택으로부터 인출된 작업 데이터의 다중 할당 데이터에 대상 작업자(32)의 식별자를 입력하고, 현재 스택으로부터 인출된 작업 데이터를 이전 스택에 삽입(push)한다.
도 5b를 참조하면, 제2 스택에서 제1 스택으로 이동한 후 제1 스택의 최상위 작업 데이터를 확인한 결과, 현재 스택인 제1 스택의 최상위 작업 데이터인 4번 작업 데이터에는 13번 작업자의 식별자가 존재하지 않으므로, 서버는 제1 스택의 4번 작업 데이터를 인출하고, 4번 작업 데이터에 상응하는 작업을 13번 작업자에게 할당하여 작업 수행을 요청한다.
그리고 서버는 제1 스택으로부터 인출된 4번 작업 데이터의 다중 할당 데이터에 13번 작업자의 식별자를 입력하고, 4번 작업 데이터를 이전 스택인 제2 스택에 삽입한다.
한편, 서버는 제1 스택이 비어있거나, 제1 스택이 삭제된 경우, 또는 제1 스택의 최상위의 작업 데이터에 대상 작업자(32)의 식별자가 존재하면, 큐로 이동한다. 즉, 서버는 내림차순으로 j개의 스택의 최상위 작업 데이터를 확인하며, 가장 마지막 스택인 제1 스택을 확인한 결과 대상 작업자(32)에게 작업 할당할 수 없는 상태인 경우, 다음 순번인 큐로 이동한다.
이후, 서버는 큐로부터 작업 데이터를 인출(dequeue)하고, 큐로부터 인출된 작업 데이터에 상응하는 작업을 대상 작업자(32)에게 할당하여 작업 수행을 요청한다. 그리고 큐로부터 인출된 작업 데이터의 다중 할당 데이터에 대상 작업자(32)의 식별자를 입력하고, 큐로부터 인출된 작업 데이터를 제1 스택에 삽입한다.
도 5c를 참조하면, 5번 작업자에게 작업을 할당하여 작업 수행을 요청시, 내림차순에 따라 먼저 제2 스택을 대상으로 최상위의 작업 데이터를 추출하여 확인 결과, 제2 스택의 최상위 작업 데이터인 4번 작업 데이터에는 5번 작업자의 식별자가 존재하므로, 서버는 4번 작업 데이터에 상응하는 작업을 5번 작업자에게 할당하지 않고, 다음 스택인 제1 스택으로 이동한다.
제2 스택에서 제1 스택으로 이동한 후 제1 스택의 최상위 작업 데이터를 확인한 결과, 현재 스택인 제1 스택의 최상위 작업 데이터인 2번 작업 데이터에는 역시 5번 작업자의 식별자가 존재하므로, 서버는 2번 작업 데이터에 상응하는 작업을 5번 작업자에게 할당하지 않고, 다음 큐로 이동한다.
도 5d를 참조하면, 큐에는 아직 작업자(32)에게 할당된 적이 없는 작업에 상응하는 작업 데이터가 삽입되어 있으며, 서버는 스택에서와 같은 확인 과정 없이 큐의 최상위에 있는 6번 작업 데이터를 인출하여 이에 상응하는 작업을 5번 작업자에게 할당하여 작업 수행을 요청한다. 그리고 서버는 큐로부터 인출된 6번 작업 데이터의 다중 할당 데이터에 5번 작업자의 식별자를 입력하고, 6번 작업 데이터를 제1 스택에 삽입한다.
이와 같은 방식에 따라, 본 발명의 일 실시예는 큐에 삽입된 모든 작업 데이터를 인출하여 확인해야 하는 기존과는 달리, 스택 또는 큐에 삽입된 최상위 작업 데이터의 단일 스캔만을 통해 보다 빠른 다중 작업 할당이 가능하다는 장점이 있다.
이후, 서버는 현재 스택으로부터 작업 데이터를 인출한 후, 현재 스택에 작업 데이터가 더 이상 존재하지 않을 경우 현재 스택을 삭제한다.
또한, 서버는 현재 스택으로부터 인출된 작업 데이터를 이전 스택에 삽입하기 전에, 이전 스택이 삭제되어 있으면, 이전 스택을 다시 생성한다. 마찬가지로, 큐로부터 인출된 작업 데이터를 제1 스택에 삽입하기 전에, 제1 스택이 삭제되어 있으면, 제1 스택을 다시 생성한다.
예를 들어, 현재 스택 및 큐의 상태가 도 5e와 같은 경우에서 13번 작업자에게 작업을 할당하여 작업 수행 요청시, 제2 스택의 최상위 4번 작업 데이터에는 13번 작업자의 식별자가 존재하므로, 서버는 제2 스택에서 제1 스택으로 이동하여 최상위 작업 데이터를 확인한다. 확인 결과, 제1 스택의 2번 작업 데이터에는 13번 작업자의 식별자가 존재하지 않으므로, 서버는 2번 작업 데이터에 상응하는 작업을 13번 작업자에게 할당하여 작업 수행을 요청하고, 2번 작업 데이터에 13번 작업자의 식별자를 입력한 후 2번 작업 데이터를 제2 스택으로 이동시킨다.
도 5f는 도 5e에서 2번 작업 데이터를 제2 스택으로 이동시킨 후 상태를 도시한 것으로, 현재 스택인 제1 스택으로부터 2번 작업 데이터를 인출함에 따라 제1 스택은 작업 데이터가 더 이상 존재하지 않으므로 서버는 제1 스택을 삭제하게 된다.
이후 또 다시 13번 작업자에게 작업을 할당하여 작업 수행 요청시, 제2 스택의 최상위 작업 데이터에는 13번 작업자의 식별자가 존재하므로 제1 스택으로 이동하게 되며, 제1 스택은 이전 단계에서 삭제되었므로 그 다음 큐로 이동하게 된다.
서버는 스택에서와 같은 확인 과정 없이 큐의 최상위에 있는 6번 작업 데이터를 인출하여 상응하는 작업을 13번 작업자에게 할당하여 작업 수행을 요청한다. 그리고 서버는 큐로부터 인출된 6번 작업 데이터의 다중 할당 데이터에 13번 작업자의 식별자를 입력하고, 6번 작업 데이터를 제1 스택에 삽입한다. 이때, 제1 스택은 이전 단계에서 삭제되었는바, 서버는 6번 작업 데이터의 삽입을 위해 다시 제1 스택을 생성한다. 이러한 과정은 큐와 스택간의 관계뿐만 아니라 스택간의 관계에서도 동일하게 적용될 수 있다.
일 실시예로, 서버는 현재 스택이 제n-1 스택, 즉 생성된 스택 중 가장 최상위 스택인 제n-1 스택으로부터 작업 데이터를 인출하고, 제n-1 스택으로부터 인출된 작업 데이터에 상응하는 작업을 대상 작업자(32)에게 할당하여 작업 수행을 요청함에 따라, 제n-1 스택으로부터 인출된 작업 데이터를 드롭(drop)한다.
도 5g를 참조하면 서버는 현재 스택이 제n-1 스택인 제2 스택에 삽입되어 있는 2번 작업 데이터에 상응하는 작업을 1번 작업자에게 할당하기 위하여, 2번 작업 데이터를 인출한 후 상응 작업을 1번 작업자에게 할당하고, 2번 작업 데이터의 다중 할당 데이터에 1번 작업자의 식별자를 입력한다.
이때, 제2 스택은 최상위 스택에 해당하므로, 이 경우 서버는 추가적인 스택을 생성하지 않으며, 2번 작업 데이터는 3명의 작업자에게 모두 작업이 다중 할당되었으므로 서버는 2번 작업 데이터를 할당 티어 저장소에서 드롭되도록 한다.
이러한 과정을 통해, 본 발명의 일 실시예는 다중 할당이 완료될수록 큐 또는 스택에 남은 잔여 작업 데이터만을 관리하면 되므로, 프로젝트가 진행될수록 더욱 빠른 스캔 및 작업 다중 할당이 가능하다는 장점이 있다.
도 6은 반려 티어 저장소를 이용하여 재작업 수행을 요청하는 과정을 설명하기 위한 순서도이다. 도 7a 내지 도 7b는 반려 티어 저장소를 이용하여 재작업 수행을 요청하는 일 예시를 설명하기 위한 도면이다.
도 2에서 설명한 바와 같이, 작업자(32)에게 작업이 할당되어 작업 수행이 요청된 후, 작업자(32)는 작업 결과를 제출하고, 검수자(34)는 작업 결과에 대하여 검수한 결과로 검수 통과 또는 반려를 입력한다.
이때, 서버는 검수 결과에 따라 반려된 작업 결과(이하, 반려된 작업 결과)가 존재하는 작업자(32)에 상응하는 하나 이상의 반려 데이터를 포함하는 반려 티어 저장소를 구성하고(S210), 반려 티어 저장소를 이용하여 대상 작업자(32)에게 반려된 작업 결과가 존재하면, 대상 작업자(32)에게 재작업 수행을 요청한다(S220).
이때, 반려 데이터는 반려된 작업 결과가 존재하는 작업자(32)의 식별자 및 반려 작업 큐를 포함하는 키-값 쌍으로 구성되며, 반려 작업 큐에는 반려된 작업 결과에 상응하는 작업의 식별자가 삽입된다.
예를 들어, 도 7a에 도시된 바와 같이 반려 데이터는 "4번 작업자-반려 작업 큐", "8번 작업자-반려 작업 큐", "1번 작업자-반려 작업 큐"의 형태의 키-값 쌍으로 구성된다. 그리고 4번 작업자의 반려 작업 큐에는 반려된 작업 결과에 상응하는 작업의 식별자로 21번, 47번, 90번, 8번, 16번이 삽입되어 있다. 이러한 반려 데이터는 작업자(32)의 반려된 작업 결과가 생성될 때마다 작업자(32)에 대응되도록 생성되므로, 반려 작업 큐 역시 반려된 작업 결과를 갖는 작업자(32)마다 대응되도록 생성된다.
서버는 반려된 작업 결과가 발생하면, 반려된 작업 결과를 입력한 작업자(32)에 상응하는 반려 작업 큐에 반려된 작업 결과에 상응하는 작업의 식별자를 삽입(enqueue)한다.
예를 들어, 4번 작업자의 경우 반려 작업 큐에 47, 90, 8, 16번의 반려된 작업 결과에 상응하는 작업의 식별자가 삽입된 상태에서, 21번의 작업이 반려된 경우, 서버는 47번 이후의 위치에 21번 작업의 식별자를 삽입하게 된다.
이후, 서버는 작업자(32)에게 재작업 수행 요청시, 반려 티어 저장소의 하나 이상의 반려 데이터에 대상 작업자(32)의 식별자가 존재하는지를 확인한다.
확인 결과, 반려 티어 저장소의 하나 이상의 반려 데이터에 대상 작업자(32)의 식별자가 존재하면, 서버는 대상 작업자(32)에 상응하는 반려 작업 큐로부터 반려된 작업 결과에 상응하는 작업의 식별자를 인출하고, 인출된 작업의 식별자에 상응하는 작업에 대해서 대상 작업자(32)에게 재작업 수행을 요청한다.
도 7a에서 4번 작업자에게 작업 또는 재작업 수행 요청시, 서버는 반려 티어 저장소를 먼저 확인하며, 확인 결과 4번 작업자에 대한 작업자의 식별자가 존재하므로, 반려 작업 큐로부터 반려된 작업 결과에 상응하는 16번 작업의 식별자를 인출하며, 인출된 16번 작업의 식별자에 상응하는 작업에 대하여 4번 작업자에게 재작업 수행을 요청한다.
16번 작업의 식별자에 상응하는 작업에 대한 재작업이 완료되면 16번 작업의 식별자는 드롭되며, 만약 재반려되어 재작업이 필요한 경우 4번 작업자에 상응하는 반려 작업 큐에 다시 재삽입된다.
이와 달리, 서버는 확인 결과 반려 티어 저장소의 하나 이상의 반려 데이터에 대상 작업자(32)의 식별자가 존재하지 않으면, 할당 티어 저장소를 이용하여 대상 작업자(32)에게 프로젝트의 작업을 할당하여 작업 수행을 요청하게 된다.
즉, 본 발명의 일 실시예는 작업자(32)에게 작업 수행 요청시, 먼저 반려된 작업 결과가 있는지를 반려 티어 저장소의 스캔을 통해 확인하며, 반려된 작업 결과가 없는 경우에는 할당 티어 저장소를 이용하여 대상 작업자(32)에게 작업을 할당하여 작업 수행을 요청한다.
예를 들어, 도 7b와 같이 3번 작업자에게 작업 수행을 요청하는 경우, 현재 3번 작업자는 작업 결과에 대하여 반려된 바가 없어, 반려 티어 저장소에 3번 작업자의 식별자가 존재하지 않는 상태이다. 이 경우, 서버는 반려 티어 저장소에서 할당 티어 저장소로 이동한 후, 도 4 내지 도 5g에서 설명한 바와 같이 최상위 스택부터 순차적으로 스캔하여 작업 할당 여부를 결정하게 된다.
도 8은 재할당 티어 저장소를 이용하여 작업 수행을 요청하는 과정을 설명하기 위한 순서도이다. 도 9a 내지 도 9c는 재할당 티어 저장소를 이용하여 작업 수행을 요청하는 일 예시를 설명하기 위한 도면이다.
서버는 새로운 작업자(32)에게 재할당되어야 하는 작업(이하, 재할당 필요 작업)에 상응하는 재할당 데이터가 삽입되는 재할당 티어 저장소를 구성하고(S310), 재할당 티어 저장소를 이용하여 대상 작업자(32)에게 프로젝트의 작업을 재할당하여 작업 수행을 요청한다(S320).
일 실시예로, 재할당 티어 저장소는 k번째(k는 자연수) 재할당되는 회수를 기반으로 재할당 데이터가 삽입되는, 하나 이상의 제k 큐를 포함하도록 구성된다. 예를 들어, 작업 할당이 해제되거나 작업 포기 등의 이유로 작업자(32)에게 할당된 작업을 새로운 작업자(32)에게 최초로 재할당해야 하는 경우, 재할당 필요 작업에 상응하는 재할당 데이터는 제1 큐에 삽입된다.
그리고 제1 큐에 삽입된 재할당 데이터를 대상으로 다시 새로운 작업자에게 1회차로 재할당하였으나 작업 수행이 이루어지지 않아 또다시 2회차 재할당되어야 하는 경우, 해당 재할당 데이터는 제2 큐에 삽입된다.
즉, 본 발명의 일 실시예에서 재할당 티어 저장소의 큐의 개수는 재할당되는 회수에 상응하는 개수만큼 구성된다.
재할당 티어 저장소의 큐에 삽입되어 관리되는 재할당 데이터는 재할당 필요 작업의 식별자 및 재할당 필요 작업이 할당되었던 하나 이상의 이전 작업자의 식별자 세트를 포함하는 키-값 쌍으로 구성된다.
예를 들어, 도 9a에서 재할당 티어 저장소의 제1 큐에 삽입된 재할당 데이터는 "3번" 재할당 필요 작업의 식별자와 "3번" 작업에 상응하는 작업을 할당받은 이력이 있는 "7번" 작업자의 식별자를 포함하는 키-값 쌍으로 구성된다.
또한, 제2 큐에 삽입된 재할당 데이터는 "1번" 재할당 필요 작업의 식별자와 "1번" 작업을 할당 또는 재할당 받은 이력이 있는 "10번", "13번" 작업자의 식별자 세트를 포함하는 키-값 쌍으로 구성된다.
서버는 재할당 필요 작업이 발생하면, 재할당 필요 작업의 재할당 회수에 상응하는 제k 큐에 재할당 필요 작업에 상응하는 재할당 데이터를 삽입한다. 즉, 도 9a에서 3번 작업 데이터에 상응하는 작업에 대하여 7번 작업자가 작업을 포기함에 따라 재할당이 필요하게 된 경우, 서버는 재할당이 1회차로 필요한 경우이므로 재할당 필요 작업에 상응하는 3번 재할당 데이터를 제1 큐에 삽입한다.
서버는 재할당 티어 저장소에 삽입된 재할당 데이터에 상응하는 작업의 재할당 수행 요청을 위해, 하나 이상의 제k 큐를 대상으로 내림차순으로, 현재 큐로부터 재할당 데이터를 인출하여, 현재 큐로부터 인출된 재할당 데이터에 대상 작업자(32)의 식별자가 존재하는지 여부를 확인한다.
서버는 확인 결과, 현재 큐로부터 인출된 재할당 데이터에 대상 작업자(32)의 식별자가 존재하지 않으면, 현재 큐로부터 인출된 재할당 데이터에 상응하는 작업을 대상 작업자(32)에게 재할당하여 작업 수행을 요청한다. 그리고 현재 큐로부터 인출된 재할당 데이터의 재할당 필요 작업의 식별자 및 대상 작업자(32)의 식별자가 추가된 하나 이상의 이전 작업자(32)의 식별자 세트를 포함하는 임시 키를 생성한다.
도 9a를 참조하면, 서버는 제2 큐에 삽입된 1번 재할당 데이터를 인출하여 확인한 결과 1번 작업에 상응하는 재할당 데이터에는 5번 작업자의 식별자가 존재하지 않으므로, 서버는 1번 재할당 데이터에 상응하는 작업을 5번 작업자에게 재할당하여 작업 수행을 요청한다. 이때, 서버는 5번 작업자가 재할당받은 작업을 완료할 경우 1번 재할당 데이터는 드롭시키나, 재할당받은 작업을 작업 포기 등 다시 재할당 이슈가 발생하거나, 추후 할당 티어 저장소에서 동일한 작업을 할당받지 않도록 하기 위하여, 5번 작업자의 식별자를 이전 작업자의 식별자 세트에 포함시켜 임시 키로 생성한다.
이와 달리, 서버는 현재 큐로부터 인출된 재할당 데이터에 대상 작업자(32)의 식별자가 존재하면, 다음 큐로 이동한다. 이때, 서버는 현재 큐의 작업 데이터가 모두 이동되어 비어있는 경우, 또는 현재 큐가 삭제된 경우에도 다음 큐로 이동한다.
도 9b를 참조하면, 서버는 10번 작업자에게 작업 요청시 반려 티어 저장소에 10번 작업자와 상응하는 반려 데이터가 없어 재작업 수행은 요청하지 않고 재할당 티어로 이동한다. 재할당 티어의 제2 큐에 삽입된 1번 재할당 데이터에는 이미 10번 작업자에게 작업이 할당된 이력이 있는바, 서버는 이 경우 다음 큐인 제1 큐로 이동한다. 제1 큐에 삽입된 3번 재할당 데이터에는 10번 작업자의 식별자가 존재하지 않으므로, 서버는 3번 재할당 데이터에 상응하는 작업을 10번 작업자에게 재할당하여 작업 수행을 요청하며, 이와 관련한 임시 키를 생성하게 된다.
이후, 서버는 현재 큐로부터 재할당 데이터를 인출한 후, 현재 큐에 재할당 데이터가 더 이상 삽입되어 있지 않게 되면 현재 큐를 삭제한다. 그리고 재할당 필요 작업에 상응하는 재할당 데이터를 다음 큐에 삽입하기 전에, 재할당 필요 작업의 재할당 회수에 상응하는 제k 큐가 삭제되어 있으면 제k 큐를 다시 생성한다.
예를 들어, 도 9b에서 재할당 티어 저장소의 제1 큐에 재할당 데이터가 인출됨에 따라 제1 큐에는 더 이상 재할당 데이터가 삽입되어 있지 않으므로, 서버는 도 9c와 같이 제1 큐를 삭제한다.
제1 큐가 삭제된 상태에서 11번 작업을 6번 작업자가 수행하지 못해 11번 작업에 대한 최초 재할당이 필요하게 된 경우, 서버는 재할당 필요 작업의 재할당 회수에 상응하는 제1 큐를 다시 생성한 후, 11번 작업에 상응하는 재할당 데이터를 제1 큐에 삽입시킨다.
한편, 도 9b와 같이 대상 작업자(32)에게 재할당되었던 재할당 필요 작업이 새로운 작업자(32)에게 다시 재할당되어야 하는 경우가 발생할 수 있다. 이 경우, 서버는 임시 키를 이용하여, 대상 작업자(32)에게 재할당되었던 재할당 필요 작업의 재할당 회수에 상응하는 제k 큐에, 대상 작업자(32)에게 재할당되었던 재할당 필요 작업에 상응하는 재할당 데이터를 삽입한다.
예를 들어, 서버는 제1 큐에 삽입되어 있는 3번 재할당 데이터에 상응하는 작업을 10번 작업자에게 재할당하여 작업 수행을 요청하였고, 이와 관련한 임시 키를 생성하였다. 이후, 10번 작업자에 의해 해당 재할당된 작업이 수행되지 못하여 다시 재할당이 필요하게 된 경우, 서버는 10번 작업자의 식별자가 추가된 임시 키를 이용하여 재할당 회수에 상응하는 제2 큐에 3번 재할당 데이터를 삽입한다.
한편, 전술한 바와 같이 서버는 현재 큐의 작업 데이터가 모두 이동되어 비어있는 경우, 또는 현재 큐가 삭제된 경우에도 다음 큐로 이동한다. 이와 같은 케이스뿐만 아니라 서버는 현재 큐로부터 인출된 재할당 데이터에 대상 작업자(32)의 식별자가 존재하면, 현재 큐로부터 인출된 재할당 데이터를 현재 큐에 삽입하고 다음 큐로 이동하게 된다.
도 9b를 참조하면, 서버는 재할당 티어 저장소의 제2 큐에 삽입된 1번 재할당 데이터를 인출하여 확인한 결과, 1번 재할당 데이터에는 10번 작업자의 식별자가 포함되어 있으므로, 1번 재할당 데이터를 현재 큐인 제2 큐의 최하단부에 재삽입시킨후, 다음 큐인 제1 큐로 이동하여 재할당 가부를 확인한다.
도 10a 내지 도 10b는 각 티어 저장소를 이용하여 작업 수행을 요청하는 일 예시를 설명하기 위한 도면이다.
한편, 본 발명의 일 실시예에서 서버는 임시 키를 이용하여 특정 작업자(32)에게 재할당된 작업을 동일한 작업자(32)에게 할당되는 것을 방지할 수 있다.
즉, 서버는 프로젝트의 작업을 작업자(32)에게 할당하여 작업 수행을 요청함에 있어, 할당 티어 저장소의 현재 스택의 최상위 작업 데이터의 작업의 식별자를 확인하고, 현재 스택의 최상위의 작업 데이터의 작업자(32)의 식별자를 포함하는 임시 키에 대상 작업자(32)의 식별자가 존재하는지 여부를 확인한다.
확인 결과, 현재 스택의 최상위 작업 데이터의 작업의 식별자를 포함하는 임시 키에 대상 작업자(32)의 식별자가 존재하지 않을 경우, 현재 스텍의 최상위 작업 데이터에 상응하는 작업을 작업자(32)에게 할당되도록 한다.
도 10a를 참조하면, 서버는 반려 티어 저장소를 확인한 결과 10번 작업자에 대한 반려된 작업 결과가 없고, 재할당 티어 저장소를 확인한 결과 할당할 수 있는 재할당 필요 데이터도 존재하지 않아, 10번 작업자에게 작업 할당을 위해 할당 티어 저장소로 이동하여 작업을 할당해야 한다.
할당 티어 저장소의 제2 스택의 최상위 5번 작업 데이터에는 10번 작업자의 식별자가 존재하므로, 서버는 제1 스택으로 이동하며, 제1 스택의 최상위에 위치한 4번 작업 데이터에는 10번 작업자의 식별자가 존재하지 않고, 임시 키에도 4번 재할당 데이터와 관련하여 10번 작업자에게 재할당한 이력이 존재하지 않는다. 따라서, 서버는 제1 스택의 4번 작업 데이터를 인출하고, 제1 스택으로부터 인출된 4번 작업 데이터에 상응하는 작업을 10번 작업자에게 할당하여 작업 수행을 요청한다. 그리고 제1 스택으로부터 인출된 4번 작업 데이터의 다중 할당 데이터에 10번 작업자의 식별자를 입력하고, 제1 스택으로부터 인출된 4번 작업 데이터를 제2 스택에 삽입한다.
만약, 도 10b와 같이 제1 스택의 최상위 작업 데이터가 4번이 아닌 3번 작업 데이터일 경우, 임시 키에는 3번 재할당 데이터가 10번 작업자의 식별자를 포함하고 있으므로, 이 경우 서버는 3번 작업 데이터를 10번 작업자에게 중복 할당되지 않도록 하기 위하여 다음 스택으로 이동하며, 현재 스택이 제1 스택인 경우 큐로 이동하게 된다.
전술한 바와 같이, 본 발명의 일 실시예는 할당 티어 저장소, 재할당 티어 저장소 및 반려 티어 저장소를 이용하고 있으며, 작업자(32)에게 작업을 할당하고자 하는 경우에는 반려 티어 저장소, 재할당 티어 저장소 및 할당 티어 저장소의 순으로 큐 또는 스택을 스캔하여 작업을 할당한다.
도 10b를 참조하면, 서버는 먼저 반려 티어 저장소의 하나 이상의 반려 데이터를 확인하여 대상 작업자(32)에게 재작업 수행을 요청해야 하는지 여부를 결정하며, 반려 티어 저장소의 하나 이상의 반려 데이터에 대상 작업자(32)의 식별자가 존재하지 않으면, 재할당 티어 저장소를 이용하여 대상 작업자(32)에게 프로젝트의 작업을 재할당하여 작업 수행을 요청하게 된다.
만약, 재할당 티어 저장소의 현재 큐로부터 인출된 재할당 데이터에 대상 작업자(32)의 식별자가 존재하거나, 재할당 티어 저장소에 재할당 데이터가 더 이상 존재하지 않거나 큐가 삭제된 경우, 서버는 할당 티어 저장소를 이용하여 대상 작업자(32)에게 프로젝트의 작업을 할당하여 작업 수행을 요청한다.
한편, 상술한 설명에서, 단계 S110 내지 S320은 본 발명의 구현예에 따라서, 추가적인 단계들로 더 분할되거나, 더 적은 단계들로 조합될 수 있다. 또한, 일부 단계는 필요에 따라 생략될 수도 있고, 단계 간의 순서가 변경될 수도 있다. 아울러, 기타 생략된 내용이라 하더라도 후술하는 도 11의 내용은 도 1 내지 도 10b의 크라우드소싱 기반 프로젝트의 티어 자료 구조를 활용한 다중 할당 방법에도 적용될 수 있다.
이하에서는 본 발명의 일 실시예에 따른 크라우드소싱 기반 프로젝트의 티어 자료 구조를 활용한 다중 할당 장치(400, 이하 작업 다중 할당 장치라 한다)에 대하여 설명하도록 한다.
도 11은 본 발명의 일 실시예에 따른 작업 다중 할당 장치(400)를 설명하기 위한 도면이다.
도 11을 참조하면, 본 발명의 일 실시예에 따른 작업 다중 할당 장치(400)는 메모리(410) 및 프로세서(420)를 포함한다.
메모리(410)에는 각각의 작업을 n명의(n은 1보다 큰 자연수) 서로 다른 복수의 작업자에게 티어 자료 구조를 활용한 다중 작업 할당을 위한 프로그램이 저장된다.
프로세서(420)는 메모리(410)에 저장된 프로그램을 실행시킨다. 프로세서(420)는 메모리(410)에 저장된 프로그램을 실행시킴에 따라, 큐와 하나 이상의 스택을 포함하는 할당 티어 저장소를 구성하고, 할당 티어 저장소를 이용하여, 대상 작업자(32)에게 프로젝트의 작업을 할당하여 작업 수행을 요청한다.
이때, 프로세서(420)는 현재 스택의 최상위 작업 데이터를 추출하여 대상 작업자(32)의 식별자가 존재하는지 확인하고, 확인 결과 존재하지 않으면, 현재 스택으로부터 작업 데이터를 인출하여 상응하는 작업을 대상 작업자(32)에게 할당하여 작업 수행을 요청한다. 그리고 현재 스택으로부터 인출된 작업 데이터의 다중 할당 데이터에 대상 작업자(32)의 식별자를 입력하며, 현재 스택으로부터 인출된 작업 데이터를 이전 스택에 삽입시킨다.
이상에서 전술한 본 발명의 일 실시예에 따른 크라우드소싱 기반 프로젝트의 티어 자료 구조를 활용한 작업 다중 할당 방법은, 하드웨어인 컴퓨터와 결합되어 실행되기 위해 프로그램(또는 어플리케이션)으로 구현되어 매체에 저장될 수 있다.
상기 전술한 프로그램은, 상기 컴퓨터가 프로그램을 읽어 들여 프로그램으로 구현된 상기 방법들을 실행시키기 위하여, 상기 컴퓨터의 프로세서(CPU)가 상기 컴퓨터의 장치 인터페이스를 통해 읽힐 수 있는 C, C++, JAVA, Ruby, 기계어 등의 컴퓨터 언어로 코드화된 코드(Code)를 포함할 수 있다. 이러한 코드는 상기 방법들을 실행하는 필요한 기능들을 정의한 함수 등과 관련된 기능적인 코드(Functional Code)를 포함할 수 있고, 상기 기능들을 상기 컴퓨터의 프로세서가 소정의 절차대로 실행시키는데 필요한 실행 절차 관련 제어 코드를 포함할 수 있다. 또한, 이러한 코드는 상기 기능들을 상기 컴퓨터의 프로세서가 실행시키는데 필요한 추가 정보나 미디어가 상기 컴퓨터의 내부 또는 외부 메모리의 어느 위치(주소 번지)에서 참조되어야 하는지에 대한 메모리 참조관련 코드를 더 포함할 수 있다. 또한, 상기 컴퓨터의 프로세서가 상기 기능들을 실행시키기 위하여 원격(Remote)에 있는 어떠한 다른 컴퓨터나 서버 등과 통신이 필요한 경우, 코드는 상기 컴퓨터의 통신 모듈을 이용하여 원격에 있는 어떠한 다른 컴퓨터나 서버 등과 어떻게 통신해야 하는지, 통신 시 어떠한 정보나 미디어를 송수신해야 하는지 등에 대한 통신 관련 코드를 더 포함할 수 있다.
상기 저장되는 매체는, 레지스터, 캐쉬, 메모리 등과 같이 짧은 순간 동안 데이터를 저장하는 매체가 아니라 반영구적으로 데이터를 저장하며, 기기에 의해 판독(reading)이 가능한 매체를 의미한다. 구체적으로는, 상기 저장되는 매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광 데이터 저장장치 등이 있지만, 이에 제한되지 않는다. 즉, 상기 프로그램은 상기 컴퓨터가 접속할 수 있는 다양한 서버 상의 다양한 기록매체 또는 사용자의 상기 컴퓨터상의 다양한 기록매체에 저장될 수 있다. 또한, 상기 매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장될 수 있다.
전술한 본 발명의 설명은 예시를 위한 것이며, 본 발명이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 쉽게 변형이 가능하다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 예를 들어, 단일형으로 설명되어 있는 각 구성 요소는 분산되어 실시될 수도 있으며, 마찬가지로 분산된 것으로 설명되어 있는 구성 요소들도 결합된 형태로 실시될 수 있다.
본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
Claims (18)
- 컴퓨터에 의해 수행되는, 각각의 작업을 n명의(n은 1보다 큰 자연수) 서로 다른 복수의 작업자에게 중복적으로 할당하는 다중 할당 방식의 크라우드 소싱 기반 프로젝트(이하, 프로젝트)의 티어 자료 구조를 활용한 작업 할당 방법으로서,상기 작업자에게 할당된 바 없는 작업에 상응하는 작업 데이터가 삽입되는 큐(queue), 각각 j회(j는 n보다 작은 자연수) 할당된 바 있는 작업에 상응하는 작업 데이터가 삽입되는 하나 이상의 제j 스택(stack)을 포함하는 할당 티어(tier) 저장소를 구성하는 단계;상기 할당 티어 저장소를 이용하여, 작업 할당을 요청하는 작업자(이하, 대상 작업자)에게 상기 프로젝트의 작업을 할당하여 작업 수행을 요청하는 단계;검수 결과에 따라 반려된 작업 결과(이하, 반려된 작업 결과)가 존재하는 작업자에 상응하는 하나 이상의 반려 데이터를 포함하는 반려 티어 저장소를 구성하는 단계; 및상기 반려 티어 저장소를 이용하여, 상기 대상 작업자에게 상기 반려된 작업 결과가 존재하면 상기 대상 작업자에게 재작업 수행을 요청하는 단계;를 포함하고,상기 작업 데이터는 상기 작업의 식별자 및 n개의 다중 할당 데이터를 포함하는 키-값(key-value) 쌍으로 구성되고,상기 다중 할당 데이터는 상기 작업이 할당된 작업자의 식별자 및 다중 할당 인덱스를 포함하는 키-값 쌍으로 구성되고,상기 프로젝트의 작업을 할당하여 작업 수행을 요청하는 단계는,상기 하나 이상의 제j 스택을 대상으로, 내림차순으로, 현재 스택의 최상위(top)의 작업 데이터를 추출하고,상기 현재 스택의 상기 최상위의 작업 데이터에 대상 작업자의 식별자가 존재하는지 확인하고,상기 현재 스택의 상기 최상위의 작업 데이터에 상기 대상 작업자의 식별자가 존재하지 않으면, 상기 현재 스택으로부터 상기 작업 데이터를 인출(pop)하고,상기 현재 스택으로부터 인출된 작업 데이터에 상응하는 작업을 상기 대상 작업자에게 할당하여 작업 수행을 요청하고,상기 현재 스택으로부터 인출된 작업 데이터의 상기 다중 할당 데이터에 상기 대상 작업자의 식별자를 입력하고, 상기 현재 스택으로부터 인출된 작업 데이터를 이전 스택에 삽입(push)하며,상기 반려 데이터는 상기 반려된 작업 결과가 존재하는 작업자의 식별자 및 반려 작업 큐를 포함하는 키-값 쌍으로 구성되고, 상기 반려 작업 큐에는 상기 반려된 작업 결과에 상응하는 작업의 식별자가 삽입되고,상기 재작업 수행을 요청하는 단계는,반려된 작업 결과가 발생하면, 상기 반려된 작업 결과를 입력한 작업자에 상응하는 반려 작업 큐에 상기 반려된 작업 결과에 상응하는 작업의 식별자를 삽입(enqueue)하고,상기 반려 티어 저장소의 상기 하나 이상의 반려 데이터에 상기 대상 작업자의 식별자가 존재하는지 확인하고,상기 반려 티어 저장소의 상기 하나 이상의 반려 데이터에 상기 대상 작업자의 식별자가 존재하면, 상기 대상 작업자에 상응하는 반려 작업 큐로부터 상기 반려된 작업 결과에 상응하는 작업의 식별자를 인출하고,상기 인출된 작업의 식별자에 상응하는 작업에 대해서 상기 대상 작업자에게 재작업 수행을 요청하는 것을 특징으로 하는,크라우드소싱 기반 프로젝트의 티어 자료 구조를 활용한 작업 다중 할당 방법.
- 제1항에 있어서,상기 프로젝트의 작업을 할당하여 작업 수행을 요청하는 단계는,상기 현재 스택이 비어있거나, 상기 현재 스택이 삭제되었거나, 상기 현재 스택의 상기 최상위의 작업 데이터에 상기 대상 작업자의 식별자가 존재하면, 다음 스택으로 이동하는,크라우드소싱 기반 프로젝트의 티어 자료 구조를 활용한 작업 다중 할당 방법.
- 제2항에 있어서,상기 프로젝트의 작업을 할당하여 작업 수행을 요청하는 단계는,제1 스택이 비어있거나, 상기 제1 스택이 삭제되었거나, 상기 제1 스택의 상기 최상위의 작업 데이터에 상기 대상 작업자의 식별자가 존재하면, 상기 큐로 이동하고,상기 큐로부터 상기 작업 데이터를 인출(dequeue)하고,상기 큐로부터 인출된 작업 데이터에 상응하는 작업을 상기 대상 작업자에게 할당하여 작업 수행을 요청하고,상기 큐로부터 인출된 작업 데이터의 상기 다중 할당 데이터에 상기 대상 작업자의 식별자를 입력하고, 상기 큐로부터 인출된 작업 데이터를 상기 제1 스택에 삽입하는,크라우드소싱 기반 프로젝트의 티어 자료 구조를 활용한 작업 다중 할당 방법.
- 제3항에 있어서,상기 프로젝트의 작업을 할당하여 작업 수행을 요청하는 단계는,상기 현재 스택으로부터 상기 작업 데이터를 인출한 후, 상기 현재 스택이 비게되면 상기 현재 스택을 삭제하고,상기 현재 스택으로부터 인출된 작업 데이터를 이전 스택에 삽입하기 전에, 상기 이전 스택이 삭제되어 있으면, 상기 이전 스택을 다시 생성하고,상기 큐로부터 인출된 작업 데이터를 상기 제1 스택에 삽입하기 전에, 상기 제1 스택이 삭제되어 있으면, 상기 제1 스택을 다시 생성하는,크라우드소싱 기반 프로젝트의 티어 자료 구조를 활용한 작업 다중 할당 방법.
- 제1항에 있어서,상기 프로젝트의 작업을 할당하여 작업 수행을 요청하는 단계는,상기 현재 스택이 제n-1 스택이고, 상기 제n-1 스택으로부터 상기 작업 데이터를 인출하고,상기 제n-1 스택으로부터 인출된 작업 데이터에 상응하는 작업을 상기 대상 작업자에게 할당하여 작업 수행을 요청하고,상기 제n-1 스택으로부터 인출된 작업 데이터를 드롭(drop)하는,크라우드소싱 기반 프로젝트의 티어 자료 구조를 활용한 작업 다중 할당 방법.
- 제1항에 있어서,상기 프로젝트의 작업을 할당하여 작업 수행을 요청하는 단계는,상기 반려 티어 저장소의 상기 하나 이상의 반려 데이터에 상기 대상 작업자의 식별자가 존재하지 않으면, 상기 할당 티어 저장소를 이용하여, 상기 대상 작업자에게 상기 프로젝트의 작업을 할당하여 작업 수행을 요청하는,크라우드소싱 기반 프로젝트의 티어 자료 구조를 활용한 작업 다중 할당 방법.
- 제1항에 있어서,새로운 작업자에게 각각 재할당되어야 하는 작업(이하, 재할당 필요 작업)에 상응하는 재할당 데이터가 k번째(k는 자연수) 재할당 회수를 기반으로 삽입되는 하나 이상의 제k큐를 포함하는 재할당 티어 저장소를 구성하는 단계; 및상기 재할당 티어 저장소를 이용하여, 상기 대상 작업자에게 상기 프로젝트의 작업을 재할당하여 작업 수행을 요청하는 단계를 더 포함하고,상기 재할당 데이터는 상기 재할당 필요 작업의 식별자 및 상기 재할당 필요 작업이 할당되었던 하나 이상의 이전 작업자의 식별자 세트를 포함하는 키-값 쌍으로 구성되고,상기 프로젝트의 작업을 재할당하여 작업 수행을 요청하는 단계는,재할당 필요 작업이 발생하면, 상기 재할당 필요 작업의 재할당 회수에 상응하는 상기 제k큐에 상기 재할당 필요 작업에 상응하는 재할당 데이터를 삽입하고,상기 하나 이상의 제k 큐를 대상으로, 내림차순으로, 현재 큐로부터 재할당 데이터를 인출하고,상기 현재 큐로부터 인출된 재할당 데이터에 상기 대상 작업자의 식별자가 존재하는지 확인하고,상기 현재 큐로부터 인출된 재할당 데이터에 상기 대상 작업자의 식별자가 존재하지 않으면, 상기 현재 큐로부터 인출된 재할당 데이터에 상응하는 작업을 상기 대상 작업자에게 재할당하여 작업 수행을 요청하고,상기 현재 큐로부터 인출된 재할당 데이터의 상기 재할당 필요 작업의 식별자 및 상기 대상 작업자의 식별자가 추가된 상기 하나 이상의 이전 작업자의 식별자 세트를 포함하는 임시 키를 생성하는,크라우드소싱 기반 프로젝트의 티어 자료 구조를 활용한 작업 다중 할당 방법.
- 제7항에 있어서,상기 프로젝트의 작업을 재할당하여 작업 수행을 요청하는 단계는,상기 현재 큐가 비어있거나, 상기 현재 큐가 삭제되었거나, 상기 현재 큐로부터 인출된 재할당 데이터에 상기 대상 작업자의 식별자가 존재하면, 다음 큐로 이동하는,크라우드소싱 기반 프로젝트의 티어 자료 구조를 활용한 작업 다중 할당 방법.
- 제7항에 있어서,상기 프로젝트의 작업을 재할당하여 작업 수행을 요청하는 단계는,상기 현재 큐로부터 상기 재할당 데이터를 인출한 후, 상기 현재 큐가 비게되면 상기 현재 큐를 삭제하고,상기 재할당 필요 작업에 상응하는 재할당 데이터를 삽입하기 전에, 상기 재할당 필요 작업의 재할당 회수에 상응하는 상기 제k큐가 삭제되어 있으면, 상기 제k 큐를 다시 생성하는,크라우드소싱 기반 프로젝트의 티어 자료 구조를 활용한 작업 다중 할당 방법.
- 제7항에 있어서,상기 프로젝트의 작업을 재할당하여 작업 수행을 요청하는 단계는,상기 대상 작업자에게 재할당되었던 재할당 필요 작업이 새로운 작업자에게 다시 재할당되어야 하면, 상기 임시 키를 이용하여, 상기 대상 작업자에게 재할당되었던 재할당 필요 작업의 재할당 회수에 상응하는 상기 제k 큐에 상기 대상 작업자에게 재할당되었던 재할당 필요 작업에 상응하는 재할당 데이터를 삽입하는,크라우드소싱 기반 프로젝트의 티어 자료 구조를 활용한 작업 다중 할당 방법.
- 제7항에 있어서,상기 프로젝트의 작업을 재할당하여 작업 수행을 요청하는 단계는,상기 현재 큐가 비어있거나, 상기 현재 큐가 삭제되었으면, 다음 큐로 이동하고,상기 현재 큐로부터 인출된 재할당 데이터에 상기 대상 작업자의 식별자가 존재하면, 상기 현재 큐로부터 인출된 재할당 데이터를 상기 현재 큐에 다시 삽입하고, 다음 큐로 이동하는,크라우드소싱 기반 프로젝트의 티어 자료 구조를 활용한 작업 다중 할당 방법.
- 제7항에 있어서,상기 프로젝트의 작업을 할당하여 작업 수행을 요청하는 단계는,상기 현재 스택의 상기 최상위의 작업 데이터의 상기 작업의 식별자를 확인하고,상기 현재 스택의 상기 최상위의 작업 데이터의 상기 작업의 식별자를 포함하는 상기 임시 키에 상기 대상 작업자의 식별자가 존재하는지 확인하고,상기 현재 스택의 상기 최상위의 작업 데이터의 상기 작업의 식별자를 포함하는 상기 임시 키에 상기 대상 작업자의 식별자가 존재하지 않고, 상기 현재 스택의 상기 최상위의 작업 데이터에 상기 대상 작업자의 식별자가 존재하지 않으면, 상기 현재 스택으로부터 상기 작업 데이터를 인출하고, 상기 현재 스택으로부터 인출된 작업 데이터에 상응하는 작업을 상기 대상 작업자에게 할당하여 작업 수행을 요청하고,상기 현재 스택으로부터 인출된 작업 데이터의 상기 다중 할당 데이터에 상기 대상 작업자의 식별자를 입력하고, 상기 현재 스택으로부터 인출된 작업 데이터를 이전 스택에 삽입하는,크라우드소싱 기반 프로젝트의 티어 자료 구조를 활용한 작업 다중 할당 방법.
- 제12항에 있어서,상기 프로젝트의 작업을 할당하여 작업 수행을 요청하는 단계는,상기 현재 스택의 상기 최상위의 작업 데이터의 상기 작업의 식별자를 포함하는 상기 임시 키에 상기 대상 작업자의 식별자가 존재하면, 다음 스택으로 이동하는,크라우드소싱 기반 프로젝트의 티어 자료 구조를 활용한 작업 다중 할당 방법.
- 제13항에 있어서,상기 프로젝트의 작업을 할당하여 작업 수행을 요청하는 단계는,제1 스택의 상기 최상위의 작업 데이터의 상기 작업의 식별자를 포함하는 상기 임시 키에 상기 대상 작업자의 식별자가 존재하면, 상기 큐로 이동하는,크라우드소싱 기반 프로젝트의 티어 자료 구조를 활용한 작업 다중 할당 방법.
- 제7항에 있어서,상기 프로젝트의 작업을 재할당하여 작업 수행을 요청하는 단계는,상기 반려 티어 저장소의 상기 하나 이상의 반려 데이터에 상기 대상 작업자의 식별자가 존재하지 않으면, 상기 재할당 티어 저장소를 이용하여, 상기 대상 작업자에게 상기 프로젝트의 작업을 재할당하여 작업 수행을 요청하는,크라우드소싱 기반 프로젝트의 티어 자료 구조를 활용한 작업 다중 할당 방법.
- 제15항에 있어서,상기 프로젝트의 작업을 할당하여 작업 수행을 요청하는 단계는,상기 재할당 티어 저장소의 상기 현재 큐로부터 인출된 재할당 데이터에 상기 대상 작업자의 식별자가 존재하면, 상기 할당 티어 저장소를 이용하여, 상기 대상 작업자에게 상기 프로젝트의 작업을 할당하여 작업 수행을 요청하는,크라우드소싱 기반 프로젝트의 티어 자료 구조를 활용한 작업 다중 할당 방법.
- 각각의 작업을 n명의(n은 1보다 큰 자연수) 서로 다른 복수의 작업자에게 중복적으로 할당하는 다중 할당 방식의 크라우드 소싱 기반 프로젝트(이하, 프로젝트)의 티어 자료 구조를 활용한 작업 할당 장치에 있어서,상기 서로 다른 복수의 작업자에게 상기 티어 자료 구조를 활용한 다중 작업 할당을 위한 프로그램이 저장된 메모리; 및상기 프로젝트의 작업 할당과 관련된 동작을 제어하는 프로세서;를 포함하고,상기 프로세서는, 상기 프로그램이 실행되면,상기 작업자에게 할당된 바 없는 작업에 상응하는 작업 데이터가 삽입되는 큐(queue), 각각 j회(j는 n보다 작은 자연수) 할당된 바 있는 작업에 상응하는 작업 데이터가 삽입되는 하나 이상의 제j 스택(stack)을 포함하는 할당 티어(tier) 저장소를 구성하는 단계;상기 할당 티어 저장소를 이용하여, 작업 할당을 요청하는 작업자(이하, 대상 작업자)에게 상기 프로젝트의 작업을 할당하여 작업 수행을 요청하는 단계;검수 결과에 따라 반려된 작업 결과(이하, 반려된 작업 결과)가 존재하는 작업자에 상응하는 하나 이상의 반려 데이터를 포함하는 반려 티어 저장소를 구성하는 단계; 및상기 반려 티어 저장소를 이용하여, 상기 대상 작업자에게 상기 반려된 작업 결과가 존재하면 상기 대상 작업자에게 재작업 수행을 요청하는 단계;를 수행하고,상기 작업 데이터는 상기 작업의 식별자 및 n개의 다중 할당 데이터를 포함하는 키-값(key-value) 쌍으로 구성되고,상기 다중 할당 데이터는 상기 작업이 할당된 작업자의 식별자 및 다중 할당 인덱스를 포함하는 키-값 쌍으로 구성되고,상기 프로젝트의 작업을 할당하여 작업 수행을 요청하는 단계는,상기 하나 이상의 제j 스택을 대상으로, 내림차순으로, 현재 스택의 최상위(top)의 작업 데이터를 추출하고,상기 현재 스택의 상기 최상위의 작업 데이터에 대상 작업자의 식별자가 존재하는지 확인하고,상기 현재 스택의 상기 최상위의 작업 데이터에 상기 대상 작업자의 식별자가 존재하지 않으면, 상기 현재 스택으로부터 상기 작업 데이터를 인출(pop)하고,상기 현재 스택으로부터 인출된 작업 데이터에 상응하는 작업을 상기 대상 작업자에게 할당하여 작업 수행을 요청하고,상기 현재 스택으로부터 인출된 작업 데이터의 상기 다중 할당 데이터에 상기 대상 작업자의 식별자를 입력하고, 상기 현재 스택으로부터 인출된 작업 데이터를 이전 스택에 삽입(push)하며,상기 반려 데이터는 상기 반려된 작업 결과가 존재하는 작업자의 식별자 및 반려 작업 큐를 포함하는 키-값 쌍으로 구성되고, 상기 반려 작업 큐에는 상기 반려된 작업 결과에 상응하는 작업의 식별자가 삽입되고,상기 재작업 수행을 요청하는 단계는,반려된 작업 결과가 발생하면, 상기 반려된 작업 결과를 입력한 작업자에 상응하는 반려 작업 큐에 상기 반려된 작업 결과에 상응하는 작업의 식별자를 삽입(enqueue)하고,상기 반려 티어 저장소의 상기 하나 이상의 반려 데이터에 상기 대상 작업자의 식별자가 존재하는지 확인하고,상기 반려 티어 저장소의 상기 하나 이상의 반려 데이터에 상기 대상 작업자의 식별자가 존재하면, 상기 대상 작업자에 상응하는 반려 작업 큐로부터 상기 반려된 작업 결과에 상응하는 작업의 식별자를 인출하고,상기 인출된 작업의 식별자에 상응하는 작업에 대해서 상기 대상 작업자에게 재작업 수행을 요청하는 것을 특징으로 하는,크라우드소싱 기반 프로젝트의 티어 자료 구조를 활용한 작업 다중 할당 장치.
- 컴퓨터와 결합되어, 각각의 작업을 n명의(n은 1보다 큰 자연수) 서로 다른 복수의 작업자에게 중복적으로 할당하는 다중 할당 방식의 크라우드 소싱 기반 프로젝트(이하, 프로젝트)의 티어 자료 구조를 활용한 작업 할당 방법을 실행시키기 위하여 컴퓨터 판독가능 기록매체에 저장된 컴퓨터 프로그램에 있어서,상기 컴퓨터 프로그램은,상기 작업자에게 할당된 바 없는 작업에 상응하는 작업 데이터가 삽입되는 큐(queue), 각각 j회(j는 n보다 작은 자연수) 할당된 바 있는 작업에 상응하는 작업 데이터가 삽입되는 하나 이상의 제j 스택(stack)을 포함하는 할당 티어(tier) 저장소를 구성하는 단계;상기 할당 티어 저장소를 이용하여, 작업 할당을 요청하는 작업자(이하, 대상 작업자)에게 상기 프로젝트의 작업을 할당하여 작업 수행을 요청하는 단계;검수 결과에 따라 반려된 작업 결과(이하, 반려된 작업 결과)가 존재하는 작업자에 상응하는 하나 이상의 반려 데이터를 포함하는 반려 티어 저장소를 구성하는 단계; 및상기 반려 티어 저장소를 이용하여, 상기 대상 작업자에게 상기 반려된 작업 결과가 존재하면 상기 대상 작업자에게 재작업 수행을 요청하는 단계;를 수행하고,상기 작업 데이터는 상기 작업의 식별자 및 n개의 다중 할당 데이터를 포함하는 키-값(key-value) 쌍으로 구성되고,상기 다중 할당 데이터는 상기 작업이 할당된 작업자의 식별자 및 다중 할당 인덱스를 포함하는 키-값 쌍으로 구성되고,상기 프로젝트의 작업을 할당하여 작업 수행을 요청하는 단계는,상기 하나 이상의 제j 스택을 대상으로, 내림차순으로, 현재 스택의 최상위(top)의 작업 데이터를 추출하고,상기 현재 스택의 상기 최상위의 작업 데이터에 대상 작업자의 식별자가 존재하는지 확인하고,상기 현재 스택의 상기 최상위의 작업 데이터에 상기 대상 작업자의 식별자가 존재하지 않으면, 상기 현재 스택으로부터 상기 작업 데이터를 인출(pop)하고,상기 현재 스택으로부터 인출된 작업 데이터에 상응하는 작업을 상기 대상 작업자에게 할당하여 작업 수행을 요청하고,상기 현재 스택으로부터 인출된 작업 데이터의 상기 다중 할당 데이터에 상기 대상 작업자의 식별자를 입력하고, 상기 현재 스택으로부터 인출된 작업 데이터를 이전 스택에 삽입(push)하며,상기 반려 데이터는 상기 반려된 작업 결과가 존재하는 작업자의 식별자 및 반려 작업 큐를 포함하는 키-값 쌍으로 구성되고, 상기 반려 작업 큐에는 상기 반려된 작업 결과에 상응하는 작업의 식별자가 삽입되고,상기 재작업 수행을 요청하는 단계는,반려된 작업 결과가 발생하면, 상기 반려된 작업 결과를 입력한 작업자에 상응하는 반려 작업 큐에 상기 반려된 작업 결과에 상응하는 작업의 식별자를 삽입(enqueue)하고,상기 반려 티어 저장소의 상기 하나 이상의 반려 데이터에 상기 대상 작업자의 식별자가 존재하는지 확인하고,상기 반려 티어 저장소의 상기 하나 이상의 반려 데이터에 상기 대상 작업자의 식별자가 존재하면, 상기 대상 작업자에 상응하는 반려 작업 큐로부터 상기 반려된 작업 결과에 상응하는 작업의 식별자를 인출하고,상기 인출된 작업의 식별자에 상응하는 작업에 대해서 상기 대상 작업자에게 재작업 수행을 요청하는 것을 특징으로 하는,크라우드소싱 기반 프로젝트의 티어 자료 구조를 활용한 작업 다중 할당 프로그램.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP21846237.2A EP4086826A4 (en) | 2020-07-20 | 2021-06-24 | METHOD FOR MULTI-TASK ASSIGNMENT USING A CROWD-BASED PROJECT-LEVEL DATA STRUCTURE FOR GENERATING ARTIFICIAL INTELLIGENCE LEARNING DATA, ASSOCIATED APPARATUS AND ASSOCIATED COMPUTER PROGRAM |
US17/389,349 US11763261B2 (en) | 2020-07-20 | 2021-07-30 | Task multi-assignment method, apparatus, and computer program using tier data structure of crowdsourcing-based project |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200089804A KR102195609B1 (ko) | 2020-07-20 | 2020-07-20 | 인공지능 학습 데이터 생성을 위한 크라우드소싱 기반 프로젝트의 티어 자료 구조를 활용한 작업 다중 할당 방법 |
KR10-2020-0089804 | 2020-07-20 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US17/389,349 Continuation US11763261B2 (en) | 2020-07-20 | 2021-07-30 | Task multi-assignment method, apparatus, and computer program using tier data structure of crowdsourcing-based project |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2022019499A1 true WO2022019499A1 (ko) | 2022-01-27 |
Family
ID=74090284
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/KR2021/007975 WO2022019499A1 (ko) | 2020-07-20 | 2021-06-24 | 인공지능 학습 데이터 생성을 위한 크라우드소싱 기반 프로젝트의 티어 자료 구조를 활용한 작업 다중 할당 방법, 그 장치 및 그 컴퓨터 프로그램 |
Country Status (2)
Country | Link |
---|---|
KR (1) | KR102195609B1 (ko) |
WO (1) | WO2022019499A1 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117114320A (zh) * | 2023-08-25 | 2023-11-24 | 上海宜软检测技术有限公司 | 一种项目工时管理方法及系统 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102195609B1 (ko) * | 2020-07-20 | 2020-12-29 | 주식회사 크라우드웍스 | 인공지능 학습 데이터 생성을 위한 크라우드소싱 기반 프로젝트의 티어 자료 구조를 활용한 작업 다중 할당 방법 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH1185866A (ja) * | 1997-09-12 | 1999-03-30 | Nec Corp | プロジェクト管理システム及びプログラムを記録した機械読み取り可能な記録媒体 |
JP2003160210A (ja) * | 2001-11-22 | 2003-06-03 | Ishida Co Ltd | 仕分けシステム |
US20060168217A1 (en) * | 2004-12-16 | 2006-07-27 | International Business Machines Corporation | Method, computer program product, and data processing system for data queuing prioritization in a multi-tiered network |
KR20100138135A (ko) * | 2009-06-24 | 2010-12-31 | 정치영 | 공동창작 커뮤니티의 공동지분 분배시스템 및 그 방법 |
KR101369352B1 (ko) * | 2005-09-30 | 2014-03-04 | 후지쯔 세미컨덕터 가부시키가이샤 | 멀티코어 구조에서의 스케줄링 |
KR102195609B1 (ko) * | 2020-07-20 | 2020-12-29 | 주식회사 크라우드웍스 | 인공지능 학습 데이터 생성을 위한 크라우드소싱 기반 프로젝트의 티어 자료 구조를 활용한 작업 다중 할당 방법 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20140095956A (ko) | 2013-01-25 | 2014-08-04 | 한국전자통신연구원 | 크라우드 소싱기반 영상 지식 콘텐츠 생성 시스템 및 방법 |
-
2020
- 2020-07-20 KR KR1020200089804A patent/KR102195609B1/ko active IP Right Review Request
-
2021
- 2021-06-24 WO PCT/KR2021/007975 patent/WO2022019499A1/ko unknown
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH1185866A (ja) * | 1997-09-12 | 1999-03-30 | Nec Corp | プロジェクト管理システム及びプログラムを記録した機械読み取り可能な記録媒体 |
JP2003160210A (ja) * | 2001-11-22 | 2003-06-03 | Ishida Co Ltd | 仕分けシステム |
US20060168217A1 (en) * | 2004-12-16 | 2006-07-27 | International Business Machines Corporation | Method, computer program product, and data processing system for data queuing prioritization in a multi-tiered network |
KR101369352B1 (ko) * | 2005-09-30 | 2014-03-04 | 후지쯔 세미컨덕터 가부시키가이샤 | 멀티코어 구조에서의 스케줄링 |
KR20100138135A (ko) * | 2009-06-24 | 2010-12-31 | 정치영 | 공동창작 커뮤니티의 공동지분 분배시스템 및 그 방법 |
KR102195609B1 (ko) * | 2020-07-20 | 2020-12-29 | 주식회사 크라우드웍스 | 인공지능 학습 데이터 생성을 위한 크라우드소싱 기반 프로젝트의 티어 자료 구조를 활용한 작업 다중 할당 방법 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117114320A (zh) * | 2023-08-25 | 2023-11-24 | 上海宜软检测技术有限公司 | 一种项目工时管理方法及系统 |
CN117114320B (zh) * | 2023-08-25 | 2024-02-27 | 上海宜软检测技术有限公司 | 一种项目工时管理方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
KR102195609B9 (ko) | 2022-04-15 |
KR102195609B1 (ko) | 2020-12-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2022019499A1 (ko) | 인공지능 학습 데이터 생성을 위한 크라우드소싱 기반 프로젝트의 티어 자료 구조를 활용한 작업 다중 할당 방법, 그 장치 및 그 컴퓨터 프로그램 | |
WO2021230660A1 (ko) | 크라우드소싱 기반 프로젝트의 기능요소 및 난이도에 기반한 작업자 풀 자동 생성 방법 및 장치 | |
WO2020017843A1 (ko) | 클라우드 플랫폼에서의 클러스터 리소스 할당 및 관리 방법 | |
WO2021246772A1 (ko) | 인공지능 학습데이터 생성을 위한 크라우드소싱 기반 프로젝트의 기능요소 단위 작업 분배 방법, 그 장치 및 그 컴퓨터 프로그램 | |
WO2017030252A1 (ko) | 컨테이너 이미지 보안 검사 방법 및 그 장치 | |
WO2021040265A1 (ko) | 평균 반려율을 이용한 작업자 능숙도 측정 방법 및 장치 | |
WO2020101343A1 (ko) | 데이터베이스 관리 시스템에서의 변경 데이터 캡쳐 구현 기법 | |
WO2020224249A1 (zh) | 基于区块链的事务处理方法、装置、设备及存储介质 | |
US20050273465A1 (en) | Method and apparatus for community management in virtual community | |
JPH09179733A (ja) | オブジェクト変換システム | |
WO2022019500A1 (ko) | 인공지능 학습데이터 생성을 위한 크라우드소싱 기반 프로젝트에서의 실습 교육 참여자에 대한 보상형 실습 교육 제공 방법, 그 장치 및 그 컴퓨터 프로그램 | |
WO2012050252A1 (ko) | 분류기의 동적 결합에 의한 대용량 분류기 자동 생성 시스템 및 방법 | |
WO2021137523A1 (ko) | 인공지능 학습데이터 생성을 위한 크라우드소싱 기반 프로젝트의 작업 시간 대비 검수 시간을 이용한 검수 단가 자동 업데이트 방법 | |
WO2022050551A1 (ko) | 법률 서비스 제공 시스템 및 그 방법 | |
CN107544999A (zh) | 用于检索系统的同步装置及同步方法、检索系统及方法 | |
WO2020122291A1 (ko) | 인공지능 기반의 공동주택 관리업무지시 자동화 장치 및 방법 | |
WO2018074619A1 (ko) | 컨테이너 터미널의 시뮬레이션 프로세스 자동화 시스템 및 방법 | |
WO2023113157A1 (ko) | 범죄 은어 변이 추적 방법, 이를 수행하는 장치 및 컴퓨터 프로그램 | |
WO2015130093A1 (en) | Method and apparatus for preventing bank conflict in memory | |
WO2020242108A1 (ko) | 크라우드 소싱 기반 프로젝트의 특성에 따른 작업자 선별 방법 | |
WO2021133076A1 (ko) | 인공지능 학습데이터 생성을 위한 크라우드소싱 기반 프로젝트의 작업단가 관리 방법 및 장치 | |
WO2011068315A2 (ko) | 최대 개념강도 인지기법을 이용한 최적의 데이터베이스 선택장치 및 그 방법 | |
WO2022005111A1 (ko) | 인공지능 학습데이터 생성을 위한 크라우드소싱 기반 프로젝트의 작업 결과에 기초한 작업자에 대한 검수 권한 자동 부여 방법, 그 장치 및 그 컴퓨터 프로그램 | |
WO2023113158A1 (ko) | 범죄 행위자 프로파일링 방법, 이를 수행하는 장치 및 컴퓨터 프로그램 | |
WO2021091050A1 (ko) | 크라우드 소싱 기반 프로젝트의 특성에 따른 검수자 선별 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 21846237 Country of ref document: EP Kind code of ref document: A1 |
|
ENP | Entry into the national phase |
Ref document number: 2021846237 Country of ref document: EP Effective date: 20220803 |
|
NENP | Non-entry into the national phase |
Ref country code: DE |