Centro Universitário Positivo – UnicenP Núcleo de Ciências Exatas e Tecnológicas – NCET Engenharia da Computação Luís Alberto Menon de Araújo Sistema de Busca em Linguagem Natural via SMS, Voltado ao Entretenimento Curitiba 2005 1 Centro Universitário Positivo – UnicenP Núcleo de Ciências Exatas e Tecnológicas – NCET Engenharia da Computação Luís Alberto Menon de Araújo Sistema de Busca em Linguagem Natural via SMS, Voltado ao Entretenimento Monografia apresentada à disciplina de Projeto Final, como requisito parcial a conclusão do Curso de Engenharia da Computação. Orientador: Professor Luiz Carlos Albini. Curitiba 2005 2 SUMÁRIO LISTA DE FIGURAS ............................................................................................... 4 LISTA DE TABELAS ............................................................................................... 5 RESUMO................................................................................................................. 6 RESUMO................................................................................................................. 6 ABSTRACT ............................................................................................................. 7 1.INTRODUÇÃO ..................................................................................................... 8 1.1 Definição do Trabalho.................................................................................... 8 1.2 Contextualização nos dias atuais .................................................................. 9 1.3 Motivação .................................................................................................... 10 1.4 Descrição das Principais Funcionalidades................................................... 10 1.4.1 Recebimento e Envio de Mensagens.................................................... 11 1.4.2 Reconhecimento de Frases Escritas em Linguagem Corrente ............. 11 1.4.3 Acesso à Banco de Dados .................................................................... 11 1.4.4 Mostrar Última Pesquisa Realizada num Display.................................. 11 1.5 Tecnologias Utilizadas na Implementação................................................... 11 2.FUNDAMENTAÇÃO TEÓRICA.......................................................................... 12 2.1 Teoria Pura e Aplicada a Prática ................................................................. 12 2.1.1 Mensagens SMS (Short Message System)........................................... 12 2.1.2 Formato PDU (Protocol Description Unit).............................................. 13 2.1.3 Comunicação Serial .............................................................................. 14 2.1.4 Microcontrolador.................................................................................... 15 2.2 Teoria de Software ...................................................................................... 15 2.2.1 C++ ....................................................................................................... 15 2.2.2 Interbase ............................................................................................... 16 2.3 Teoria de Hardware ..................................................................................... 16 2.3.1 A Família 8051 ...................................................................................... 16 2.3.2 Display LCD .......................................................................................... 17 3. ESPECIFICAÇÃO ............................................................................................. 20 3.1 Especificação do Hardware ......................................................................... 20 3.1.1 Módulo de Interface (Celular - PC)........................................................ 20 3.1.2 Módulo do Display................................................................................. 20 3.2 Especificação do Software........................................................................... 21 3.3 Aplicabilidade/Funcionabilidade do Hardware ............................................. 21 3.3.1 Módulo de Interface (Celular/PC) .......................................................... 22 3.3.2 Módulo do Display................................................................................. 22 3.4 Aplicabilidade/Funcionabilidade do Software............................................... 23 3.4.1 Módulo Interface (Celular-PC)............................................................... 23 3.4.2 Módulo do Display................................................................................. 24 3.4.3 Módulo Linguagem Natural ................................................................... 24 4. PROJETO ......................................................................................................... 25 3 4.1 Apresentação do Projeto ............................................................................. 25 4.2 Descrição Funcional do Projeto ................................................................... 25 4.3 Requisitos Mínimos para o Funcionamento do Projeto................................ 26 4.4 Projeto de Software ..................................................................................... 27 4.4.1 Diagrama de Casos de Uso .................................................................. 27 4.4.2 Classes do Sistema............................................................................... 28 4.4.3 Diagramas de Seqüência ...................................................................... 32 4.4.4 Dados.................................................................................................... 38 4.4.5 Arquivos Auxiliares................................................................................ 40 4.4.6 Firmware ............................................................................................... 46 4.5 Projeto de Hardware .................................................................................... 48 4.5.1 Serial ..................................................................................................... 48 4.5.2 Microcontrolador.................................................................................... 48 4.5.3 Display LCD .......................................................................................... 49 4.5.4 Componentes ........................................................................................ 50 4.6 Procedimentos de Testes ............................................................................ 51 5. ESTIMATIVA DE CUSTOS ............................................................................... 52 6. RESULTADOS E DISCUSSÃO......................................................................... 53 7. CONCLUSÕES ................................................................................................. 57 8. CRONOGRAMA ................................................................................................ 58 9. BIBLIOGRAFIA ................................................................................................. 60 4 LISTA DE FIGURAS Figura 1 – Módulo Celular-PC ............................................................................... 22 Figura 2 – Módulo do Display................................................................................ 22 Figura 3 – Classes Módulo Celular-PC ................................................................. 23 Figura 4 – Visão Geral do Sistema........................................................................ 26 Figura 5 – Diagrama de Casos de Uso ................................................................. 27 Figura 6 – Diagrama de Classes ........................................................................... 29 Figura 7 – Classe Broker....................................................................................... 33 Figura 8 – Diagrama de Seqüência de Pergunta via SMS (parte esquerda)......... 34 Figura 9 – Diagrama de Seqüência de Pergunta via SMS (parte direita).............. 35 Figura 10 – Diagrama de seqüência de cadastrar local ........................................ 36 Figura 11 – Diagrama de seqüência de cadastrar sub-local ................................. 36 Figura 12 – Diagrama de seqüência de cadastrar atração.................................... 37 Figura 13 – Diagrama de seqüência de cadastrar sessões .................................. 38 Figura 14 – MER ................................................................................................... 39 Figura 15 – Fluxograma do firmware..................................................................... 47 Figura 16 – Diagrama de Estados......................................................................... 47 Figura 17 – Esquemático da serial ........................................................................ 48 Figura 18 – Esquemático do microcontrolador ...................................................... 49 Figura 19 – Esquemático do display LCD ............................................................. 50 Figura 20– Display LCD em funcionamento .......................................................... 54 Figura 21 – Tela do treinamento ........................................................................... 56 5 LISTA DE TABELAS Tabela 1 - Descrição de uma Mensagem SMS ..................................................... 14 Tabela 2 – Transformação de alfabeto de 7 para 8 bits ........................................ 14 Tabela 3 – Modelos de LCD mais comuns............................................................ 18 Tabela 4 – Pinagem LCD ...................................................................................... 19 Tabela 5 – Dicionário de Dados Tabela Local....................................................... 39 Tabela 6 – Dicionário de Dados Tabela Atração ................................................... 40 Tabela 7 - Componentes ....................................................................................... 50 Tabela 8 – Estimativa de Custos........................................................................... 52 6 RESUMO Muitas maneiras diferentes de buscar informações referentes a teatro e cinema podem ser utilizadas, porém nenhuma consegue incorporar baixo custo, velocidade e conveniência simultaneamente. Devido a esta falha pensou-se num sistema capaz de prover esses três aspectos. O sistema visa auxiliar pessoas na busca de informações relacionadas com a programação de teatro e cinema, utilizando telefones celulares através das mensagens SMS (Short Message System), isto permitirá que pesquisas sejam feitas com: • Rapidez: o tempo necessário é o de digitar e enviar uma pergunta e mais alguns poucos segundos para o retorno da resposta. • Conveniência: os celulares são aparelhos que quase todos carregam consigo. • Baixo custo: o preço é o cobrado por uma mensagem de acordo com o que a operadora estipular. Além disto, o sistema é capaz de entender algumas mensagens escritas em linguagem corrente da língua portuguesa brasileira, tornando-o ainda mais fácil de ser utilizado. Nesta monografia, será apresentado como o sistema funciona em detalhes tanto em sua parte de hardware quanto na de software, com os respectivos esquemáticos e diagramas para haver uma mais fácil compreensão. 7 ABSTRACT Even though many ways to get information about theater and cinema has been used. None of them can integrate low cost, speed, and convenience simultaneously. Due to this fail it has been thought in a system able to provide these three features. The system aims to help people in searches for cinema and theater listings using mobile phones, through its SMS (Short Message System). It allows searches to be made with: • Speed: The time it takes is just the time to write and to send a question and more a little seconds waiting for the answer. • Convenience: Mobiles are devices that almost everybody carries with themselves. • Low cost: the price is just the amount charged for a message according to what the mobile company stipulates. Moreover the system shall understand messages written in Brazilian Portuguese natural language, making it even easier to be used. In this article it is shown how the system works in details as much in the hardware part as in the software, with their schematic and diagrams to make the comprehension easier. 8 1.INTRODUÇÃO Como atualmente nenhuma forma de busca de programação de teatro, de cinema e de outros eventos culturais é eficaz e conveniente, o projeto descrito nesta monografia foi feito buscando um meio alternativo e melhor em relação aos atuais. O sistema permite que a busca por programação seja feita através de telefones celulares via mensagens SMS (Short Message System). Para que se possa realizar essa busca de forma simples, o sistema é capaz de entender algumas frases em linguagem corrente do português brasileiro. Inicialmente este projeto abrange a cidade de Curitiba a qual possui um grande público freqüentador de cinema e teatro. 1.1 Definição do Trabalho O projeto visa a construção de um sistema computacional que viabilize a obtenção de informações voltadas ao entretenimento de forma rápida, confiável, barata e que possam ser acessadas de qualquer lugar e a qualquer hora. Essas informações abrangem teatro e cinema (o que está em cartaz, programação, localizações, preços...). Para satisfazer esses quesitos pensou-se na utilização de mensagens de telefones celulares, aparelho que a grande maioria do público freqüentador desses eventos culturais possui. O sistema reconhece mensagens SMS (Short Message System) vindas de um telefone celular. O cliente pode requisitar informações voltadas ao entretenimento em linguagem natural e receber uma resposta adequada à pergunta. Com este projeto, permitisse que uma pessoa interessada em fazer algo relacionado ao entretenimento possa mandar uma mensagem, em linguagem natural para um celular, requisitando uma determinada informação. A mensagem é 9 recebida por um celular que por um cabo de transmissão de dados a repassa a um PC (Personal Computer). No computador um software entende a mensagem e gera uma resposta correspondente, a qual é enviada novamente ao celular atrelado ao sistema. Por fim, a resposta é enviada à pessoa requisitante. Também foi adicionado ao sistema um display LCD controlado por um microcontrolador 8051. Ele exibe a pesquisa que acabou de ser realizada e quantas vezes ela já foi feita, possibilitando que haja o acompanhamento das pesquisas mesmo sem a existência de um monitor, economizando energia. 1.2 Contextualização nos dias atuais Curitiba foi eleita em dois mil e três a Capital Americana da Cultura pela Organização Capital Americana da Cultura[7], o que indica a forte influência cultural que a cidade possui. Sabendo-se desta apreciação cultural dos cidadãos curitibanos pensou-se num sistema que auxiliasse na busca do que está acontecendo em termos culturais. Os atuais meios para obter informações sobre programação dos cinemas, teatros e demais eventos culturais não são muito eficientes. Pois no caso do jornal e internet é necessário possui-los no local, e por telefone a resposta é custosa e demorada já que mesmo que se queira saber somente sobre um filme, por exemplo, é necessário escutar toda a programação de cinema. Uma solução para essas inconveniências seria a utilização de mensagens SMS de celulares, como os celulares são aparelhos que sempre acompanham as pessoas, elas terão acesso a esses dados em qualquer lugar e a qualquer hora bastando somente mandar uma mensagem para o sistema requisitando a informação desejada. Além do mais o campo de atuação das mensagens SMS da telefonia celular é vasto. Esse mesmo projeto poderia ter outras vertentes. Como o acesso a vários tipos de sistemas especialistas, por exemplo: na medicina poder-se-ia fazer uma 10 busca de uma doença, dado os sintomas do paciente; poder-se-ia também buscar por endereços de estabelecimentos ou consultar uma lista telefônica. Ainda mais ampla seria a aplicabilidade da comunicação entre um ser humano e uma máquina, já que muitas pessoas têm grande dificuldade para lidar com computadores e outras tecnologias em geral. Isso porque esses utilizam linguagens diferenciadas da linguagem do dia a dia. Ao se utilizar softwares e sistemas que entendam um ser humano o número de pessoas capazes e que se interessariam neles seria muito maior. 1.3 Motivação É muito gratificante ver um projeto sempre evoluindo, chegando cada vez mais próximo ao esperado, mesmo que nunca possa alcançar esse ponto. E ao trabalhar com Inteligência Artificial, neste projeto mais especificamente com a comunicação entre um ser humano e uma máquina, existe a possibilidade de estar sempre aprimorando o que foi inventado. Pois a inteligência e o aperfeiçoamento de comunicação não tem limites. É algo no qual pode-se começar agora e após décadas de trabalho ainda haverá muito a ser feito. Além de que, ele terá uma aplicabilidade tremenda, pois quase todos os programas ou sistemas possuem uma interface homem-máquina, o que possibilitaria a inclusão deste software em muitos outros. Outra grande motivação é a possibilidade de aprendizado sobre a telefonia celular, uma área que ainda existe muito a ser explorado. 1.4 Descrição das Principais Funcionalidades As principais funcionalidades serão apresentadas de forma sucinta para mostrar o funcionamento do software como um todo. 11 1.4.1 Recebimento e Envio de Mensagens O sistema é capaz de transmitir mensagens do celular para o computador e vice-versa. Também transforma as mensagens que estarão no formato PDU (Protocol Description Unit) para string e de string para PDU. 1.4.2 Reconhecimento de Frases Escritas em Linguagem Corrente O sistema entende uma mensagem escrita em linguagem corrente na língua portuguesa. A princípio, somente algumas mensagens com perguntas que estejam relacionadas com o entretenimento. 1.4.3 Acesso à Banco de Dados O sistema é capaz de acessar um banco de dados com as informações dos eventos que estão acontecendo bem como pode alterá-lo. 1.4.4 Mostrar Última Pesquisa Realizada num Display O sistema mostra num display LCD a pesquisa que acabou de ser feita e quantas vezes ela já foi realizada. 1.5 Tecnologias Utilizadas na Implementação -Mensagens SMS -Transmissão de Dados via Serial 12 2.FUNDAMENTAÇÃO TEÓRICA Este capítulo explica teoricamente todo o estudo inicial necessário para o desenvolvimento do projeto. 2.1 Teoria Pura e Aplicada a Prática Neste tópico serão apresentadas algumas explicações básicas para um melhor entendimento do projeto. 2.1.1 Mensagens SMS (Short Message System) SMS (Sistema de mensagens curtas) provê um mecanismo para transmissão de mensagens curtas de e para dispositivos wireless. Este serviço utiliza o SMSC (Short Message System Centre), que atua como um sistema armazenador e retransmissor de mensagens curtas. As redes wireless provêem o mecanismo requerido para achar as estações de destino e transportar as mensagens curtas ao longo dos SMSCs e estações wireless (no caso do projeto os celulares).[1] Com o sistema SMS, a entrega da mensagem é garantida. Pois falhas temporárias, devido a não possibilidade de recebimento da mensagem na estação receptora são identificadas. Com isso a mensagem é armazenada no SMSC até que o dispositivo de destino se torne disponível. As mensagens de SMS, de acordo com o especificado pela Etsi (Companhia Internacional de Padronizações), podem ter até cento e sessenta caracteres, de modo que cada caractere tem sete bits de acordo com o alfabeto padrão de sete bits. Ou se usado o alfabeto de 8 caracteres ter um tamanho de cento e quarenta. 13 2.1.2 Formato PDU (Protocol Description Unit) Existem duas maneiras de enviar e receber mensagens SMS: pelo modo texto ou pelo modo PDU. Alfabetos podem ser diferentes e existem algumas maneiras diferentes de codificação quando uma mensagem SMS é colocada na tela. Uma aplicação é capaz de ler mensagens ou no modo texto ou modo PDU. Se utilizado o modo texto a aplicação fica limitada a um conjunto de opções de codificação pré-definida. No caso do modo PDU qualquer codificação pode ser implementada. Na tabela 1 demonstra-se o funcionamento desse formato quando enviada uma mensagem “hellohello”, de acordo com[1]: A string recebida foi : 07 917283010010F5 Octetos 040BC87238880900F10000993092516195800AE8329BFD4697D9EC37 Descrição Comprimento da informação de SMSC (em octetos deste caso 7). Parte inferior do formulário 07 Tipo do endereço SMSC(formato internacional de 91 meios do número de telefone). Parte inferior do formulário 91 Número da central de serviços de SMS representada no formato de semi-octetos. O comprimento do número de telefone é impar (11), assim um F foi adicionado aos octetos apropriados do formulário. O número de telefone deste centro de serviço é "+27381000015". Parte inferior do formulário 72 83 01 00 10 F5 04 Primeiro octeto do envio de mensagem SMS. Comprimento do número do remetente (hex 0B = dec 11). Parte inferior do formulário 0B C8 Tipo do endereço do numero quem esta enviando Número do remetente (semi-octetos decimais), "+27838890001". Parte inferior do formulário com um F adicionado. 72 38 88 09 00 F1 00 00 TP-PID. Identificador de Protocolo (maiores informações em [1]). TP-DCS. Esquema de codificação dos dados. 99 30 92 51 61 95 80 0A TP-SCTS. Ano, mês, dia, hora, minuto, segundo e timezon representado no formato de semioctetos. Comprimento da Mensagem E8329BFD4697D9EC37 Mensagem "hellohello". Formato octetos 8-bit, que representam os dados 7-bit. 14 Tabela 1 - Descrição de uma Mensagem SMS Para que uma mensagem fique no formato correto para envio de mensagens SMS os caracteres do alfabeto de 7 bits, Tabela ASCII (American Standard Code for Information Interchange), devem ser transformados em octetos. Para entender como essa transformação é feita será utilizado como exemplo a transformação da mensagem hellohello. Nela o primeiro septeto (‘h’) vira um octeto adicionando o bit mais a direita do segundo septeto (‘e’). Depois o segundo septeto (‘e’) recebe dois bits do terceiro (‘l’) e assim por diante. A tabela 2 exemplifica a transformação da mensagem “hellohello” do alfabeto de 7bits para o formato octeto de 8bits. Mens H agem Ascii 104 Ascii em binari o 1101000 1101000 8bits 1 Hexa decim al E8 e l l o h e l l o 101 108 108 111 104 101 108 108 111 1100101 1101100 1101100 1101111 1101000 1100101 1101100 1101100 110010 1 11011 00 1101 100 110 1101000 00 32 110010 100 9B 1111 11 1000 1 11011 1111 1101 01000 110 100101 11 FD 46 97 100101 1101100 1101100 1101100 1 1 D9 EC 1101111 110111 1 1101100 1101100 110111 37 Tabela 2 – Transformação de alfabeto de 7 para 8 bits 2.1.3 Comunicação Serial A comunicação serial é de extrema importância em computadores. Pois permite comunicação entre máquinas apenas com dois fios. O periférico chama-se serial porque transmite um byte, bit por bit, em seqüência preestabelecida e pré-programada, para que o receptor possa recebelo e monta-lo de novo em um byte, igual ao originalmente transmitido. Além do byte que é transmitido no canal serial, inserem-se também alguns bits de controle de transmissão e recepção, como, por exemplo, os bits de “start” e o bit de ”stop”, que sinalizam ao receptor o início e o fim da transmissão/recepção do byte. 15 Tipicamente, costuma-se codificar o byte a ser transmitido em código ASCII (América Standard Coded for Information Interchange), pois é padrão universal de comunicação. Além destes pré-requisitos, é fundamental que as freqüências do transmissor e do receptor sejam as mesmas[3]. 2.1.4 Microcontrolador O microcontrolador corresponde a um microprocessador e seus periféricos típicos, todos num só chip. Isto devido ao fato de que na maioria das aplicações que se utiliza microprocessadores necessita-se, alem do chip do microprocessador, da ROM (Read Only Memory), da RAM (Random Access Memory) e de outros chips auxiliares, como Timers (que contam o tempo) e Serial (que faz a interface com o barramento paralelo do microprocessador e gera uma linha serial de comunicação). Abaixo temos o conjunto de instruções agrupadas funcionalmente de um microcontrolador de acordo com :[3] • Aritméticas (+,-, / ,*) • Lógicas (AND, OR, EXOR, operando com byte) • De transferência de dados (Mover Dado = Mov) • Booleanas (AND, Or, EXOR, operando com um bit) • De ramificação (decisão ou desvio) 2.2 Teoria de Software Aqui serão apresentados fundamentos básicos em relação aos softwares utilizados. 2.2.1 C++ 16 C++ é uma linguagem de programação desenvolvida por Bjarne Stroustrup no início dos anos 80. C++ apresenta várias características que melhoram a linguagem C, mas o mais importante é que fornece recursos para a programação orientada à objetos [5]. A idéia principal de linguagens orientadas a objetos é a possibilidade de combinar num único registro, campos que conterão dados e campos que são funções para operar os campos de dados do registro. Uma unidade assim definida é chamada classe [4]. Os programas orientados a objetos são de grande valia, pois são mais fáceis de entender, corrigir e modificar [5]. 2.2.2 Interbase O Interbase é um SGBD (Sistema Gerenciador de Bancos de Dados) desenvolvido pela Borland. Oferece suporte à linguagem SQL (Structured Query Language) de acordo com o padrão SQL92, além de mecanismos eficientes de segurança e integridade de dados. Permite gerenciar transações e utilizar recursos como visões (views), papéis (roles), procedimentos armazenados (stored procedures) e gatilhos (triggers).[2] 2.3 Teoria de Hardware Aqui serão apresentados fundamentos básicos em relação ao hardware utilizado. 2.3.1 A Família 8051 O microcontrolador 8051 é um componente da família Intel MCS-51, representada tambem pelos microcontroladores(8071, 8031, 8052, 8752 e 8032), e possui 4 Kbytes de ROM interna.[3] 17 Pode-se encontrar algumas versões dessa família com o símbolo C entre o nome do componente que indica que utiliza a tecnologia CMOS (complementary metal oxide semiconductor), tecnologia que consome menos energia. Hoje todas as versões citadas podem possuir essa tecnologia. Abaixo temos algumas características do 8051 de acordo com[3]: • RAM interna de uso geral de 128 bytes e 128 bytes correspondentes aos registradores especiais • ROM interna de 4Kbytes • Quatro portas de I/O(entrada e saída) • Dois Timers de dezesseis bits • Uma interface serial • Capacidade de 64Kbytes de endereçamento externo de ROM • Capacidade de 64Kbytes de endereçamento externo de RAM • Ciclos típicos de instrução de um e dois microssegundos a 12MHz • Instrução direta de divisão e multiplicação • Entradas de interrupção externa 2.3.2 Display LCD Os módulos LCD são interfaces de saída muito útil em sistemas microprocessados. Estes módulos podem ser gráficos e a caractere. Os modelos de LCD comuns (tipo caracter) são especificados em número de linhas por colunas e são encontrados nas configurações da tabela 3: Número de Colunas Número de Linhas Quantidade de pinos 8 2 14 12 2 14/15 16 1 14/16 16 2 14/16 18 16 4 14/16 20 1 14/16 20 2 14/16 20 4 14/16 24 2 14/16 24 4 14/16 40 2 16 40 4 16 Tabela 3 – Modelos de LCD mais comuns. Os módulos podem ser encontrados com LED backlight (com uma iluminação de fundo) para facilitar as leituras durante a noite. Neste caso, a alimentação deste led é feita normalmente pelos pinos 15 e 16 para os módulos comuns e 19 e 20 para os módulos gráficos, sendo os pinos 15 e 19 para ligação ao anodo e os pinos 16 e 20 para o catodo. A corrente de alimentação deste led varia de 100 a 200mA, dependendo do modelo. Estes módulos utilizam um controlador próprio, permitindo sua interligação com outras placas através de seus pinos. Onde deve ser alimentado o módulo e interligado o barramento de dados e controle do módulo com a placa do usuário. Além de alimentar e conectar os pinos do módulo com a placa do usuário deverá haver um protocolo de comunicação entre as partes, que envolve o envio de bytes de instruções e bytes de dados pelo sistema do usuário. A Tabela 4 descreve cada pino do módulo ou do display para conexão deste a outras placas:[6] Pino 1 2 3 4 5 6 Função Alimentação Alimentação V0 RS Seleção: R/W Seleção: E Chip select Descrição Terra ou GND VCC ou +5V Tensão para ajuste de contraste 1 - Dado, 0 - Instrução 1 - Leitura, 0 - Escrita 1 - Habilitado, 0 - Desabilitado 19 7 8 B0 B1 LSB Barramento de Dados 9 10 11 12 13 14 15 16 B2 B3 B4 B5 B6 B7 A (qdo existir) K (qdo existir) Barramento de Dados Barramento de Dados Barramento de Dados Barramento de Dados Barramento de Dados MSB Anodo p/ LED backlight Catodo p/ LED backlight Tabela 4 – Pinagem LCD 20 3. ESPECIFICAÇÃO 3.1 Especificação do Hardware A parte de hardware é dividida em dois módulos, o de interface (celular-PC) e o do display. 3.1.1 Módulo de Interface (Celular - PC) Neste módulo são utilizados um celular Siemens® e um cabo para transmissão de dados via serial, pois ambos já estavam disponíveis. 3.1.2 Módulo do Display Neste módulo são utilizados um display LCD, um kit montado do microcontrolador 8051 e uma bateria de nove Volts. 3.1.2.1 Microcontrolador 8051 Este microcontrolador foi escolhido devido sua enorme popularidade, o que resulta em preços baixos, alta disponibilidade e grande suporte, muitas páginas da internet e livros falam sobre ele. Outra razão é o conhecimento que já se possuía sobre ele e a disponibilidade de uma placa padrão, a qual já incorpora todo o circuito para integrá-lo com a memória RAM (Random Access Memory), a memória ROM (Read Only Memory), e a interface serial. Além do mais, sua velocidade e capacidade máxima de memória são mais do que suficientes para esta aplicação. 21 3.1.2.2 Display LCD O display utilizado é do tipo caractere, pois é mais barato. Um do tipo gráfico não é necessário, já que não serão utilizados gráficos e seu custo é muito alto. O seu tamanho será de 16 colunas por 2 linhas, pois não é necessário mais espaço do que isso. 3.2 Especificação do Software O Software está divido em três módulos bem distintos, o da interface (Celular-PC), o do display e o da linguagem natural. Todos foram programados em C++, pois esta linguagem permite uma alta integração dos diferentes módulos de uma forma clara e fácil de manter, devido ao fato desta ser uma linguagem orientada à objetos. No entanto, o principal motivo da escolha é o conhecimento que já foi adquirido desta linguagem ao longo dos anos. Foi utilizado o ambiente de desenvolvimento integrado IDE (Integrated Development Environment) Borland Builder C++ 6. Pois esse possui uma excelente biblioteca para manipular strings e permite que interfaces gráficas sejam criadas e manipuladas com facilidade. Além de possuir componentes que facilitam a comunicação com o sistema gerenciador de banco de dados InterBase. O InterBase foi utilizado, pois ele é gratuito, o que torna o projeto mais barato, e possui boa integrabilidade com o IDE utilizado. 3.3 Aplicabilidade/Funcionabilidade do Hardware Neste capítulo será apresentado de forma sucinta o funcionamento do hardware. 22 3.3.1 Módulo de Interface (Celular/PC) Para receber a mensagem do telefone celular do qual a pessoa está requisitando uma informação foi utilizado outro aparelho, o qual está conectado ao PC. Portanto a mensagem é enviada primeiramente para outro celular. Este então este envia a mensagem ao PC pelo cabo de transmissão de dados via serial. A figura 1 ilustra essas comunicações. Figura 1 – Módulo Celular-PC 3.3.2 Módulo do Display O módulo do display LCD exibe em qual tipo de pergunta a pesquisa que acabou de ser realizada se enquadrou e quantas vezes ela já foi feita. O computador transmite para o microcontrolador via serial as informações que devem aparecer no display, e o microcontrolador faz o controle de todos os sinais do display e repassa a mensagem para o display, onde a última pesquisa será mostrada. Um diagrama em blocos simplificado deste módulo é mostrado na figura 2: Figura 2 – Módulo do Display 23 3.4 Aplicabilidade/Funcionabilidade do Software Neste capítulo será apresentado de forma sucinta o funcionamento do software. 3.4.1 Módulo Interface (Celular-PC) Este módulo é responsável por ler a porta serial, receber a informação, para então transformá-la do formato PDU para uma string. E também é responsável pelo caminho inverso, ou seja, receber uma string de caracteres, transformá-la em formato PDU e envia-la para o celular através da porta serial. Para realizar estas tarefas existem duas classes auxiliares, a Porta Serial e a Converões. A figura 3 ilustra como as classes auxiliares estão ligadas com a de leitura e envio de mensagens SMS : Figura 3 – Classes Módulo Celular-PC 24 3.4.1.1 Classe Serial Esta classe é a responsável por ler ou escrever o que estiver no buffer da porta selecionada da serial. Esta classe é utilizada tanto pelo Módulo Interface quanto pelo Módulo do Display. 3.4.1.2 Classe Conversões Esta classe realiza todas as transformações necessárias do formato PDU. Como o deslocamento de bits, a transformação de caracteres do alfabeto de 7bits para o padrão octetos de 8bits e vice-versa, o tratamento do número recebido e a ser enviado e a transformação de string para hexadecimal e de hexadecimal para strings. 3.4.2 Módulo do Display Este módulo é responsável pela transmissão das strings, com as sessões nas quais as perguntas se enquadraram e quantas vezes a sessão foi utilizada, para a porta serial que se comunica com o microcontrolador. 3.4.3 Módulo Linguagem Natural Este é o principal módulo do software, onde é feito todo o reconhecimento da pergunta requisitada. Para isso é utilizado: acesso ao banco de dados, acesso à arquivos, trabalho com strings dentre outras tarefas. O reconhecimento é feito através da analise de palavras chaves. 25 4. PROJETO 4.1 Apresentação do Projeto Neste capítulo será apresentada a documentação do sistema, tanto em sua parte de hardware como a de software. Para tanto serão utilizadas ferramentas da linguagem UML (Unified Modeling Language), fazendo assim com que o funcionamento do sistema seja de fácil compreensão. Também serão apresentados esquemáticos feitos em Orcad, para que o funcionamento do hardware seja entendido. 4.2 Descrição Funcional do Projeto O sistema reconhece mensagens SMS (Short Message System) através de palavras chaves, vindas de um telefone celular, a qual requere informações voltadas ao entretenimento em linguagem natural, para que então seja gerada uma resposta adequada à pergunta. Com este projeto permitir-se que uma pessoa interessada em fazer algo relacionado ao entretenimento possa mandar uma mensagem em linguagem natural a um celular requisitando uma determinada informação. A mensagem é recebida por um celular, que através de um cabo de transmissão de dados a repassa a um PC (Personal Computer). No computador um software “entende” a mensagem e gera uma resposta correspondente. Essa mensagem é enviada novamente ao celular atrelado ao sistema, para então, ser enviada à pessoa requisitante. Também foi adicionado ao sistema um display LCD controlado por um microcontrolador 8051. Ele exibe a pesquisa que acabou de ser realizada e quantas vezes ela já foi feita. Assim é possível que haja o acompanhamento das pesquisas mesmo sem a existência de um monitor, economizando energia. 26 A figura 4 mostra o sistema de uma forma geral: Figura 4 – Visão Geral do Sistema 4.3 Requisitos Mínimos para o Funcionamento do Projeto Para que o sistema funcione e sem muito atraso no processamento das mensagens, já que existe muita manipulação de strings, é necessário ao menos um computador com as seguintes especificações: • Sistema operacional windows • Pentium III 500 (Recomenda-se Pentium IV) 27 • 128MB RAM • 1,3 MegaBytes de espaço livre no disco rígido • Porta serial disponível • Porta USB disponível 4.4 Projeto de Software O projeto do software utilizou-se de ferramentas UML (Unified Modeling Language) e é descrito neste capítulo. 4.4.1 Diagrama de Casos de Uso A figura 5 representa o diagrama de casos de uso: Figura 5 – Diagrama de Casos de Uso 28 4.4.1.1 Pergunta via SMS Aqui o principal caso de uso é detalhado. Fluxo de eventos principal: O caso de uso inicia quando um cliente envia uma mensagem ao celular acoplado ao sistema. Essa mensagem é reconhecida para que então uma resposta seja retornada ao cliente. Fluxo excepcional de eventos: A mensagem pode não chegar ao celular acoplado ao sistema. O sistema não saberá que isto aconteceu e não fará nada. Fluxo excepcional de eventos: O sistema pode não reconhecer o que esta escrito na mensagem. Uma mensagem informando que o sistema não pode reconhecê-la é enviada ao cliente. 4.4.2 Classes do Sistema As principais classes do sistema serão apresentadas e explicadas neste capítulo. 4.4.2.1 Diagrama de Classes A figura 6 mostra as principais classes e suas associações que compõem o software do sistema: 4.4.2.2 Classe cControlador Esta é uma classe filha de thread que está sempre verificando na função execute() se a classe cMensagem recebeu algo. Caso ela tenha recebido, essa mensagem é repassada para a classe cLinguagemNatural que retorna a resposta à pergunta recebida na cMensagem e a sessão (maiores detalhes sobre sessões será dado no capítulo 4.4.5.1) na qual se encaixou. Então a classe cControlador requer à cControladorArquivos verificar quantas vezes uma frase se encaixou naquela sessão para que então a classe cLCD faça o que for necessário para que seja escrito no display esta sessão e o número de vezes que ela foi utilizada. 29 Figura 6 – Diagrama de Classes 30 4.4.2.3 Classe cLinguagemNatural Esta é a classe responsável pelo reconhecimento de uma pergunta, feita através de palavras chaves, e retorno de sua resposta, bem como pela verificação se alguma das perguntas não encontradas em pesquisas anteriores têm alguma ligação com os campos mais importantes do banco de dados. Para realizar a primeira tarefa são utilizadas diversas funções. Sucintamente o que ela faz é ler o arquivo DadosBusca (maiores detalhes sobre os arquivos será dado no capítulo 4.4.5) , verificar em qual sessão a pergunta se encaixa melhor, criar a clausula de select para adquirir os campos com a resposta do banco de dados e gerar uma frase adequada para responder a pergunta. A segunda tarefa só verifica se a pergunta possui algum dos campos mais importantes, no caso de programação de cinema e teatro, esses campos são os nomes das atrações e dos locais. 4.4.2.4 Classe cDataHora Classe que auxilia a cLinguagemNatural, ela é responsável pelo reconhecimento de datas e horas em uma string e conversão para o formato TDateTime. 4.4.2.5 Classe cExtenso Classe que auxilia a cDataHora, substitui valores escritos por extenso por valores numéricos, como números, dias da semana (segunda, terça...) e meses, utilizando um arquivo auxiliar “Extenso ini”. 4.4.2.6 Classe cBancodeDados Classe que auxilia a cLinguagemNatural, ela é responsável por retornar os campos correspondentes quando inserido-a uma consulta. 31 4.4.2.7 Classe cLogica Classe que auxilia a cLinguagemNatural. Ela faz analises lógicas em frases, verificando se esta possui certas palavras. Atualmente suporta os operadores ‘e’, ‘ou’ ‘()’. Os símbolos para estes operadores são lidos do arquivo “símbolos.ini”. 4.4.2.8 Classe cStringPlus Realiza funções com strings que a AnsiString não possui. Como a separação de palavras através de separadores diferentes de espaço, ou indicar a posição de uma palavra numa frase, dado os separadores de palavras. 4.4.2.9 Classe cControladorArquivos Classe que faz operações com alguns dos arquivos utilizados pelo sistema. 4.4.2.10 Classe cMensagem Classe responsável pelo recebimento de mensagens e pela decomposição e validação da mesma. Também é responsável pelo envio de mensagens e transformação dela em formato PDU. 4.4.2.11 Classe cConversoes Classe responsável pelas transformações necessárias para compor e decompor uma mensagem no formato PDU. 4.4.2.12 Classe cComunicacao 32 Classe responsável pela comunicação com uma porta serial. Ela no envio coloca os caracteres no buffer do Windows®. No recebimento checa o buffer de RX (Receive) da porta na qual a comunicação foi estabelecida, caso exista algo ela retorna o que existe e esvazia este buffer. 4.4.2.13 Classe cLCD Classe responsável pelo envio de duas strings para a porta do display, a primeira ficará na primeira linha do LCD e a segunda na segunda linha. 4.4.2.14 Classe cBroker O broker do sistema foi implementado no Data Module do Borland Builder C++ 6, a classe com seus componente e métodos está representada na figura 7. 4.4.3 Diagramas de Seqüência Neste capítulo serão apresentados os diagramas de seqüência dos casos de uso do sistema. 4.4.3.1 Pergunta via SMS A figuras 8 e 9 descrevem a seqüência do caso de uso pergunta via SMS: 33 Figura 7 – Classe Broker 34 Figura 8 – Diagrama de Seqüência de Pergunta via SMS (parte esquerda) 35 Figura 9 – Diagrama de Seqüência de Pergunta via SMS (parte direita) 4.4.3.2 Cadastrar Local A figura 10 mostra o diagrama de seqüência do caso de uso cadastrar local: 36 Figura 10 – Diagrama de seqüência de cadastrar local 4.4.3.4 Cadastrar Sub-Local Local: A figura 11 mostra o diagrama de seqüência do caso de uso Cadastrar Sub- Figura 11 – Diagrama de seqüência de cadastrar sub-local 37 4.4.3.5 Cadastrar Atração A figura 12 mostra o diagrama de seqüência do caso de uso cadastrar atração: Figura 12 – Diagrama de seqüência de cadastrar atração 4.4.3.6 Cadastrar Sessões A figura 13 mostra o diagrama de seqüência do caso de uso cadastrar sessões: 38 Figura 13 – Diagrama de seqüência de cadastrar sessões 4.4.4 Dados Neste capítulo serão apresentadas informações sobre os dados utilizados no banco de dados do sistema. 4.4.4.1 Modelo Relacional A figura 14 mostra os relacionamentos entre as tabelas do banco de dados: 39 Figura 14 – MER 4.4.4.2 Dicionário de Dados A tabela 5 provê maiores informações sobre os campos da tabela local: Nome Varchar [30], Armazena o nome do cinema, ou do teatro, ou do NotNull centro de convenções ou de qualquer outro local desejado. Nomes_busca Varchar[150], Armazenará os apelidos do local, por exemplo se o local se chama Parkshopping Barigui ele pode se NotNull chamar somente Barigui. Endereço Varchar [80], Armazenará o endereço do estabelecimento NotNull Tipo Varchar [20], Armazenará o tipo do local, se ele é um cinema, NotNull teatro... Tabela 5 – Dicionário de Dados Tabela Local A tabela 6 provê maiores informações sobre os campos da tabela atração: Nome Varchar [70] Armazena o nome do filme, ou peça teatral ou de 40 NotNull qualquer outra atração. Nomes_Busca Varchar[150], Armazenará os apelidos do local, por exemplo, o NotNull filme “Dois Filhos de Francisco”, também pode ser chamado de “Zezé Di Camargo e Luciano”. Tipo Varchar [20], Armazenará o tipo da atração, se ela é um filme, Gênero NotNull uma orquestra sinfônica, uma peça teatral... Varchar [20] Armazenará o gênero de uma atração, se é suspense, aventura, comédia... Censura Varchar [20] Armazenará a idade mínima para poder assistir o filme ou atração. Sinopse Varchar [300] Armazenará uma descrição sucinta sobre um filme Tabela 6 – Dicionário de Dados Tabela Atração 4.4.5 Arquivos Auxiliares Para tornar o sistema independente de língua e de símbolos foram utilizados vários arquivos auxiliares, os quais também facilitam a manutenção do software. 4.4.5.1 Dados Busca Este é o principal arquivo do sistema, é nele que estão contidas as informações necessárias para entender uma pergunta e gerar uma resposta. Este é um arquivo do tipo INI, portanto ele é dividido em sessões e cada uma delas possui chaves, onde são armazenados valores. Neste caso cada sessão indica os passos para responder cada tipo de pergunta e seu nome é dado de acordo com número de palavras chaves e de campos do banco de dados. As chaves utilizadas são as seguintes: 41 • Palavras Chaves: Indica as principais palavras que podem ser retiradas de uma pergunta para que ela seja entendida, elas são separadas pelo símbolo # indicando ‘e’, o símbolo & não foi utilizado, pois é mais provável que ele esteja no meio do nome de algum filme. Os sinônimos são separados pelo operador |. Caso algum filme venha a possuir algum desses símbolos em seu nome, eles podem ser alterados, sendo somente necessário muda-los também no arquivo Símbolos na sessão Lógicos. • BuscaBD: Também é utilizado para entender a pergunta, mas o valor desta chave está relacionado com o banco de dados. Aqui é necessário informar o campo que estará na pergunta bem como a tabela onde o campo se encontra, o formato deve ser Tabela.Campo. • Possui Tempo: Indica se a pesquisa possui tempo, ou dia ou hora. Em versões futuras esta chave deverá ser eliminada. • Resposta Esperada BD: Indica o campo do banco de dados no qual deve ser feito o select. • Resposta Esperada: Indica a resposta que deve ser dada à pergunta em questão. Nesta chave as strings <BUSCA BD> será substituída pelo campo do banco de dados utilizado na pergunta, <RESPOSTA BD> será substituída pelo campo do banco de dados correspondente a resposta à pergunta e <DATA> pela data que o usuário digitou na pergunta. Caso na pergunta não exista um tempo, essa string será simplesmente apagada. • Reposta Excecao: Caso o retorno do select no banco de dados for nulo, esta será a resposta a pergunta que será utilizada. Aqui as String <BUSCA BD> e <DATA> serão substituídas como no caso da chave Resposta Esperada. Para exemplificar este arquivo será utilizada a sessão 2.2.2 como exemplo: O nome da Sessão é 2.2.2, pois foi a segunda a ser criada, possui duas palavras chaves diferentes (não sinônimas) e o último dois indica que ela possui uma palavra em busca bd e possui tempo. 42 Os dois últimos valores servem para indicar o peso da sessão, caso mais de uma sessão se encaixe com a pergunta do cliente a sessão com maior peso será utilizada. [2.2.2] EXEMPLO=EM QUAIS CINEMAS PASSARA O AVIADOR AMANHA AS 21 HORAS PALAVRAS CHAVES=(QUAL|QUAIS#CINEMA|CINEMAS|TEATRO|TEATROS|LOCAL|LO CAIS|LUGAR|LUGARES)(ONDE|AONDE) BUSCA BD=TB_ATRACAO.NOMES_BUSCA POSSUI TEMPO=1 RESPOSTA ESPERADA BD=TB_LOCAL.NOME RESPOSTA PADRAO=<BUSCA BD> esta(ra) em cartaz <DATA> nos seguintes locais:<RESPOSTA> RESPOSTA EXCECAO=<BUSCA BD> nao esta(ra) em cartaz em nenhum dos locais cadastrados <DATA>. 4.4.5.2 Extenso Neste arquivo são guardados valores em extenso que devem ser substituídos por números arábicos, para que a busca seja simplificada. Atualmente nele existem quatro sessões: • [DiasSemana]: Substitui domingo ou dom por 1, segunda por 2 e assim por diante. • [Meses]: Substitui janeiro por 1, fevereiro por 2 e assim por diante. • [NumerosExtensoDia]: Substitui um ou primeiro por 1, dois por 2 e assim por diante • [NumerosExtensoHora]: Substitui uma por 1, duas por 2 e assim por diante 43 Os números extensos do dia e hora são diferentes, pois uma palavra é seguida ou precedida por números no feminino e outro no masculino. 4.4.5.3 Simbolos Neste arquivo são armazenados símbolos de separação lógica e de palavras. Nele existem duas sessões, que são as seguintes: • [Logicos]: São os separadores para fazer analises lógicas nas strings. Mais utilizados nas chaves “Palavras Chaves“ do arquivo DadosBusca. Pois uma pergunta só poderá se encaixar numa sessão se possuir todas as palavras separadas pelo símbolo de ’e’ ou alguma das palavras separadas pelo símbolo de ’ou’. • [Separadores]: Indicam símbolos que podem servir como separador de palavras, como espaço, virgula, pontos e outros. Abaixo é mostrado como este arquivo está preenchido atualmente: [Logicos] separadorAbre=( separadorFecha=) and=# or=| not=~ [Separadores] 1= 2=! 3=? 4=. 5=, 44 4.4.5.4 Ligações Database É este arquivo que pode deixar o sistema independente de banco de dados, podendo mudar o sistema para que funcione como uma lista telefônica, por exemplo. Este arquivo ainda deve ser digitado e criado manualmente, mas em versões futuras ele seria criado automaticamente só indicando o banco de dados. 4.4.5.5 Substituições É este arquivo que permite que ao treinar uma pesquisa, outra parecida, com mesmo sentido, seja automaticamente treinada. Também é através dele que letras acentuadas, não compatíveis com o padrão adotado de mensagens SMS, sejam substituídas por outras. Este arquivo possui as seguintes sessões: • [Letras] Indicam as letras que devem ser substituídas e por quais, isto é para evitar letras acentuadas. Exemplo: á=a é=e í=i ó=o ú=u â=a ê=e • [Sinônimos] Indicam os sinônimos das palavras para treinamento. Exemplo: 1=lugar|lugares|locais|local|localidade|localizacao|endereco|enderecos 2=Filme|Filmes 3=Peca|Pecas 4=Elenco|Atores|Ator|Atriz|Atrizes 45 • [Palavras Desnecessárias] Indicam as palavras que não são necessárias, numa pergunta, as que não são palavras chaves. Exemplo: 1=o 2=os 3=a 4=as 5=um • [SimbolosDesnecessários] Os símbolos que também não seriam palavras chaves como: 1=. 2=, 3=! 4=? 5=; 4.4.5.6 Contador Indica quantas vezes cada pergunta se encaixou numa sessão do arquivo DadosBusca como no exemplo abaixo, sendo o primeiro valor a sessão e o segundo a quantidade de vezes: [Numero de Vezes] Nao Encontrada=39 1=3 2=24 5=1 4=12 3=6 6=1 7=4 46 4.4.5.7 Pesquisas não encontradas Este é um arquivo txt e nele são armazenadas todas as perguntas que não se encaixaram em nenhuma sessão do arquivo DadosBusca 4.4.6 Firmware O firmware deste sistema é responsável pela constante leitura do buffer da serial do microcontrolador 8051. Toda vez que um caractere chegar no buffer, ele é adicionado ao final de uma variável dinâmica de caracteres. Isto continua acontecendo até quando o caracter que chegar pela serial for um ‘/r’. Então, o valor dessa variável é escrito no LCD. Por fim o processo recomeça, só que agora o valor será escrito na segunda linha do LCD. Como o LCD só possui duas linhas, na próxima vez que chegar um ‘/r’ o LCD será zerado e o valor da variável será escrito na primeira linha e assim continua o ciclo. 4.4.6.1 Fluxograma A figura 15 mostra o fluxograma do firmware. 47 Figura 15 – Fluxograma do firmware 4.4.6.2 Diagrama de Estados A figura 16 mostra o diagrama de estados do firmware. Figura 16 – Diagrama de Estados 48 4.5 Projeto de Hardware O hardware do sistema é relativamente simples e sua única função é mostrar num display LCD de caracteres, 16 colunas por 2 linhas, qual foi e quantas vezes a última pesquisa foi realizada. 4.5.1 Serial Os dados a serem mostrados no display são transmitidos serialmente, para tanto foi criado uma interface serial como mostra o esquemático da figura 17. Os únicos pinos utilizados foram o 2 (RX) que é a entrada dos dados e o 5 para deixar os níveis de referência da serial do computador com o do microcontrolador em comum. Figura 17 – Esquemático da serial 4.5.2 Microcontrolador O microcontrolador é responsável por sempre verificar se algum caracter chegou na serial e por guardar esses caracteres numa variável na memória RAM. 49 Sempre que um ‘/r’ chega ele controla o display e escreve o valor que estava na variável. A figura 18 mostra o esquemático do microcontrolador. Tendo como entrada o RX da Serial e como saída os pinos T0 e T1 para controle do display LCD além dos pinos da porta 1, que possui os bits do caracter que deve ser escrito no display. Figura 18 – Esquemático do microcontrolador 4.5.3 Display LCD O display é o encarregado de mostrar quantas vezes e qual foi a última pesquisa realizada. O esquemático deste módulo é apresentado na figura 19. 50 Figura 19 – Esquemático do display LCD 4.5.4 Componentes Os componentes utilizados foram os da tabela 7. Tabela 7 - Componentes 51 4.6 Procedimentos de Testes Os testes principais foram feitos em três módulos distintos: • O de envio e recebimento de mensagens do celular. • O de envio de mensagem para o display LCD. • O da busca pela informação requisitada. Para testar o funcionamento do recebimento de mensagens pelo celular, foram enviadas diversas frases de diferentes celulares e de diferentes formas (com ou sem acentos) para o celular conectado ao sistema e então mostrar na tela a mensagem recebida. Para testar o funcionamento do envio de mensagens pelo celular, foram enviadas diversas frases do computador para diferentes celulares. Para testar o display LCD foi utilizado o hyper terminal do windows e nele foram escritas diversas frases. Finalmente para testar as buscas em linguagem natural, foram feitos diversas perguntas e visto se as respostas eram condizentes. Ao garantir que esses três módulos funcionaram foram feitos testes no sistema como um todo. 52 5. ESTIMATIVA DE CUSTOS Recurso Quantidade Custo Unitário (R$) Custo (R$) Kit Microcontrolador 8051 1 50 50 Gastos com SMS 50 0,30 15 Microsoft Windows XP 1 800 800 Microsoft Office XP 1 550 550 Display LCD 1 25 25 Telefone Celular Siemens 1 398 398 1 150 150 750 10 7500 MC-60 Cabo Serial Siemens Horas de Trabalho TOTAL 9488 Tabela 8 – Estimativa de Custos 53 6. RESULTADOS E DISCUSSÃO Os resultados de forma geral foram bem satisfatórios. Contudo três problemas foram percebidos durante os teste, mas serão resolvidos em versões futuras. Um problema é que não é possível incluir um novo padrão de busca com mais de um campo na chave Busca BD nem na Resposta Esperada BD do arquivo DadosBusca, porém na próxima versão do software este problema será sanado. Outro problema é a necessidade de fazer várias perguntas para obter uma programação completa, por exemplo, se for perguntado onde algum filme esta passando, só se retorna o local, mas seria interessante que retornasse os horários também, isto é de fácil resolução. Em princípio isso não foi feito, pois o sistema perderia o poder de generalização, mas como para esta aplicação isto é importante, a inclusão de algumas poucas linhas de código resolveria o problema, seria só verificar se a pergunta se encaixou nessa sessão e retornar também os horários. O terceiro é que o software não é totalmente independente da língua, pois a classe cDataHora faz muitos tratamentos sem utilização de arquivos, então para mudar de língua seria necessário mexer no código fonte, este também não seria um problema de difícil solução, pois só é necessária a mudança de código em uma classe. No restante o sistema foi eficaz. O hardware funcionou perfeitamente, após muitos testes serem realizados, todas as vezes o display LCD mostrou em seu visor o que deveria ser mostrado. A figura 20 ilustra o funcionamento do hardware. Todo as funções do software para fazer com que o hardware funcionasse também funcionaram perfeitamente, sempre foi mostrada a sessão na qual a pergunta se encaixou na primeira linha e quantas vezes ela foi feita na segunda. Os cadastros também estavam plenamente funcionais, nenhum erro foi visto ao testar inclusões, alterações e exclusões. 54 Figura 20– Display LCD em funcionamento A troca de mensagens entre celulares (recebimento e envio) também não demonstrou problema algum. Porém, o recebimento está limitado a padrões conhecidos. Testes com diferentes marcas de celulares e envio de mensagem via internet foram feitos, mas como aparelhos como teletex, telefax, videotex, etc. não estavam disponíveis para teste, para verificar os padrões adotados por eles, essas mensagens são ignoradas, para evitar mensagens de erros inesperados no programa, já que este não pode parar, pois deve funcionar mesmo na ausência de um usuário. A parte de reconhecimento está funcional, ao fazer perguntas como, “Onde estará passando o filme A Feiticeira amanhã por volta das dezoito horas” ou parecidas com esta como, “Em quais cinemas Wallace e Grommit estará em cartaz amanhã lá pelas 18:00? ” a resposta será: “(Wallace e Gromit)(A feiticeira) esta(ra) em cartaz entre 7/11/2005 17:00 e 7/11/2005 19:00 nos seguintes locais: 55 Shopping Curitiba, Shopping Estacao, Shopping Crystal” ou caso esses filmes não estejam em cartaz em nenhum lugar nesses horários a resposta será: “(Wallace e Gromit)(A feiticeira) nao esta(ra) em cartaz em nenhum dos locais cadastrados entre 17:00 do dia 7/11/2005 e 19:00 do dia 7/11/2005 .” Como se pode perceber a resposta não possui acentuações, isto se deve ao fato de que alguns celulares mais antigos não suportam acentos, portanto adotou-se o padrão sem acentos, até porque o número de caracteres permitidos quando se utilizam acentos cai para menos da metade, porque o padrão utilizado passa a ser o de dezesseis bits e não o de octetos de 8 bits (Ambos os formatos são aceitos no recebimento da mensagem). O treinamento rápido também funcionou de maneira eficaz, ao ser feita uma pergunta do tipo “qual é o elenco do filme A Feiticeira?”, esta pergunta como ainda não havia sido treinada foi para o arquivo de pesquisas não treinadas. Ao clicar na aba de treinamento rápido a pesquisa apareceu, dentre outras, para ser selecionada, então após seleciona-la só foi necessário selecionar a tabela atração e o campo elenco e pressionar Criar para que esta pesquisa estivesse treinada. Após este treinamento, pesquisas parecidas, também estariam treinadas, por exemplo, se a pesquisa, “Quais são os atores do filme Wallace e Grommit” fosse feita o sistema retornaria o elenco do filme, caso estivesse cadastrado no banco de dados, caso contrário o retorno seria “Wallace e Grommit não possui elenco registrado em nosso banco de dados”. A figura 21 mostra a tela para o treinamento rápido. Os dois campos (Edit) são opcionais e servem para indicar o formato da resposta, caso exista algo no banco de dados ou caso o retorno dele seja nulo. 56 Figura 21 – Tela do treinamento 57 7. CONCLUSÕES Os resultados obtidos foram satisfatórios, porém não são suficientes para tornar o produto comercial. Isto, principalmente, deve-se ao fato de que antes de torná-lo comercial, muito mais treinamentos e testes devem ser feitos, pois as mensagens que não foram possíveis obter respostas, não poderiam ser cobradas, o que aumentaria o custo do sistema. E um caso ainda pior seria os das mensagens respondidas erroneamente, o que deixaria os cliente insatisfeitos, pois teriam pago por mensagens que se tornariam inúteis. Portanto seria interessante primeiramente disponibilizar o sistema de busca em linguagem natural gratuitamente na internet, para que se pudesse obter um grande arranjo variado de perguntas para então treina-las e verificar a real eficácia do sistema. Também seria interessante testar o módulo do celular com os mais variados meios de envio de mensagens SMS. Porém após estas etapas, o sistema teria grande potencial para se tornar um grande produto comercial. Em termos acadêmicos muito foi ganho com a realização do projeto. Foi possível perceber a importância de um cronograma bem feito, pois a parte mais difícil do projeto foi deixada para o final, um erro que poderia não ter ocorrido. E muito se aprendeu com a realização do projeto, principalmente na elaboração de um programa grande e com muitas classes. 58 8. CRONOGRAMA Conteúdo Datas 21-28 de 29 de fevereiro fevereiro 28 de março 28 de março 4 4-11 de de abril abril Proposta Estudo sobre SMS, 8051, LCD, Linguagem Natural Especificação Adquirir cabo de dados e celular Testes (Hyper Terminal) Conteúdo Datas Ler mensagem de SMS Enviar mensagem de SMS Apagar mensagem SMS Codificar mensagem Finalizar módulo SMS Projeto 11-18 de abril 18-25 de abril 25 de abril 02-16 de 16-23 de 02 de maio maio maio 59 Conteúdo Datas 20 de junho 11 de julho 01 - 08 de 08-15 de 23 de maio 06-20 de junho 06 de junho 11 de julho 01 de agosto agosto agosto Montagem do hardware Classe Strings Classe Reconhecimento Classe Broker Classe Pergunta-Resposta Software Módulo Display Criação e trabalho com o banco de dados Conteúdo Datas Testes e aprimoramento Entrega da implementação e qualificação do projeto Aumento da base de dados e correções Validação e documentação Monografia 15 de agosto 10 de outubro 05-12 de 10 de outubro 05 de dezembro dezembro 60 9. BIBLIOGRAFIA [1] http://www.gsmfavorites.com/sms/introduction/ [2] Juliano Niederauer, Interbase - Guia de Consulta Rápida, Novatec, 2003 [3] Denys E. C. Nicolosi, Microcontrolador 8051 Detalhado, Érica, 2000 [4] Victorine Viviane Mizrahi, Treinamento em Linguagem C++ módulo 2, Makron Books, 1995 [5] H.M. Deitel e P.J. Deitel, C++ Como Programar 3ª edição, Bookman, 2001 [6] http://www.ime.eb.br/~pinho/micro/apostila/lcdport.pdf [7] http://www.cac-acc.org/