Você está na página 1de 10

DESENVOLVIMENTO DE UM CHATTERBOT COM RECONHECIMENTO

E SÍNTESE DE VOZ NA WEB QUE REALIZA CÁLCULOS DE


EXPRESSÕES MATEMÁTICAS SIMPLES

Marcelo SANTOS (1); Edison CAMILO (2), Carlos KAMIENSKI (1)


(1) Universidade Federal do ABC, Rua Catequese, 242, Santo André - SP, {marcelo.batista, cak}@ufabc.edu.br
(2) Instituto Federal de Educação, Ciência e Tecnologia de Alagoas (IFAL),edison@cefet-al.br

RESUMO
A dificuldade de dominar o uso dos recursos disponíveis faz com que grande parte das pessoas não utilize
toda capacidade dos computadores. Seja pela falta de adaptação ao ambiente ou pela dificuldade do
entendimento de uma interface complexa. Capacitar as interfaces dos computadores para comunicar-se com
o usuário em sua própria linguagem através do processamento da linguagem natural (PLN) pode ser uma
solução para tais problemas. Este artigo descreve como foi desenvolvido um Chatterbot com habilidade de
reconhecimento e síntese de fala acessível por um navegador Web de voz. O Chatterbot realiza cálculos de
expressões matemáticas com operações de soma, subtração, multiplicação e divisão. A forma como é
interpretada a linguagem natural do usuário e as tecnologias envolvidas são descritas para que seja possível
recriar todo o experimento em outra situação de aplicabilidade, definindo assim um framework de
tecnologias para aplicações Web de voz, dotadas de razoável inteligência.
Palavras-chave: Chatterbot, IA, VXML, XHTML e Reconhecimento de Voz.
1. INTRODUÇÃO
A dificuldade de trabalhar com o conhecimento relacionado à informação em sistemas inteligentes vêm
sendo a bastante tempo alvo de pesquisas pelo meio acadêmico, manipular símbolos que representam
entidades do mundo real. Tornar o computador inteligente ao ponto de ser semelhante a inteligência humana
é algo que parece possível há décadas, no entanto ainda não se conseguiu criar um comportamento dito
inteligente¹ onde existisse capacidade de aprendizado, acúmulo de conhecimento, uso de experiências
passadas, criatividade e expressão semelhante ao cérebro humano. Abordando assim processos cognitivos,
associativos e de raciocínio lógico numa máquina.
Segundo Peirce [1][2], linguagem, comunicação e mídia são partes imprescindíveis à compreensão da
história do homem e sua evolução material e cognitiva, já que dizia que a única coisa que se encontra em
expansão é a mente humana. Em nosso tempo é de extrema evidência que o homem é linguagem [2], mas
nem sempre a comunicação feita por uma determinada linguagem é simples, visto que, podem estar
associadas a eventos fenomenológicos pela percepção do indivíduo, cognição, ou ainda com os meios
tecnológicos[4]. Mostrando que a comunicação Homem-Máquina pode vir a ser complexa e difícil de ser
implementada de forma eficiente. Sendo o processamento da Linguagem Natural (PLN), uma das áreas com
que a Inteligência Artificial tem se preocupado bastante, tentando compreender como se efetua a
comunicação entre as pessoas estudando como criar sistemas computacionais com PLN a partir de
combinações com fatos lingüísticos.
O primeiro sistema que se propôs a conversar com humanos em linguagem natural foi chamado de
ELIZA[3], foi desenvolvido por Weizenbaum (1966) que argumentava ser possível a construção de
máquinas capazes de agir como humanos. ELIZA incentivou o desenvolvimento de máquinas com a
habilidade de “conversar”, criando assim o que se conhece hoje como Chatterbot: um programa de
computador, que na maioria das vezes, procuram por palavras-chave dentro da entrada fornecida pelo
usuário e dá uma resposta de acordo com um padrão associado a palavras-chave com um dado padrão de um
banco de dados. Conversar com uma máquina em linguagem natural não é algo tão simples, mas com a
simplificação encontrada em muitos Chatterbots, consegue-se conversar através de textos digitados no
teclado e estabelecer um casamento de padrão simulando uma conversa entre humano e máquina.
Já a tecnologia de reconhecimento de voz tornou-se eficiente apenas em meados dos anos 90, consolidando-
se comercialmente e possibilitando sua utilização, mas sem possibilitar a conversação em linguagem natural
com um humano. Recentemente uma das mais novas aplicações de reconhecimento de voz disponíveis são
os Navegadores Web de Voz, onde o navegador reconhece palavras faladas pelo usuário sem necessitar
previamente de algum tipo de treinamento de voz, criando assim uma interface de comunicação que pode ser
chamada de multimodal (texto e voz), proporcionando uma nova forma de acesso à informação, auxiliando
em diversas atividades como, por exemplo, ensino a distância, dando ao usuário um maior grau de interação
com a página ou ajudando pessoas com deficiência visual a interagirem por voz em páginas Webs.
A principal contribuição deste trabalho é criar um Chatterbot que interage com o usuário por meio de
reconhecimento de voz do usuário e capacidade de pronuncia do Navegador Web, definindo um framework
de tecnologias para aplicações que necessitem síntese e reconhecimento de fala na Web, dando uma visão
geral sobre cada tecnologia utilizada. O projeto que possibilitou a criação deste artigo terminou com a
criação de uma página Web onde é possível apenas com a voz realizar cálculos de expressões matemáticas
simples envolvendo as quatro operações básicas: soma, subtração, multiplicação e divisão.
A seção 2 trata da linguagem AIML –, Artificial Intelligence Markup Language seu funcionamento e
aplicações. A seção 3 trata de interfaces multimodais na Web destacando a interação entre XHTML +
VoiceXML. A seção 4 cita trabalhos relacionados. A seção 5 descreve a metodologia de desenvolvimento do
Chatterbot. A seção 6 cita os resultados obtidos. A seção 7 cita a conclusão. Por fim são expostas as
referências utilizadas.
____________________________________________________________
¹ Diversas técnicas de Sistemas Inteligentes como: Indução de Regras e Árvore de Decisão, Lógica Fuzzy, Redes Neurais, Sistemas
Híbridos, Mineração de Dados, Algoritmos Genéticos entre outros possuem certo tipo de inteligência quando se pensa em
características isoladas de atividades que o cérebro humano executa. No entanto nenhuma dessas técnicas consegue abordar
exatamente tudo o que o cérebro humano realiza. Quando essas técnicas são combinadas há dificuldade na integração de diversas
abordagens para representação e manipulação do conhecimento.
2. ARTIFICIAL INTELLIGENCE MARKUP LANGUAGE
AIML[6] (Artificial Intelligence Markup Language) é uma linguagem de marcação baseada em XML[5],
desenvolvida por Richard Wallace. O seu funcionamento assemelhasse a qualquer outra linguagem de
marcação, ou seja, uma codificação padrão da linguagem e uma aplicação que interpreta esse código. O que
diferencia a AIML de outras linguagens de marcação é o seu propósito: criar uma linguagem padrão para que
agentes de processamento de linguagem natural representem o seu conhecimento.
Todo Chatterbot que é baseado em AIML possui um módulo interpretador AIML, que é responsável por
associar uma entrada com uma resposta da base de conhecimento (ver figura 1), optou-se nesse projeto por
utilizar o interpretador conhecido como Program D [7] que é implementado em Java.

Figura 1 – Comunicação entre usuário e interpretador AIML

O funcionamento é basicamente um casamento de padrões do que foi digitado pelo usuário e do que o banco
de conhecimento possui, o princípio é bem semelhante ao funcionamento de ELIZA, no entanto a linguagem
AIML possui um conjunto de tags (ver tabela 1) que possibilitam uma maior flexibilidade e melhoria na
contextualização da entrada realizada pelo usuário.
Cada objeto AIML tem tanto lógica quanto uma estrutura física. A estrutura física é composta por unidades
chamadas: <topic> e <category> (ver tabela 1 e 2). Todas as outras tags aparecem dentro de <category>, mas
pode ser que <category> apareça ou não dentro da tag <topic>, fazendo que uma ou mais categorias estejam
relacionas a um tópico pré-definido. As demais tags formam a parte lógica.

TAG FUNÇÂO

<CATEGORY> Objeto AIML que contém exatamente um <pattern> e um <template>

<CONDITION> Permite a definição de regras a partir das variáveis armazenadas.

<LI> Opções dadas pela tag <Random>

<PATTERN> Um padrão é um elemento cujo conteúdo é um misto de expressões. Exatamente um


padrão deve aparecer em cada <category>. O padrão deve ser sempre o primeiro
elemento filho da <category>.

<RANDOM> O elemento aleatório instrui o interpretador AIML a retornar aleatoriamente


exatamente um dos seus elementos <li> presentes dentro do <random>. O elemento
aleatório deve conter um ou mais elementos do tipo <li>, e não pode conter outros
elementos.

<SET> Permite armazenar variáveis na memória do Chatterbot.

<SRAI> Interliga o <TEMPLATE> de seu <PATTERN> com o de outro <PATTERN>, ou


seja, solicita a resposta a ser dada a outro <PATTERN>.

<STAR> Substitui o conteúdo capturado por um wildcard (*) para seu lugar.
<SYSTEM> Instrui o interpretador AIML a transmitir o seu conteúdo para o sistema de
interpretador de comando da máquina local em que o interpretador AIML está
executando.

<TEMPLATE> É a resposta dado pelo BOT atrelado a um <PATTERN>

<THAT> Tentar simular uma linha de raciocínio do chatterbot baseado na sua última resposta.

<THINK> Permite que as tags que estejam dentro dela não sejam exibidas para o usuário como
resposta.

<TOPIC> Objeto AIML que contém uma ou mais categorias dentro dele.

* (wildcard) Um das grandes tags do AIML, o wildcard (*) funciona como um coringa dentro do
<PATTERN>.

Tabela 1 – Tags básicas da Linguaem AIML


A base em AIML possui tags <PATTERN> que são gerenciadas em uma estrutura de árvore por um objeto
chamado Graphmaster que fica residente na memória do interpretador AIML assim que este é inicializado,
criando uma seqüência lógica de caminhos a serem percorridos possibilitando uma busca rápida e eficiente
de padrões.
Este projeto foi desenvolvido com o banco AIML do projeto ALICE que foi três vezes campeão do Loebner
Prize Contest for Most Human Computer, a sua base conta com mais de 22.000 padrões na língua inglesa.
<?xml version="1.0" encoding="iso-8859-1"?>
<aiml version="1.0"> <category>
<pattern>Eu gosto de ver TV</pattern>
<category> < template > Voce gosta de filmes?</ template >
<pattern>Ola</pattern> </category>
<template>
<random> <category>
<li>Bom dia</li> <pattern>Sim</pattern>
<li>Oi!!</li> <that>Voce gosta de filmes?</that>
<li>Prazer!</li> <template>
</random> Qual seu filme favorito?
</template> </template>
</category> </category>
<category>
<pattern>Ola *pattern> <topic name="saude">
<template> <category>
<srai>Ola</srai> <pattern>*</pattern>
<think><set name="topic">saude</set></think> <template>
</template> <random>
<li>Como vai?li>
</category> <li> Como vai a saúde?</li>
<category> <li>Tem ficado doente?</li>
<pattern>Meu nome é *</pattern> </random>
<template> </template>
<think> </category>
<set name="nome"> <star/> </set> </topic>
</think>
</aiml>
Oi <get name=”nome”>, prazer.
</template>
</category>

Tabela 2 – Exemplo de código AIML


3. INTERFACES COM X+V
X+V [8]é uma linguagem de marcação para o desenvolvimento de interfaces Web com interatividade por
voz e ambientes visuais (multimodal). Assim como VoiceXML[9], X+V satisfaz a crescente demanda de
usuários de voz em dispositivos móveis e em navegadores Web para computadores de mesa, mas
diferentemente de VoiceXML, X+V usa voz e elementos visuais, trazendo um mundo de novas
possibilidades de desenvolvimento para o usuário, combinando assim XHTML[8][9] com um subconjunto
de VoiceXML (X+V), tornando-se juntas uma linguagem de marcação excepcionalmente poderosa, trazendo
uma grande versatilidade para o domínio de desenvolvimento de interfaces homem-máquina[17].
Umas das razões para a utilização de interfaces multimodais é a eficiência dada pela capacidade de ter em
paralelo a entrada de voz e comandos do teclado, mouse e até mesmo uma tela sensível ao toque num
dispositivo móvel, podendo assim, diminuir, por exemplo, a probabilidade de erro do usuário, já que este
poderá escolher a melhor forma de interagir com o sistema, encaixando-se a uma ampla gama de tarefas[18].
Como grande vantagem há ainda a agregação de valor a experiência vivida pelo usuário, podendo ser
utilizado até mesmo por pessoas com deficiência visual, já que apenas a voz pode ser usada na página Web
desenvolvida. Permitindo assim interações mais naturais e interfaces mais amigáveis.

3.1 XHTML
A linguagem HTML vem em constante evolução para atender a requisitos novos de tecnologias e do usuário,
a próxima geração após o HTML 4 é conhecido como XHTML (eXtend Hyper-Text Markup Language), que
obteve esse nome em vez de HTML 5 devido a reformulação do HTML 4 a partir das premissas de
XML(eXtend Markup Language. O padrão XHTML é um novo padrão da Web, oferecendo portabilidade
máxima independente de plataforma e navegadores[26].Criando assim uma linguagem muito mais rigorosa
que a HTML 4 por diferenças como:
 Todas as tags e atributos devem estar em letra minúsculas, tags como <HTML> são consideradas
inválidas.
 Todas tags devem ter fechamento, até mesmo <br> e <p>
 Todas as tags devem seguir a ordem de aninhamento conforme foram abertas.
 Todo documento XHTM tem que começar com uma especificação do tipo de documento.
Vale ressaltar que a linguagem XHTML foi desenvolvida para funcionar até mesmo em PDAs, Televisores,
celulares, máquinas de jogos e até mesmo relógios. Podem-se encontrar mais detalhes sobre XHTML no site
da organização W3C[10].

3.2 VOICE XML


Assim como o HTML serve de representação para a comunicação homem-máquina em um navegador
gráfico por meio do teclado, mouse e monitor, o VoiceXML necessita de um navegador que suporte
reconhecimento automático de fala (ASR) e transformação de texto para fala (TTS). Tal tecnologia cria
possibilidade de criar aplicações de voz para Web, simplificando tarefas que anteriormente eram difíceis de
serem criadas.
VoiceXML é também padronizada pela W3C, para que seja possível a interpretação e síntese de voz para
uma vasta gama de aplicações que vão desde de telefones ligado a PSTN (Rede de telefonia pública) até
aplicações VoIP na Internet, logicamente que é necessário uma hierarquia de servidores para que haja a
comunicação entre as redes. Outro tipo de aplicação que vem se tornando comum graças ao VoiceXML é o
desenvolvimento de documentos que contêm diálogos para possibilitar o acesso a conteúdos Web juntamente
com um navegador multimodal (ver tabela 3), neste projeto utilizamos o Opera 9.14[12] como navegador de
voz (Voice browser).
Umas das principais características do VoiceXML é a de estabelecer mecanismos que permitam aos
desenvolvedores de conteúdo controlarem aspectos do diálogo entre máquina e humano, como uma palavra
deve ser pronunciada, o volume, a ênfase de determinadas palavras ou frases em diferentes plataformas[8].
Um aplicação VoiceXML pode ser formada por um conjunto de documentos que cria uma máquina de
estados finita. O usuário encontra-se num estado que é possível ouvir, ou dialogar, num determinado
instante. Cada diálogo determina o próximo. A execução é terminada quando um diálogo não específica um
sucessor ou contém um elemento que especifica claramente o fim da conversa. Basicamente pode-se dizer
que o VXML é baseado em duas outras linguagens de marcações: SSML[15] e SRGS[16] e algumas outras
linguagens citadas brevemente nas subseções seguintes.
3.2.1 SSML– Speech Synthesis Markup Language
SSML foi criada pela W3C em 1992 e publicada em 2004, tal linguagem é utilizada nas especificações do
VXML. O objetivo da SSML é melhorar a qualidade dos conteúdos sintetizados e dar aos desenvolvedores
de conteúdo uma forma padrão para controlar aspectos de síntese da fala, como pronúncia, volume, tom e
ritmo independentemente de plataformas.
<?xml version="1.0" encoding="iso-8859-1"?> <ev:listener ev:observer="page.body"
<!DOCTYPE html PUBLIC "-//VoiceXML Forum//DTD ev:event="vxmldone" ev:handler="#vxml_form_handler"
XHTML+Voice 1.2//EN" ev:propagate="stop" />
"http://www.voicexml.org/specs/multimodal/x+v/12/dtd/xhtml+voic </head>
e12.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" <body id="page.body" ev:event="load"
xmlns:ev="http://www.w3.org/2001/xml-events" ev:handler="#vxml_form">
xmlns:vxml="http://www.w3.org/2001/vxml"
xml:lang="en_US"> Testando...<br/>
<head> <br/>
<title>Exemplo básico de X + V</title> <input type="text" id="page.output_box"
value="" size="40"/>
<script type="text/javascript" id="vxml_form_handler" <br/>
declare="declare"> </body>
document.getElementById('page.output_box').value ="Hello, </html>
world!";
</script>
<vxml:form id="vxml_form">
<vxml:block>
hello world
</vxml:block>
</vxml:form>

Tabela 3 – Exemplo de código de uma aplicação X+V


3.2.2 Gramática
Para que a voz seja reconhecida pela aplicação que interpreta o código em VMXL, é necessário construir
uma gramática de reconhecimento de voz, para que o número de palavras ou frases a serem identificas
estejam num domínio conhecido facilitando assim a identificação do que foi falado por um usuário. Pode-se
dizer que uma gramática é uma enumeração, de forma compacta, um conjunto de enunciados, palavras e
frases, que constituem uma resposta aceitável (ver tabela 4). Todas as palavras que sejam necessárias
reconhecer devem ser incluídas num arquivo utilizado como gramática, podendo uma aplicação que se utiliza
de VXML utilizar várias gramáticas diferentes em vários estágios da interação com o usuário.
A gramática pode ser tão simples como uma lista de palavras, ou pode ser concebida com mais flexibilidade
e variabilidade para que ele tenha a capacidade de reconhecer linguagem natural, tais como frases e
sentenças. A forma como a gramática é construída é de extrema importância para a eficiência do
reconhecimento da fala, sendo uma gramática muito robusta ineficiente devido ao número exagerado de
palavras existentes, tornando difícil a distinção das palavras pronunciadas, sendo essa uma das limitações
hoje das engines de aplicações de reconhecimento de voz, tendo certamente num futuro breve uma melhora
significativa dessa limitação.
3.2.3 SRGS– Speech Recognition Grammar Specification
SRGS é definida pela W3C, é uma linguagem de marcação utilizada como padrão pelo VXML que define a
sintaxe para representação da gramática especificando palavras e conjuntos de palavras que possam ser
“ouvidas” pela engine de reconhecimento de voz. Se fosse retornado exatamente o que fosse falado pelo
usuário a aplicação teria de transforma áudio em texto e interpretar de forma semântica a frase recebida. Por
esta razão, tags da gramática SRGS podem ser incrementadas com elementos, que quando executados,
constrói um resultado semântico já na captura do áudio, tais tags são definidas em outra gramática
denominada: Semantic Interpretation for Speech Recognition – SISR.
3.2.4 SISR– Semantic Interpretation for Speech Recognition
Em uma aplicação, sabendo a seqüência de palavras que foram ditas pode ser necessário que um computador
transforme a representação do que foi dito pelo usuário em uma forma normalizada, como por exemplo, o
usuário falar: SIM, OK, CERTO ou PROSSIGA, será passado apenas o resultado SIM independente das
palavras ditas anteriormente, pois semanticamente no contexto fictício elas têm o mesmo valor. A forma de
criar uma interpretação semântica a partir da SISR pode ir desde associações de palavras até reconhecimento
de frases inteiras foram de ordem com elementos opcionais na frase, convergindo pra um padrão
normalizado entre outras funcionalidades que proporcionam um diálogo mais rico entre uma aplicação
multimodal e o usuário.
#JSGF V1.0 iso-8859-1;
grammar expression;
public <expression> = calculate this [<sinal>] <numbers> <oparators> [<sinal>] <numbers>
;
<numbers> = 1 { $ ="1";}
| 2 { $ ="2";}
| 3 { $ ="3";}
...
| 998 { $ ="998";}
| 999 { $ ="999";}
;

<sinal> = minus {$ = "minus";}


| plus {$ = "plus";}
;

<oparators> = minus {$ = "minus";}


| plus {$ = "plus";}
| dividied {$ = "dividied";}
| times {$ ="times";}
;
Tabela 4 - Exemplo de gramática utilizada neste projeto para reconhecimento de número e operadores

4. TRABALHOS RELACIONADOS
Marieta Gâta[19] analisa aplicações de uma forma genérica de reconhecimento de voz, modelando em casos
de uso o problema de como estruturar uma aplicação com interação de voz. Tal trabalho não trata da
interação entre usuário e máquina num nível de conversação semelhante ao de um chatterbot, criando apenas
menus para navegação, não abordando em totalidade as tecnologias que foram utilizadas para completa
solução do problema, fazendo uma análise apenas sobre o VXML, mas que ajudaram na elaboração deste
trabalho por apresentar uma modelagem de aplicações com interação por voz.
Coniam[20] faz uma análise sobre as tecnologias de chatterbots disponíveis, traça algumas limitações e
realiza uma análise de interfaces, no entanto a discussão da interface mantém-se apenas na interação por
texto, embora seja citado que há chatterbots com reconhecimento de voz.
Silva[21], apresenta uma solução para acesso a conteúdos Web através de uma interface de voz bidirecional,
explicando como construir uma solução que funciona com acesso também através da PSTN, no entanto é
criada uma solução onde há apenas a formulação de menus, onde há pouca inteligência na solução
apresentada.
Pode-se observar que os trabalhos citados não tratam como uma visão unificada o reconhecimento e síntese
de voz relacionada à simulação de conversação inteligente com o usuário, sendo apenas criados caminhos
dentro do formulário VXML para realizar algumas ações simples, diferentemente do que é proposto neste
trabalho, onde há certa independência do tratamento do que é reconhecido pelo navegador de voz e o que é
respondido ao usuário, devido à comunicação e interpretação feita pelo chatterbot, sendo o VXML apenas a
porta de entrada dos dados.
5. METODOLOGIA
Inicialmente criou-se uma interface Web desenvolvida em flash utilizando o servidor Apache-tomcat 6,
juntamente com o interpretador AIML conhecido por Program D, v4.1.5. A base de conhecimento utilizada
foi a mesma do projeto ALICE, que conta com cerca de 22.000 padrões de perguntas. Foi utilizado uma
página em JSP para realizar a comunicação entre a interface feita em flash (servidor Apache-tomcat) e o
interpretador AIML(servidor do Program D), que troca informações via HTTP instanciando uma classe em
JAVA que filtra o resultado obtido do interpretador AIML e exibe o resultado para o usuário (ver figura 2).

Figura 2 – Arquitetura do sistema


A próxima etapa do projeto foi unir o chattebot desenvolvido numa aplicação com reconhecimento e síntese
de voz baseado em VXML, substituindo o navegador utilizado nos primeiros testes (Firefox 3.0.10[23]) pelo
navegador com suporte a X+V (Opera 9.62[12]). Definiu-se uma máquina de estado finito de
reconhecimento de voz para interação com o usuário através da voz com o chatterbot (ver figura 3) onde
expressões matemáticas são capturadas em forma de texto passando para o chatterbot o que foi captado.

Figura 3 - Máquina de estado finito de reconhecimento de voz


Inicialmente, no estado Q-0, é pedido que o usuário fale de uma única vez um número, um operador e um
próximo número, podendo ser dito algo como: menos dois vezes quatro(-2*4), montando a expressão de
acordo com o que o usuário fala. Logo em seguida é passado para o estado Q-2 onde é perguntado ao usuário
se ele quer ver o resultado da expressão, caso ele diga YES é calculado valor falado anteriormente e termina
a aplicação, caso não, é passado para o estado Q1 e é solicitado um operador e o número a ser adicionado na
expressão anterior.
A gramática de reconhecimento conta com números de 1 até 999, e os operandos: “*”(times), “-“(minus),
“/”(dividied) e “+”(plus). Para calcular a expressão matemática passada pelo navegador Opera para o
interpretador AIML. Foi desenvolvido um algoritmo em Java que recebe uma string passada pelo ProgramD
quando este entende que o texto passado é um expressão matemática.
Foi adicionado o seguinte padrão no banco AIML (ver tabela 5):

<category>
<pattern>CALCULATE THIS *</pattern>
<template>
Oh, that's easy: = <system>cmd/C java calculadora
<star/></system>
</template>
</category>
Tabela 5 - Exemplo
Onde “calculadora” é uma classe Java que passa a ser uma extensão do conhecimento do Program D,
podendo-se criar muitas outras extensões ao chatterbot que gerem relatórios ou faça alguma outra função
para qualquer outra atividade.

6. RESULTADOS OBTIDOS
O resultado obtido resume-se em um chatterbot com síntese reconhecimento de fala na Internet que calcula
expressões matemáticas simples, podendo a sua tela ser vista na figura 4. A arquitetura neste projeto pode ser
usada como exemplo de framework para outras aplicações outras finalidades.

Figura 4 – Chatterbot desenvolvido.


A gramática de reconhecimento não pode ser grande ao ponto de se ter uma conversação do usuário com o
computador, por isso a limitação de apenas servir inicialmente como uma calculadora. Isso é devido a engine
de reconhecimento utilizada pelo Opera, no entanto essa limitação pode ser resolvida caso uma engine com
melhor capacidade de reconhecimento de voz fique disponível, outra limitação é a pronúncia reconhecida
apenas na língua inglesa, fato este associado também a engine de reconhecimento de voz. É importante ficar
claro que há uma independência entre a inteligência do chatterbot e o reconhecimento da fala, fato que não
diminuindo a utilidade geral da arquitetura, mas limitando-a por conta do trade-off entre robustez de uma
gramática de reconhecimento e capacidade de diferenciação de um grande número de palavras pela engine
utilizada pelo opera.

7. CONCLUSÃO
O campo de reconhecimento de fala e inteligência artificial são fascinantes e ao mesmo tempo desafiadores,
buscando-se sempre novos métodos que tragam os melhores resultados possíveis na sinergia entre essas duas
áreas. Por isso acreditamos que este artigo acrescenta um pequeno passo à comunidade acadêmica por
mostrar como criar uma interface multimodal na Web, com ferramentas gratuitas, definindo praticamente
toda etapas necessárias do desenvolvimento.
Em trabalhos futuros pretende-se avaliar o nível de acerto da pronúncia capturada dos usuários e enviado ao
chatterbot. Pretende-se ainda avaliar outros navegadores de voz e tentar adaptar o reconhecimento de voz
para algumas palavras da língua portuguesa através da especificação PLS (Pronunciation Lexicon
Specification)[24] e do alfabeto de fonemas disponibilizados pelo IPA- Institute[25].

REFERÊNCIAS
[1] Santaella, Lucia (1996). Cultura das mídias. 4a. ed. 2004. São Paulo: Experimento.
[2] Silvana Drumond Monteiro, Semiótica peirciana e a questão da informação e do conhecimento, 2007-12-
13, Departamento de Ciência da Informação - UFSC
[3] Weizenbaum, Joseph (January 1966), "ELIZA - A Computer Program For the Study of Natural Language
Communication Between Man And Machine", Communications of the ACM 9
[4] Monteiro ,Silvana Drumond. Semiótica peirciana e a questão da informação e do conhecimento, 2007.
http://www.periodicos.ufsc.br/index.php/eb/article/view/369
[5] XML Events specification: http://www.w3.org/TR/xml-events/
[6] ALICE Bot ,:http://www.alicebot.org/
[7] Porgram D: http://aitools.org/Program_D
[8] XHTML+Voice 1.2 Specification: http://www.voicexml.org/specs/multimodal/x+v/12/spec.html
[9] VoiceXML 2.0 specification: http://www.w3.org/TR/voicexml20/
[10] What is XHTML? section in XHTML 1.0 The Extensible HyperText Markup Language (Second
Edition) A Reformulation of HTML 4 in XML 1.0 W3C Recommendation 26 January2000.
http://www.w3.org/TR/xhtml1/#xhtml
[11] Tina Holmboe. "XHTML—Myths and Reality". The Developer’s Archive. http://www.dev-
archive.net/articles/xhtml.html. Retrieved on 2008-12-29. " Since the design goals of XML itself partially
mirrored those of the original HTML, it was logical for work to begin on formulating an XML–based
markup language"
[12] Navegador Opera: http://www.opera.com/download/
[13] XHTML 1.0 - specification (using the XHTML 1.0 - Transitional DTD):
http://www.w3.org/TR/xhtml1/
[14] “Semantic Interpretation for Speech Recognition ", Luc Van Tichelen. W3C Working Draft, April
2003,http://www.w3.org/TR/2003/WD-semantic-interpretation-20030401/
[15] Speech Synthesis Markup Language Version 1.0 ". Burnett, Walker and Hunt. W3C Candidate
Recommendation, December 2003, http://www.w3.org/TR/2003/CR-speech-synthesis-20031218/
[16] "Speech Recognition Grammar Specification Version 1.0". Hunt and McGlashan. W3C Proposed
Recommendation, December 2003.http://www.w3.org/TR/2003/PR-speech-grammar-20031218/
[17] S. Oviatt. Multimodal Interfaces. In: J. Jacko and A. Sears (eds) The Human-Computer Interaction
Handbook. Mahwah, NJ: Lawrence Erlbaum and Associates, 2002.
[18] WM Watanabe, AT Neto, AG da Silva Filho, Desenvolvimento de componentes de interfaces
multimodais ricas para a Web utilizando X+V e Dojo Widgets, Instituo de Matemática – USP São Paulo.
[19] Gâta, Marieta, SPEECH RECOGNITION APPLICATION USING VOICE XML, Proceedings of the
International Conference on Theory and Applications of Mathematics and Informatics - ICTAMI 2004,
Thessaloniki, Greece.
[20] CONIAM , DAVID, Evaluating the language resources of chatbots for their potential in English as a
second language, European Association for Computer Assisted Language Learning. 2008. DOI:
10.1017/S0958344008000815 Printed in the United Kingdom.
[21] Silva, Telmo Eduardo. Interfaces de voz para a Web, Instituto Politécnico de Castelo Branco.
[22] J. Axelsson, C. Cross, J. Ferrans, G. McCobb, T. V. Raman, and L. Wilson. XHTML+Voice Profile 1.2.
Technical report, March 2004. Available online http://www.voicexml.org/specs/multimodal/x+v/12.
[23] Navegador Mozzila Firefox: http://br.mozdev.org/
[24] Pronunciation Lexicon Specification (PLS) Version 1.0, P. Baggia, Editor. World Wide Web
Consortium, 12 December 2007. This version of the PLS specification is http://www.w3.org/TR/2007/CR-
pronunciation-lexicon-20071212/ and is a work in progress. The latest version of PLS is available at
http://www.w3.org/TR/pronunciation-lexicon/.
[25] The International Phonetic Alphabet, J. Esling. This table of IPA characters in Unicode is
available.http://web.uvic.ca/ling/resources/ipa/charts/unicode_ipa-chart.htm.
[26] Tanenbaum, Andrew S. Redes de Computadores. Editora Campus, 4ª edição, 2003.

Você também pode gostar