.. para um serviço de ajuda telefônica. Normalmente, o cliente telefona e o operador de ajuda detalha uma série de pares de perguntas e respostas para refinar o problema do cliente e, eventualmente, chegar a uma solução.
Existem algoritmos ou modelos para esse tipo de interface do usuário disponíveis?
Qualquer idéia adicional sobre como implementar isso com eficiência será bem-vinda.
Gostaria de propor o uso do padrão Structured Matcher e sua implementação.
Um Correspondente Estruturado é útil ao fazer escolhas a partir de um conjunto pequeno e discreto de alternativas. Ele decompõe uma decisão complexa em decisões mais simples sobre fatores relevantes e, em seguida, usa decisões sobre esses fatores para tomar a decisão.
Eu acho que é possível exibir todo tipo de decisão como view (controle da interface do usuário, página da web, formulário e assim por diante). Você precisa ter uma árvore de decisão (predefinida) ou coletar todas as informações para criar essa árvore de decisão durante o trabalho (do seu cliente). No segundo caso, você pode usar o padrão Sponsor-Selector (por exemplo) para selecionar a melhor decisão usando as estatísticas criadas nas anteriores.
Por favor, revise para mais detalhes .
Parece que você precisa de um sistema especializado.
Já faz um tempo desde que eu fiz algo sobre isso, mas você começa com a pergunta mais básica e trabalha a partir daí - muito parecido com o jogo "20 perguntas".
O método que eu preferiria é semelhante a um site de comércio eletrônico, no qual você aplica vários filtros para refinar os resultados.
Considere que, no começo (antes que uma única pergunta tenha sido feita), todas as soluções em seu banco de dados podem ser ajustadas.
Depois de responder a uma pergunta (presumo que as respostas sejam "sim/não" ou um pequeno número finito)), isso restringe a lista da solução. Responda um pouco mais e reduza ainda mais.
Visualmente, eu o imagino como duas colunas, uma com as perguntas (e as possíveis respostas, das quais você seleciona uma por pergunta) e a segunda com as possíveis soluções.
Benefícios:
De volta à analogia, imagine que você está comprando uma TV on-line e pode escolher o tamanho de tela desejado. Nesse modelo, a pergunta seria "qual o tamanho de tela desejado" e os vários tamanhos seriam suas respostas.
Uma abordagem diferente seria como os solucionadores de problemas no Windows - eles fazem uma sugestão ou fazem uma pergunta e você pode indicar se isso ajudou ou não. De acordo com isso, o solucionador de problemas faz as próximas perguntas ou sugere outra correção.
A desvantagem é que, se você pular uma etapa que geralmente não pode retornar, não saberá exatamente onde está no processo (quantas perguntas restam) os resultados (as possíveis soluções) serão sugeridos um por um.
Como você afirma em seu título, é uma pergunta dupla sobre uma interface do usuário e um algoritmo.
Penso que, como os operadores de ajuda também podem ter pouco conhecimento, eles precisam de uma interface extremamente simples. O mais simples é dar a eles m assistente com uma pergunta por vez. Cada etapa elimina outras perguntas. O último passo é uma lista de soluções possíveis, quando não houver mais dúvidas.
A segunda parte é um pouco fora de tópico, pois é um algoritmo. Basicamente, em cada etapa, você deve fazer a pergunta que potencialmente eliminará a maioria das outras perguntas. Na verdade, a melhor pergunta a fazer é a que elimina metade das perguntas restantes. Se a resposta for 'sim', metade será eliminada; se a resposta for 'não', a outra metade será eliminada. Isso é inspirado no modelo de árvore de decisão .