O funcionamento do chatbot Beck, para um melhor entendimento, pode ser explanado em fases. Essas fases contemplam desde a captura da entrada do usuário até o fornecimento de uma resposta. O pré-processamento captura a entrada do usuário e realiza uma preparação do texto para o posterior processamento. A fase de processamento busca na base de
conhecimento do chatbot a regra mais apropriada de acordo com a entrada do usuário. E por fim, a fase de pós-processamento realiza os tratamentos finais para apresentar a resposta ao usuário. Essas fases são detalhadas nas seções a seguir.
4.4.1
Pré-Processamento
Inicialmente, o sistema recebe a entrada do usuário, que pode ser através de texto e/ou voz. Em seguida, são realizados os processos de normalização do texto e correção or- tográfica, aplicação do algoritmo de Stemming, identificação das categorias gramaticas (POS-Tagging) e, se existir, associação de conceitos às palavras. A seguir falaremos um pouco sobre cada um desses processos.
• Reconhecimento de Voz - Se a entrada do usuário for através de voz, o sistema aciona o módulo de Reconhecimento de Voz para realizar a transformação dessa entrada de voz para texto.
• Normalização e Correção Ortográfica - Esse processo é responsável por se- parar os sinais de pontuação e outros símbolos das palavras, e realizar a correção ortográfica das palavras não encontrada no dicionário.
• Redução da palavra ao Radical - Através de um algoritmo de Stemming, a pa- lavra é reduzida a um radical. Esse radical não é necessariamente a raiz da palavra na língua portuguesa. O radical aqui, pode ser interpretado como a parte suficiente da palavra que pode identificar outras palavras que possui essa parte em comum. Exemplo, a palavra “incerteza” possui o radical “cert” na língua portuguesa. No entanto, o algoritmo de Stemming usado em Beck fornece como resultado o radical “incert”. O algoritmo de Stemming é essencial para construção das regras de ca- samento de padrão no ChatScript, pois permite a construção de um número bem menor de regras para casar com a entrada do usuário.
• Identificação das Categorias Gramaticais - O POS-Tagging é responsável por etiquetar cada palavra de acordo com a categoria gramatical a que ela pertence. É importante lembrar que uma palavra pode pertencer a mais de uma categoria gramatical. Por exemplo: a palavra melhor em: O mel é melhor do que o açúcar
para a saúde.; ou O melhor é você chegar cedo. Um bom etiquetador gramatical
deve verificar a categoria correta da palavra de acordo com o papel que ela exerce na frase.
• Conceitos - Conceitos são conjuntos de palavras que podem representar sinônimos ou palavras afiliadas. Esse processo anexa às palavras da sentença do usuário o conceito a que ela pertence. Por exemplo, a palavra “mãe” pode estar associada ao conceito “família”. Uma palavra pode estar associada a mais de um conceito. A
categoria gramatical também é representada através de um conceito que é associado a palavra. Foi desenvolvida uma base com 50 conceitos e aproximadamente 3.000 palavras e expressões associadas para o chatbot Beck. Essa base de conceitos foi desenvolvida, em parte, com base no tesauro disponibilizado pela página da Internet
Thesaurus da Língua Portuguesa do Brasil (JORGE, 2004).
4.4.2
Processamento
Nessa fase, o sistema procura na base de diálogos a regra que melhor casa com a entrada do usuário. O casamento de padrão pode ser realizado com a palavra original, com a sua forma canônica ou com os conceitos associados a ela. O princípio básico de funcionamento dessa fase é “varrer” a frase do usuário em busca de palavras-chave. A entrada do usuá- rio pode casar com vários padrões existentes na base, porém esse processo só finalizará quando for gerada uma resposta. Caso não seja encontrado nenhum padrão que case com a entrada do usuário, o sistema poderá emitir um gambit (visto na seção 2.3.2), e caso não exista gambits, o sistema poderá recuperar a resposta padrão que deve estar cadastrada previamente na base de diálogos.
Após selecionar o padrão mais adequado para a entrada do usuário, o sistema deve recuperar uma das resposta que está relacionada a esse padrão. Para um mesmo padrão pode existir uma ou mais respostas associadas.
Para cada resposta recuperada, pode existir um adendo a ela chamado de OOB (Out- Of-Band, ou em português “Fora da Banda”). O recurso OOB é utilizado para enviar informações extras numa resposta. Esse recurso é bastante interessante para enviar co- mandos de gestos e expressões corporais quando se está trabalhando com um ACI. No nosso caso, esse recurso é utilizado para informar ao sistema que ele precisa retornar o turno do diálogo para Beck porque será necessário dizer algo mais para o usuário.
A Figura 55 mostra um exemplo de uma resposta com um anexo. Esse anexo representa o comando que o sistema deve retornar o turno para o chatbot pois ele precisará dizer algo mais para o usuário (o número 003 é o código identificador desse retorno e o 6000 representa o tempo em milissegundos que determina em quanto tempo o turno deve ser retornado).
Figura 55 – Resposta para o Usuário com um Anexo (OOB). [retorno-003=6000] Eu sou um robô baseado em Inteligência Artificial.
anexo resposta
4.4.3
Pós-Processamento
Antes da resposta recuperada da base de conhecimento ser exibida para o usuário, o sistema realiza previamente a separação de anexos (OOB) para então exibi-la.
Depois da exibição da resposta em texto, o sistema verificará se ela deve ser gerada também via voz. Se afirmativo, a sentença é então tratada para retirada das tags HTML. Depois é verificada a quantidade de caracteres da resposta, se este ultrapassar a quanti- dade de 150 caracteres, então a sentença deve ser quebrada automaticamente antes de ser enviada para o sintetizador de fala.
A Figura 56 mostra essas três fases do funcionamento de Beck. Figura 56 – Fases do Funcionamento do Sistema.