# What method and tools should I use for AI that suggests/assigns a person for a task?

I'm trying to learn AI and thinking to apply it to our system. We have an application for Translation industry. What we are doing now is the Coordinator assigns a file to a Translator, the Coordinator usually considers this criteria (but not limited to):

• the deadline of the file and availability of translator
• the language pair that the translator can translate
• is the translator already reached his target? (maybe we can give the file to other translator to reach their target)
• the difficulty level of the file for translator(basic translation, medical field, IT field)
• accuracy of translator
• speed of translator

Given the following, is it possible to make a recommendation to the Coordinator to whom she can assign a particular file?

What are the methods/topics that I need to research?

I'm considering javascript as the primary tool and maybe python if javascript will be more of a hindrance in implementation.

EDIT:

In addition to suggesting a Translator we are also looking into suggesting the deadline of the translator. Basically, we have deadline of customer and deadline of translator

The reason for this is that, if the Translators are occupied throughout the day, it makes sense to suggest it to a busy translator but allow him to finish it until next day.

• This sounds like Task Allocation, an old area of AI. I will write up an answer when I'm not on my phone. – John Doucette Sep 10 '18 at 13:11
• I have adjusted the tags as you asked. I don't think your choice of language will be very relevant to answers at the high level you are asking. When you get into implementation, and get stuck, then depending on the nature of the problem you could post here or even on Stack Overflow (SO would be for specific error messages in your code, or post here if your code works but you think that you misunderstood some concept in AI). – Neil Slater Sep 10 '18 at 14:07

What you have could be well described as a Task Allocation problem, which is studied as part of the planning subfield of AI. Chapters 10 & 11 of Russell & Norvig provide a good overview of this area, although I think they don't talk too much about Task Allocation in particular.

There are two basic approaches to this problem: centralized approaches, and decentralized approaches.

In centralized approaches, the properties of each task (or sub-task) and the skills of each processing entity are recorded in a central database. The task is phrased as an optimization problem. For example, given the skills of the processors and the tasks' types, find the schedule that minimizes average processing time (or cost, or usage of rare-resource types, or whatever you're interested in). Common approaches include phrasing the optimization task as a linear-programming problem; phrasing the problem as a graph and using something like the graphplan algorithm; or phrasing the problem as a constraint satisfaction problem and using some kind of heuristic-guided local search.

There are all kinds of other more modern techniques too. I'm not aware of a survey paper for translation tasks in particular, but there are lots of examples in robotics and distributed computing.

Manuel Rodriguez's answer is partially correct as well: although good AI techniques exist for scheduling the task, they are predicated on being able to quantify the tasks' properties and the abilities of the agents, and on the translators accepting the decisions of the system. If you want an interactive system, you may need to look at techniques from Natural Language Processing. The work on Mixed Initiative Scheduling Systems might also be relevant if you have to go that route.

• thank you for taking the time answering. I've made an edit to my post to add additional feature (suggesting deadline of the translator to finish the file). Will the same method applies in this context? – Jaime Sangcap Sep 10 '18 at 14:55
• Yep. If you want a more "mixed initiative" system, you can ask the user how long it might take before making the assignment, or you can generate plans that have estimated minimum and maximum processing times using some more modern techniques. I'm pretty sure there's an annual challenge for Task Allocation where the good techniques are showcased each year, but I can't seem to find it right now. Maybe it's a AAAI workshop? – John Doucette Sep 10 '18 at 15:00
• I think the number of pages of the file is a good start. Do you consider this problems extremely difficult? Atleast in an entry level? – Jaime Sangcap Sep 10 '18 at 15:04
• I expect that you can get reasonably good schedules pretty easily. The bigger problem is actually on the software engineering side: can you get your users to accept the system? What factors do the users consider essential when doing this kind of scheduling? Users probably won't accept a system that makes decisions they consider poor, so you may find that a lot of requirements gathering is needed. The AI part of this is probably not so bad though. There are lots of off-the-shelf scheduling tools that will do at least an okay job. I'd probably start with local search-based approaches. – John Doucette Sep 10 '18 at 15:19
• Good point on the usability part, we are still under discussion actually. Good to know that at least its feasible. – Jaime Sangcap Sep 10 '18 at 15:41

Signaling games

Bayesian Stackelberg games are signaling games. The agents can send and receive messages. Sometimes it is called a dynamic Bayesian game. In it's easiest form, the message coding is binary, that means agent1 can send a code to agent2. It is not defined, that the coding must contain natural language, this special aspect is discussed in the next chapter.

Natural language agent communication

The topic is called workflow management system, it is mostly a manual issue which has to do with communication in a workgroup. That means, there is a list of 10 people who are working on the same goal and each of them is doing a subtask. Because human people are involved, it has to do with natural language communication. A possible speech act might be “Hi, do you want to do the translation, or should i do it?”.

To describe this as an agent based workflow system the first step is to create a simulated environment. That means, the task “translation of a text” has to be converted into a formal model. A possible description language would be RDF and linked data. In the next step, this model has to be converted into a game, in which actions are possible. For example, one agent can take a request or he can decline a request. If the game works quite well, it is possible to write an Artificial Intelligence for that game who controls the agents.

The sad news is, that in the literature this topic is not very well discussed. Converting a workflow from real life into a simulation with the aim to create an AI for it, can be called Advanced AI-research.

• -1 because scheduling of this kind has been studied for a long time, and so is not "Advanced AI". Even the NLP-ish side is pretty well studied. See the DARPA funded work of Scerri, Tambe, et al. in the early 2000's, for example. – John Doucette Sep 10 '18 at 14:49
• @ManuelRodriguez thank you for answering, I will also research regarding the topics you've mentioned – Jaime Sangcap Sep 10 '18 at 14:57
• Teams of software agents who are interacting with humans in natural language isn't Advanced AI? Perhaps you're right, I'm reading right now the paper of Tambe et. al. and he has figured out everything: CAP, C4.5, SOAR and so on. It's my fault, i've ignored the research of SRI and DARPA, the -1 downvote is correct. – Manuel Rodriguez Sep 10 '18 at 15:39
• @ManuelRodriguez I think the key term is "Natural Language". Nowhere in OP's post is NLP actually mentioned as a requirement. In fact, NLP for narrowly constrained subdomains has been a solved problem since the 1970's (see, e.g. "frames"), so even if OP wanted that, it is solvable. You don't need generalized NLP to solve scheduling. – John Doucette Sep 11 '18 at 11:29
• @JohnDoucette I don't think so. Task allocation = multi agent system = shared vocabulary = natural language processing (especially the OP was about task allocation to real persons) – Manuel Rodriguez Sep 11 '18 at 11:51