Mudanças entre as edições de "Manual do SCAE"

De LCAD
Ir para: navegação, pesquisa
(Codificação de colunas das tabelas do BD segundo o dicionário eletrônico do SCAE)
(Criação de um lexicon no SCAE)
Linha 276: Linha 276:
  
 
=====Criação de um lexicon no SCAE=====
 
=====Criação de um lexicon no SCAE=====
 +
 +
[[imagem:Scae lexicon.jpg|frame|right|250px|Figura 4: Criação de um lexicon.]]
 +
 
O objetivo desta interface é realizar a criação de um lexicon. O lexicon compreende um conjunto de palavras de interesse as quais são representadas na sua forma canônica. O lexicon é formado a partir de um texto, de um dicionário contendo o mapeamento das palavras nas suas respectivas palavras canônicas e é construído, também, a partir de um conjunto de classes gramáticais a serem removidas. O lexicon será utilizado para a criação dos vetores de treino e teste (TTV).
 
O objetivo desta interface é realizar a criação de um lexicon. O lexicon compreende um conjunto de palavras de interesse as quais são representadas na sua forma canônica. O lexicon é formado a partir de um texto, de um dicionário contendo o mapeamento das palavras nas suas respectivas palavras canônicas e é construído, também, a partir de um conjunto de classes gramáticais a serem removidas. O lexicon será utilizado para a criação dos vetores de treino e teste (TTV).
  

Edição das 14h22min de 15 de janeiro de 2008

Introdução

Este manual visa explicar como utilizar o SCAE, desde sua instalação e manutenção até sua utilização.

Tutorial sobre o SCAE

Introdução

O Sistema de Codificação Automática de Atividades Econômicas (SCAE) possui a arquitetura mostrada na Figura 1. A Interface do usuário com o sistema é um navegador Internet (browser), que se comunica com o módulo Servidor de Aplicação (SA) do SCAE. Este módulo, por sua vez, se comunica com os outros dois módulos do SCAE: Core e Banco de Dados (BD).

Figura 1: Arquitetura do SCAE

Em uma solicitação de classificação de atividade econômica, o usuário, por meio da Interface, envia ao SA uma descrição de atividade econômica. O SA, por sua vez, envia esta descrição para o Core, que a classifica e retorna códigos CNAE e medidas de confiança quanto às associações destes códigos com a descrição de atividade econômica recebida. De posse dos códigos CNAE, o SA requisita ao BD o texto associado aos códigos CNAE.

O Core também se comunica com o módulo BD, que é responsável por armazenar todo o conhecimento do SCAE (dicionário eletrônico, representação interna ao sistema da tabela CNAE, representação interna ao sistema de descrições de atividades econômicas usadas para treinamento, etc). Além de realizar a classificação, o Core manipula as tabelas do sistema (cria, insere dados, remove dados, etc) guardadas em BD. Diferentes submódulos do Core são responsáveis por esta manipulação. O SA está sendo desenvolvido em PHP, o BD em C, e o Core em C, Perl e Java.

Instalação

Um roteiro detalhado de instalação do SCAE pode ser encontrado em http://www.lcad.inf.ufes.br/svn/scae/Roteiros. Neste tutorial, apresentamos apenas um procedimento de instalação simplificado, que assume que o sistema operacional é o Fedora Core 8 e que várias bibliotecas já estão instaladas (em muitas instalações Fedora, mesmo anteriores à versão 8, ele deve ser o suficiente para colocar o SCAE em operação). Contudo, verifique se as bibliotecas w3c-libwww e xmlrpc-c estão instaladas com os comandos (se elas não estiverem instaladas estes comandos as instalarão):

yum install w3c-libwww
yum install w3c-libwww-devel
yum install xmlrpc-c
yum install xmlrpc-c-devel

Para a iniciar a instalação do SCAE, baixe (download) seus arquivos de instalação. Para isso, vá para o diretório raiz de sua conta e digite o comando (você vai precisar de uma senha para baixar os arquivos; solicite-a via o e-mail de suporte do LCAD):

svn co http://www.lcad.inf.ufes.br/svn/scae/code

Este comando vai criar o diretório code e vários subdiretórios (se você precisar remover todo o diretório code não se esqueça de deletar o arquivo .subversion que fica no seu diretório raiz).

Compilando e executando o BD

Compile o BD (Figura 1) executando os seguintes comandos:

cd code/CORES/DB_CORE
make clean
make

Estes comandos vão criar o executável db_core no diretório code/CORES/DB_CORE. Este executável é um daemon que implementa o BD. Além disso, ele implementa facilidades de criação de tabelas a partir de arquivos .csv (coma separated values). O script abaixo usa o db_core para criar um conjunto básico de tabelas que permitem demonstrar as funcionalidades do SCAE (assuma sempre que o diretório corrente é o último especificado por um comando cd):

./build_tables_subclasse_110.bat

A saída deste comando deve ser:

Locale set to pt_BR.UTF-8.
Loading dictionary .csv
Number of dictionary words = 23160
Number of distincts words = 17365
Loading cnae subclasses .csv
Number of CNAE-Subclasses = 1183
Loading dados de vitoria .csv
Number of economic activities descriptions = 14204
Number of distinct economic activities descriptions = 3281
Lexicon size = 1367. Number palavras com frequencia superior (pfs) = 0.
Saving tables

Os arquivos .csv que servem de entrada para este script estão do diretório CSV_FILES.

A partir deste momento, você pode colocar o daemon db_core em operação com o comando:

nohup db_core init_server ports.cfg&

Mensagens de erro geradas pelo db_core serão gravadas no arquivo nohup.out, conforme mensagem mostrada após a execução do comando acima (nohup: ignoring input and appending output to nohup.out). Com a execução deste comando, o BD da Figura 1 estará em operação. As tabelas mantidas por este banco de dados e necessárias para a operação do SCAE serão carregadas conforme demandadas pelo SCAE. Para interromper o db_core, descubra o seu PID com o comando:

ps -A | grep db_core

e kill o db_core com o comando

kill -9 PID (onde PID é o número do processo informado pelo comando ps)

Compilando a biblioteca compartilhada de comunicação (shared)

Antes de compilar e executar um CORE, é necessário garantir que a biblioteca compartilhada de comunicação esteja compilada e sua variável de ambiente setada. Para isto, siga os passos aseguir:

cd code/CORES/shared
make clean
make

Em seguida, insira as seguintes linhas ao seu .bashrc (localizado no seu diretório home):

# SHARED 
export SHAREDHOME=$HOME/code/CORES/shared;

Compilando e executando o Core VS

O Core da Figura 1, na verdade, pode ser composto por um ou mais classificadores. Na versão atual do SCAE, dois classificadores estão disponíveis: VS e WNN. O Vector Space (VS) Core emprega a técnica de mesmo nome para classificar (na verdade, categorizar) texto, enquanto que o Weightless Neural Network (WNN) Core emprega redes neurais sem peso (do tipo Virtual Generalizing Ramdon Access Memory - VG-RAM) para o mesmo fim. Mais detalhes sobre como estas técnicas podem ser usadas para categorizar objetos sociais de empresas (atividades econômicas) segunda a tabela de Classificação Nacional de Atividades Econômicas (CNAE) podem ser encontrados no trabalho De Souza, A. F.; Pedroni, F.; OLIVEIRA, E.; Ciarelli, P. M.; Henrique, W. F.; Veronese, L. . Automated Free Text Classification of Economic Activities using VG-RAM Weightless Neural Networks. International Conference on Intelligent Systems Design and Applications (ISDA), 2007, Rio de Janeiro. Proceedings of ISDA, 2007..

Para compilar o VS_CORE, volte para o seu diretório raiz e digite os comandos:

cd code/CORES/VS_CORE
make clean
make

Estes comandos vão criar o executável vs_core no diretório code/CORES/VS_CORE. Este executável é um daemon que implementa o Core que classifica segundo a técnica VS. Para colocá-lo em operação, digite:

nohup vs_core&

Com o comando acima, parte do Core da Figura 1 estará em operação. Para interromper o vs_core, descubra o seu PID com o comando:

ps -A | grep vs_core

e kill o vs_core com o comando

kill -9 PID (onde PID é o número do processo informado pelo comando ps)

Compilando e executando o Core WNN

Antes de compilar o Core WNN são necessárias algumas bibliotecas, que podem ser instaladas com os comandos abaixo (você precisa ser root para executar o yum):

yum install xforms xforms-devel freeglut freeglut-devel libnet-devel byacc

Para compilar o Core WNN volte para o seu diretório raiz e digite os comandos:

cd code/CORES/MAE
make clean
make –f Makefile.no_interface
cd examples/wnn_cnae
make clean
make

Estes comandos vão criar o executável class_cnae no diretório code/CORES/MAE/examples/wnn_cnae. Este executável é um daemon que implementa o Core que classifica texto usando VG-RAM WNN. Para colocá-lo em operação, digite:

nohup wnn&

Com o comando acima, uma segunda parte do Core da Figura 1 estará em operação. Para interromper o class_cnae descubra o seu PID com o comando:

ps -A | grep wnn

e kill o class_cnae com o comando

kill -9 PID (onde PID é o número do processo informado pelo comando ps)

Configurando o SA

Com os deamons db_core, vs_core e class_cnae em operação, é possível examinar todas as funcionalidades do SCAE por meio de um browser graças ao seu servidor de aplicação SA (ver Figura 1). O SA foi implementado em PHP e seu código fica no diretório code/scaeweb. Para acessá-lo com um browser, ele precisa "servido" por um servidor http, como o Apache, por exemplo. Se você está instalando o SCAE em uma máquina stand alone, você pode instalar o apache e o php com o comando (você precisa ser root para usar o yum):

yum install apache php

Para que o apache sirva o SA, coloque um link simbólico do diretório scaeweb para o diretório raiz de páginas http do Apache (você precisa ser root para escrever no diretório raiz do Apache):

ln -s code/scaeweb /var/www/html/scaeweb

Além disso, vc precisa garantir que o caminho até o diretório code/scaeweb tenha permissão de leitura. Para isto basta adicionar essas permissões com o comando chmod. Por exemplo, caso seu diretório seja /home/usuario:

cd /home
chmod +r+x usuario

Você pode então acessar o SCAE com um browser em sua máquina na URL: http://127.0.0.1/scaeweb

Seu browser deve mostrar a imagem da Figura 2. Caso ela não apareça, você tem problemas de configuração no Apache ou PHP. Neste caso, se a mensagem do browser indicar que você não tem permissão de acesso ao diretório scaeweb, experimente copiar todo o conteúdo do diretório code/scaeweb para /var/www/html/:

rm /var/www/html/scaeweb
cp -r code/scaeweb /var/www/html

Caso o Apache funcione exibindo o conteúdo da página mas não consiga interpretar o php, experiemnte reiniciá-lo o Apache:

/etc/init.d/httpd restart
Figura 2: SCAE

Se funcionar, experimente voltar à solução com o link simbólico e reduzir o nível de segurança do SELinux (Security-Enhanced Linux) com a ferramenta Sistema->SELinux Management. Mude System Default Enforcing Mode e Current Enforcing Mode para Permissive. Se funcionar, o SELinux não permite que o Apache (httpd) acesse diretórios de usuário via links simbólicos (e possivelmente muitos outros diretórios). Neste caso, fique com a cópia de scaeweb no /var/www/http, ou deixe o SELinux como indicado acima, ou configure o SELinux para permitir que o Apache acesse links simbólicos.

Se a redução do nível de segurança do SELinux funcionar, o Apache pode não estar configurado para permitir o seu próprio acesso a links simbólicos. Neste caso, consulte a documentação do Apache sobre o assunto na Internet. O problema pode estar, também, no PHP.


Se você conseguir ver a Figura 2 no seu browser, o SCAE está pronto para operar (desde que também estejam rodando o DB_CORE e ao menos um core categorizador). Neste ponto, já é possível utilizar a interface para administrar o sistema. Siga pelo link de Administração para treinar o categorizador desejado e ter a possibilidade de efetuar categorizações. Para maiores detalhes, remeta-se a seção Utilizando a interface WEB.

As demais funcionalidade do SCAE (inclusive sua interface via linha de comando) são apresentadas na próxima seção.

Usando o SCAE

Esta seção visa explicar como utilizar o DB_CORE para criar as tabelas a serem utilizá-las e também como executá-lo, como utilizar as interfaces de linha de comando e web para realizar treinamentos, testes e categorização.

Criando Tabelas no DB_CORE

O DB_CORE interpreta diretivas da linha comando e executa tarefas de carregamento de tabelas e criação de lexicon entre outras. A seguir são detalhados os possíveis comandos ao DB_CORE:

load_csv_cnae_subclasse XXXXXXXXXX

Carrega a tabela subclasse de nome XXXXXXXXXX;

load_csv_dados_vitoria XXXXXXXXXX

Carrega a tabela de dados de vitoria de nome XXXXXXXXXX;

create_word_vectors_table XXXXXXXXXX-YYYYYYYYYY'

Cria a tabela de vetores para cada linha da coluna YYYYYYYYYY da tabela XXXXXXXXXX;

create_lexicon NOME_DO_LEXICON "Descrição do lexicon." NUMERO_DE_TABELAS TABELA-COLUNA:MIN:MAX ... TABELA-COLUNA:MIN:MAX "classe1 classe2 ... classeN" PFS

Cria um lexicon com os parâmetros fornecidos, onde:

  • NOME_DO_LEXICON : um nome sem espaços;
  • "Descrição do lexicon." : uma descrição obrigatoriamente entre aspas duplas;
  • NUMERO_DE_TABELAS : um inteiro informando o número de tabelas que serão utilizadas;
  • TABELA-COLUNA:MIN:MAX : informar cada TABELA-COLUNA:MIN:MAX de acordo com o número de tabelas informado, dizendo o nome da tabela, da coluna, limite inferior e superior;
  • "classe1 classe2 ... classeN" : as classes gramaticais a serem removidas separadas por espaços e entre aspas duplas obrigatoriamente;
  • PFS : um inteiro informando a frequencia maxima para inclusao de palavras no lexicon;
create_training_and_testing_vectors_table LEXICON QTDE TABELA-COLUNA ... TABELA-COLUNA CONSTRUÇÃO

Cria os vetores individuais de treinamento e teste com os parâmetros fornecidos, onde:

  • LEXICON : nome do lexicon;
  • QTDE : quantidade de TABELA-COLUNAs que serão informadas;
  • TABELA-COLUNA : par com o nome da tabela e da coluna;
  • CONSTRUÇÃO : método de construção do vetor final;
create_cnae_codes_vectors_table TABELA CONSTRUÇÃO

Constrói a tabela de códigos cnae:

  • TABELA : nome da tabela;
  • CONSTRUÇÃO : método de construção do vetor final;
create_ttv TTV LEXICON TABELA QTDE COLUNA ... COLUNA CONSTRUÇÃO

Cria uma tabela de vetores de treinamento e teste:

  • TTV : nome dado à tabela de ttv;
  • LEXICON : nome do lexicon a utilizar;
  • TABELA : nome da tabela (cnae ou dados) a utilizar;
  • QTDE : quantidade de colunas que serão informadas;
  • COLUNA : cada nome de coluna de acordo com a quantidade informada;
  • CONSTRUÇÃO : método de construção do vetor final;
save_tables_in_binary_format

Salva as tabelas carregadas e construídas em formato binário para posterior carregamento (mais rápido);

init_server ports.cfg

Inicializa o servidor com a configuração do arquivo ports.cfg


A seguir, temos um exemplo completo retirado do arquivo build_tables_subclasse_110.bat

./db_core \
load_csv_cnae_subclasse CNAE_110_SUBCLASSE \
load_csv_dados_vitoria DADOS_VITORIA_SUB_110 \
create_word_vectors_table CNAE_110_SUBCLASSE-DESCRICAO_SUB \
create_word_vectors_table DADOS_VITORIA_SUB_110-OBJETO_SOCIAL \
create_lexicon LEXICON_LESS_ART_PREP_SUB_110 "Tudo menos artigos e preposicoes da tabela CNAE 1.1" 1 CNAE_110_SUBCLASSE-DESCRICAO_SUB:0:1182 "art. prep." 10000 \
create_training_and_testing_vectors_table LEXICON_LESS_ART_PREP_SUB_110 1 CNAE_110_SUBCLASSE-DESCRICAO_SUB DEFAULT \
create_cnae_codes_vectors_table CNAE_110_SUBCLASSE DEFAULT \
create_training_and_testing_vectors_table LEXICON_LESS_ART_PREP_SUB_110 1 DADOS_VITORIA_SUB_110-OBJETO_SOCIAL DEFAULT \
create_cnae_codes_vectors_table DADOS_VITORIA_SUB_110 DEFAULT \
create_ttv TTV_C1S_DESC LEXICON_LESS_ART_PREP_SUB_110 CNAE_110_SUBCLASSE 1 DESCRICAO_SUB DEFAULT \
create_ttv TTV_DVS1_OBJS LEXICON_LESS_ART_PREP_SUB_110 DADOS_VITORIA_SUB_110 1 OBJETO_SOCIAL DEFAULT \
save_tables_in_binary_format

Utilizando a USER_INTERFACE

A USER_INTERFACE interpreta diretivas da linha comando e executa tarefas de treinamento e teste entre outras. A seguir são detalhados os possíveis comandos à USER_INTERFACE:

read_ports CONFIG_FILE

Carrega o arquvio de configuração de nome CONFIG_FILE, o qual contém os nomes dos CORES e suas respectivas portas de escuta;

train NOME_DO_CORE NOME_DO_TREINAMENTO DESCRIÇÃO_DO_TREINAMENTO NUMERO_DE_TABELAS TABELA_TTV MIN MAX ... TABELA_TTV MIN  MAX

Realiza um treinamento com os parâmetros fornecidos, onde:

  • NOME_DO_CORE : um nome sem espaços;
  • NOME_DO_TREINAMENTO : um nome sem espaços;
  • DESCRIÇÃO_DO_TREINAMENTO : uma descrição obrigatoriamente entre aspas duplas;
  • NUMERO_DE_TABLES : um inteiro informando o número de tabelas que serão utilizadas no treino;
  • TABELA_TTV: um nome, sem espaços, informando o nome da table de TTVs a ser utilizada;
  • MIN: um inteiro informando limite inferior da TABLE_TTV a ser utilizado;
  • MAX : um inteiro informando limite superior da TABLE_TTV a ser utilizado;
save NOME_DO_CORE NOME_DO_TREINAMENTO

Salva o treinamento NOME_DO_TREINAMENTO no CORE NOME_DO_CORE. Os parâmetros fornecidos são:

  • NOME_DO_CORE : um nome sem espaços;
  • NOME_DO_TREINAMENTO : um nome sem espaços;
reload NOME_DO_CORE NOME_DO_TREINAMENTO

Recarrega o treinamento NOME_DO_TREINAMENTO para o CORE NOME_DO_CORE. Os parâmetros fornecidos são:

  • NOME_DO_CORE : um nome sem espaços;
  • NOME_DO_TREINAMENTO : um nome sem espaços;
test NOME_DO_CORE NOME_DO_TESTE DESCRIÇÃO_DO_TESTE NUMERO_DE_TABELAS TABELA_TTV MIN MAX ... TABELA_TTV MIN  MAX

Realiza um teste os parâmetros fornecidos, onde:

  • NOME_DO_CORE : um nome sem espaços;
  • NOME_DO_TREINAMENTO : um nome sem espaços;
  • DESCRIÇÃO_DO_TESTE : uma descrição obrigatoriamente entre aspas duplas;
  • NUMERO_DE_TABLES : um inteiro informando o número de tabelas que serão utilizadas no teste;
  • TABELA_TTV: um nome, sem espaços, informando o nome da table de TTVs a ser utilizada;
  • MIN: um inteiro informando limite inferior da TABLE_TTV a ser utilizado;
  • MAX : um inteiro informando limite superior da TABLE_TTV a ser utilizado;

A seguir, temos um exemplo completo de treino retirado do arquivo experimento_1.1.1_train.bat

./user_interface \
read_ports ports.cfg \
train VS TREINAMENTO_EXPERIMENTO_1.1.1 "Treinamento com a TTV_C1S_DESC completa." 1 TTV_C1S_DESC 0 1182 \
save VS "TREINAMENTO_EXPERIMENTO_1.1.1"

Agora um exemplo completo de teste retirado do arquivo experimento_1.1.1_test.bat

./user_interface \
read_ports ports.cfg \
reload VS TREINAMENTO_EXPERIMENTO_1.1.1 \
test VS TESTE_EXPERIMENTO_1.1.1 "Teste com a TTV_C1S_DESC completa." 1 TTV_C1S_DESC 0 1182


Utilizando a interface Web

A interface Web permite que o usuário do sistema SCAE realize todos os passos necessários para a classificação de atividades econômicas. A interface Web dispoinibiliza as seguintes funcionalidades:

  1. Codificação de colunas das tabelas do BD;
  2. Criação de um lexicon;
  3. Criação de vetores de treinamento e teste;
  4. Treinamento dos cores;
  5. Teste dos cores;
  6. Classifição de atividades econômicas;
Codificação de colunas das tabelas do BD segundo o dicionário eletrônico do SCAE
Figura 2: SCAE

O objetivo desta interface é realizar a codificação de colunas das tabelas do BD segundo o dicionário eletrônico utilizado no SCAE. As colunas codificadas serão utilizadas para a criação de um Lexicon e de vetores de treinamento e teste (TTV).

Para realizar a codificação das colunas, o usuário precisa digitar os nomes das tabelas e a respestivas colunas da tabela nos campos apresentadados na interface, sendo que o primeiro campo de cada linha corresponde ao nome da tabela e os demais campos aos nomes das colunas. Ao clicar no campo referente ao nome da tabela, é mostrado no item Sugestão os possíveis nomes de tabelas existentes atualmente no banco de dados. O mesmo vale para os campos referentes aos nomes das colunas. Ao digitar o nome da tabela ou da coluna nos campos, o item Sugestão exibe os nomes das tabelas ou colunas que iniciam com os caracteres digitados.

Os campos referentes aos nomes das colunas estão desabilitados e são habilitados a partir do momento que o nome da tabela digitado é validado.

Após digitar os nomes das colunas das tabelas desejáveis para a codificação, o usuário deve clicar no botão Codificar para realizar a codificação das colunas. Para apagar os nomes da tabela e das colunas, o usário pode clicar no botão Limpar ou pressionar a tecla F5. Ao clicar no botão Codificar, uma caixa de texto em vermelho é mostrada no canto superior direito da tela informando o status da codificação.

O resultado da codificação é mostrado no item O resultado será mostrado aqui. Esse item, também, é utilizado para informar os possíveis erros decorrentes de comunicação com os cores, mensagens XML erradas e campos preenchidos incorretamente, etc...

Criação de um lexicon no SCAE
Figura 4: Criação de um lexicon.

O objetivo desta interface é realizar a criação de um lexicon. O lexicon compreende um conjunto de palavras de interesse as quais são representadas na sua forma canônica. O lexicon é formado a partir de um texto, de um dicionário contendo o mapeamento das palavras nas suas respectivas palavras canônicas e é construído, também, a partir de um conjunto de classes gramáticais a serem removidas. O lexicon será utilizado para a criação dos vetores de treino e teste (TTV).

Para criar um lexicon, o usuário precisa digitar:

  • o nome do lexicon;
  • o pfs (máxima frequência da palavra na coleção);
  • os nomes das tabelas, as respestivas colunas da tabela e os limites inferiores e superiores nos campos apresentadados na interface, sendo que o primeiro campo de cada linha corresponde ao nome da tabela, os quatros campos seguintes corresponde aos nomes das colunas e os dois últimos campos corresponde aos limites;
  • a descrição do lexicon;

Caso deseje selecionar alguma classe gramatical, basta o usuário selecionar as classes desejáveis. Ao clicar no botão Marcar todas todas as classes gramaticais são selecionadas. O botão Desmarcar desmarcar alguma classe gramatical selecionada.

Ao clicar no campo referente ao nome do lexicon, caso exista algum lexicon criado, é mostrado no item Sugestão os possíveis nomes de lexicons existentes no banco de dados. Ao digitar o nome do lexicon no campo, o item Sugestão exibe os nomes dos lexicons que iniciam com os caracteres digitados. Ao verficar que o nome do lexicon digitado já existe, a interface preenche os demais campos com as informações que o lexicon foi criado.

Ao clicar no campo referente ao nome da tabela, é mostrado no item Sugestão os possíveis nomes de tabelas existentes atualmente no banco de dados. O mesmo vale para os campos referentes aos nomes das colunas. Ao digitar o nome da tabela ou da coluna nos campos, o item Sugestão exibe os nomes das tabelas ou colunas que iniciam com os caracteres digitados.

Os campos referentes aos nomes das colunas estão desabilitados e são habilitados a partir do momento que o nome da tabela digitado é validado.

Após preencher todas as informações necessárias para a criação de um lexicon, o usuário deve clicar no botão Criar lexicon para criar um lexicon. Para apagar as informações digitais na interface, o usário pode clicar no botão Limpar ou pressionar a tecla F5. Ao clicar no botão Criar lexicon, uma caixa de texto em vermelho é mostrada no canto superior direito da tela informando o status da criação do lexicon.

O resultado da codificação é mostrado no item O resultado será mostrado aqui. Esse item, também, é utilizado para informar os possíveis erros decorrentes de comunicação com os cores, mensagens XML erradas e campos preenchidos incorretamente, etc...

Criação de vetores de treinamento e teste

O objetivo desta interface é realizar a criação dos vetores de treinamento e teste. Os vetores de treinamento e teste são utilizados para treinar e testar os cores classificadores.

Para criar um vetor de treinamento e teste, o usuário precisa digitar:

  • o nome do lexicon;
  • o nome da tabela de treino e teste;
  • os nomes das tabelas, as respectivas colunas da tabela e a construção do treino e teste nos campos apresentadados na interface, sendo que o primeiro campo de cada linha corresponde ao nome do treino e teste, o segundo ao nome da tabela, os quatros campos seguintes corresponde aos nomes das colunas e o último corresponde a construção do treino e teste;

Ao clicar no campo referente ao nome do lexicon, caso exista algum lexicon criado, é mostrado no item Sugestão os possíveis nomes de lexicons existentes no banco de dados. Ao digitar o nome do lexicon no campo, o item Sugestão exibe os nomes dos lexicons que iniciam com os caracteres digitados.

Ao clicar no campo referente ao nome da tabela, é mostrado no item Sugestão os possíveis nomes de tabelas existentes atualmente no banco de dados. O mesmo vale para os campos referentes aos nomes das colunas. Ao digitar o nome da tabela ou da coluna nos campos, o item Sugestão exibe os nomes das tabelas ou colunas que iniciam com os caracteres digitados.

Os campos referentes aos nomes das colunas estão desabilitados e são habilitados a partir do momento que o nome da tabela digitado é validado.

Após preencher todas as informações necessárias para a criação de um vetor de treino e teste, o usuário deve clicar no botão Criar vetor para criar um o vetor de treino e teste. Para apagar as informações digitais na interface, o usário pode clicar no botão Limpar ou pressionar a tecla F5. Ao clicar no botão Criar vetor, uma caixa de texto em vermelho é mostrada no canto superior direito da tela informando o status da criação do lexicon.

O resultado da codificação é mostrado no item O resultado será mostrado aqui. Esse item, também, é utilizado para informar os possíveis erros decorrentes de comunicação com os cores, mensagens XML erradas e campos preenchidos incorretamente, etc...

Treinamento dos cores classificadores do SCAE

O objetivo desta interface é realizar o treinamento dos cores classificadores do SCAE.

Para realizar o treinamento, o usuário precisa:

  • selecionar o core classificador;
  • nome do treinanento;
  • os nomes das tabelas de treino e teste e os limites inferiores e superiores nos campos apresentadados na interface, sendo que o primeiro campo de cada linha corresponde ao nome das tabelas de treino e tese, os dois campos seguintes correspondem aos limites;
  • a descrição do treinamento;

Ao selecionar o core classificador, as informações dos campos da interfaces são apagados.

Ao clicar no campo referente ao nome do treinamento, caso exista algum treimamento criado, é mostrado no item Sugestão os possíveis nomes de treinamento existentes no banco de dados. Ao digitar o nome do treinamento no campo, o item Sugestão exibe os nomes dos treinamentos que iniciam com os caracteres digitados. Ao verficar que o nome do treinamento digitado já existe, a interface preenche os demais campos com as informações que o treinamento foi criado.

Ao clicar no campo referente ao nome da tabela de treino e teste, é mostrado no item Sugestão os possíveis nomes de tabelas existentes atualmente no banco de dados. Ao digitar o nome da tabela ou da coluna nos campos, o item Sugestão exibe os nomes das tabelas ou colunas que iniciam com os caracteres digitados.

Os campos referentes aos nomes das colunas estão desabilitados e são habilitados a partir do momento que o nome da tabela digitado é validado.

Os campos correspondentes ao nome do lexicon estão desabilitados e apenas mostram qual lexicon foi utilizado para a criação da tabela de treino e teste. Não é permitido a edição desse campo.

Após preencher todas as informações necessárias para um treino, o usuário deve clicar no botão Treinar para treinar os cores classificadores. Para apagar as informações digitais na interface, o usário pode clicar no botão Limpar ou pressionar a tecla F5. Ao clicar no botão Treinar, uma caixa de texto em vermelho é mostrada no canto superior direito da tela informando o status da criação do lexicon.

O resultado da codificação é mostrado no item O resultado será mostrado aqui. Esse item, também, é utilizado para informar os possíveis erros decorrentes de comunicação com os cores, mensagens XML erradas e campos preenchidos incorretamente, etc...

Teste dos cores classificadores do SCAE

O objetivo desta interface é realizar o teste dos cores classificadores do SCAE.

Para realizar o teste, o usuário precisa:

  • selecionar o core classificador;
  • digitar o nome do teste;
  • digitar o nome do treinanento;
  • digitar os nomes das tabelas de treino e teste e os limites inferiores e superiores nos campos apresentadados na interface, sendo que o primeiro campo de cada linha corresponde ao nome das tabelas de treino e tese, os dois campos seguintes correspondem aos limites;
  • a descrição do teste;

Ao selecionar o core classificador, as informações dos campos da interface são apagados.

Ao clicar no campo referente ao nome do teste, caso exista algum teste criado, é mostrado no item Sugestão os possíveis nomes de teste existentes no banco de dados. Ao digitar o nome do teste no campo, o item Sugestão exibe os nomes dos teste que iniciam com os caracteres digitados. Ao verficar que o nome do teste digitado já existe, a interface preenche os demais campos com as informações que o treinamento foi criado.

Ao clicar no campo referente ao nome do treinamento, caso exista algum treinamento criado, é mostrado no item Sugestão os possíveis nomes de treinamento existentes no banco de dados. Ao digitar o nome do treinamento no campo, o item Sugestão exibe os nomes dos treinamentos que iniciam com os caracteres digitados.

Ao clicar no campo referente ao nome da tabela de treino e teste, é mostrado no item Sugestão os possíveis nomes de tabelas existentes atualmente no banco de dados. Ao digitar o nome da tabela ou da coluna nos campos, o item Sugestão exibe os nomes das tabelas ou colunas que iniciam com os caracteres digitados.

Os campos referentes aos nomes das colunas estão desabilitados e são habilitados a partir do momento que o nome da tabela digitado é validado.

Os campos correspondentes ao nome do lexicon estão desabilitados e apenas mostram qual lexicon foi utilizado para a criação da tabela de treino e teste. Não é permitido a edição desse campo.

Após preencher todas as informações necessárias para um teste, o usuário deve clicar no botão Testar para testar os cores classificadores. Para apagar as informações digitais na interface, o usário pode clicar no botão Limpar ou pressionar a tecla F5. Ao clicar no botão Testar, uma caixa de texto em vermelho é mostrada no canto superior direito da tela informando o status da criação do lexicon.

O resultado da codificação é mostrado no item O resultado será mostrado aqui. Esse item, também, é utilizado para informar os possíveis erros decorrentes de comunicação com os cores, mensagens XML erradas e campos preenchidos incorretamente, etc...

Classificação de atividades econômicas com o SCAE

O objetivo desta interface é realizar a classificação de atividades econômicas de acordo com a descrição da atividade.

Para realizar o teste, o usuário precisa:

  • digitar a descrição da atividade no campo Descrição das Atividades;
  • selecionar qual o core que realizará a classificação;

Após preencher todas as informações necessárias, o usuário deve clicar no botão Classificar para classificar a atividade descrita anteriormente. Para apagar as informações digitadas na interface, o usário pode clicar no botão Limpar ou pressionar a tecla F5. Ao clicar no botão Classificar, uma caixa de texto em vermelho é mostrada no canto superior direito da tela informando o status da classificação da atividade.

O resultado da classificação é mostrado no item O resultado será mostrado aqui. Esse item, também, é utilizado para informar os possíveis erros decorrentes de comunicação com os cores, mensagens XML erradas e campos preenchidos incorretamente, etc...

O resultado da classificação mostra os possívies códigos da tabela CNAE para a atividade descrita.

Organização do SCAE

Esta seção visa explicar como está organizado o sistema SCAE.

As partes do sistema SCAE

O sistema foi projetado para funcionar em Módulos que se comunicam entre si através de xmlrpc. Os módulos são divididos basicamente em 3 categorias:

  • Interface (WEB e linha de comando)
  • Classificadores (Redes Neurais, Espaço Vetorial, ..)
  • Banco de Dados (DB_CORE)

Comunicação entre os CORES (xmlrpc)

O SCAE usa o protocolo XML-RPC (Extensible Markup Language Remote Process Call) para comunicação entre módulos. Trata-se de um protocolo muito simples que usa http como transporte e XML como codificação, e que permite a comunicação entre aplicações escritas em linguagens diferentes, rodando em computadores diferentes e mesmo em sistemas operacionais diferentes.

Toda a comunicação entre os módulos do SCAE é feita por meio de XML-RPC, o que permite que cada módulo rode em um computador diferente. Em sistemas que empregam XML-RPC, clientes XML-RPC enviam requisições de execução de procedimentos remotos (RPCs) para servidores XML-RPC, os quais, por sua vez, devolvem aos clientes o resultado da execução destas RPCs.

No SCAE, alguns módulos fazem às vezes de cliente, outros de servidor e alguns de cliente e servidor ao mesmo tempo.

Comunicando com o DB_CORE

O DB_CORE é o único CORE que faz o papel de servidor puro, ou seja, ele não realiza nenhuma requisição. Neste CORE encontramos o módulo db_core_rpcs.c, o qual contém as seguintes rpcs:

  • get_num_table_lines_rpc
    input: nome da tabela.
    output: número de linhas da tabela.
  • get_table_column_rpc
    input: nome da tabela, nome da coluna e número da linha.
    output: campo da tabela.
  • get_table_column_and_codes_rpc
    input: nome da tabela, nome da coluna e número da linha.
    output: vetor de códigos de palavras.
  • get_lexicon_rpc
    input: nome do lexicon.
    output: vetor de frequências de palavras, vetor de palavras e um vetor de códifgos de palavras canônicas.
  • create_lexicon_rpc
    input: nome do lexicon, pfs, classes gramáticias, vetor de strings onde cada string é formada como 'TABELA-COLUNA:MIN:MAX e descrição do lexicon.
    output: 0 se sucesso e 3 caso contrário.
  • get_train_test_vector_words_rpc
    input: nome da tabela, nome da coluna, número da linha, nome do lexico e o tipo de construção (ADD, OR, COMMON).
    output: vetor de índices, vetor de frequências, vetor de palavras e um vetor de códigos de palavras canônicas.
  • get_cnae_codes_rpc
    input: nome da tabela, a linha e o tipo de construção.
    output: vetor de códigos CNAE.
  • get_train_and_test_vector_rpc
    input: nome da tabela, nome da coluna, a linha, nome do lexicon e o tipo de construção.
    output: vetor de treino e teste com tamanho igual ao do lexicon.
  • encode_column_of_some_lines_according_to_dictionary_rpc
    input: nome da tabela e nome da coluna.
    output: 0 se sucesso e 1 caso contrário.
  • build_user_vector_rpc
    input: texto a ser classificado e o nome do lexicon.
    output: vetor de inteiros a ser classificado.
  • get_table_list_by_type_rpc
    • input: String com o tipo de tabelas desejadas.
      • string: TIPO (CNAE, DADOS, LEXICON, TTV).
    • output: Vetor com a lista de tabelas do tipo requerido.
      • array strings: TABLE_NAME


  • get_encodable_column_list_rpc
    • input: String com o nome da tabela.
      • string: TABLE_NAME
    • output: Vetor com as colunas codificáveis da tabela.
      • array strings: TABLE_COLUMN_NAME


  • get_lexicon_info_rpc
    • input: String com o nome do Lexicon.
      • string: LEXICON_NAME
    • output: Vetor de strings onde cada string é formada como 'TABELA-COLUNA:MIN:MAX', string contendo as classes gramaticais removidas separadas por espaço, um inteiro com a freqüência acima da qual a palavra não será incluída e um base64 contendo a descrição do lexicon.
      • array strings: "TABLE_NAME-TABLE_COLUMN_NAME:MIN:MAX"
      • string: "GRAM_CLASS1 GRAM_CLASS2 ... GRAM_CLASSN"
      • integer: PFS
      • base64: LEXICON_DESCRIPTION


  • create_ttv_table_rpc
    • input: String com o nome da Tabela TTV, string contendo o nome do lexicon, string contendo o nome da tabela, array de strings contendo as COLUNAS e, string contendo o método de criação dos vetores.
      • string: TTV_TABLE_NAME
      • string: LEXICON_NAME
      • string: TABLE_NAME
      • array strings: TABLE_COLUMN_NAME
      • string: BUILD_TYPE
    • output: Inteiro com o código do erro/sucesso e string com a mensagem de erro/sucesso.
      • integer: ERROR_CODE
      • string: MESSAGE


  • get_ttv_line_rpc
    • input: String com o nome da Tabela TTV e um inteiro com o número da linha.
      • string: TTV_TABLE_NAME
      • integer: LINE
    • output: Vetor de floats com as freqencias e um vetor de inteiros de índice de código cnae.
      • array floats: FREQUENCES
      • array integers: CNAE_CODE


  • get_ttv_info_rpc
    • input: String com o nome da Tabela TTV.
      • string: TTV_TABLE_NAME
    • output: String contendo o nome do lexicon utilizado, string contendo o nome da tabela, array de strings contendo as COLUNAS e, string contendo o método de criação dos vetores.
      • string: LEXICON_NAME
      • string: TABLE_NAME
      • array strings: TABLE_COLUMN_NAME
      • string: BUILD_TYPE


  • get_training_list_rpc
    • input: nenhum.
      • -
    • output: Vetor de strings dos nomes dos treinamentos e vetor de strings dos nomes dos cores correspondentes.
      • array strings: CORE_NAME
      • array strings: TRAINING_NAME


  • get_training_info_rpc
    • input: String com o nome do treinamento e string com o nome do CORE.
      • string: TRAINING_NAME
      • string: CORE_NAME
    • output: String com o nome do lexicon utilizado no treinamento, vetor de strings contendo nome da tabela ttv, limites inferior e superior separados por ":" e, um base64 com a descrição do treinamento.
      • string: LEXICON_NAME
      • array strings: "TTV_TABLE_NAME:MIN:MAX"
      • base64: TRAINING_DESCRIPTION


  • add_training_info_rpc
    • input: String com o nome do treinamento, string com o nome do core, string com o nome do lexicon, vetor de strings contendo nome da tabela ttv, limites inferior e superior separados por ":" e, base64 com a descrição do treinamento.
      • string: TRAINING_NAME
      • string: CORE_NAME
      • string: LEXICON_NAME
      • array strings: "TTV_TABLE_NAME:MIN:MAX"
      • base64: TRAINING_DESCRIPTION
    • output: nenhum.
      • -


  • get_test_list_rpc
    • input: nenhum.
      • -
    • output: Vetor de strings dos nomes dos testes e vetor de strings dos nomes dos cores correspondentes.
      • array strings: TEST_NAME
      • array strings: CORE_NAME


  • get_test_info_rpc
    • input: String com o nome do teste e string com o nome do CORE.
      • string: TEST_NAME
      • string: CORE_NAME
    • output: String com o nome do lexicon utilizado no teste, vetor de strings contendo nome da tabela ttv, limites inferior e superior separados por ":" e, um base64 com a descrição do treinamento.
      • array strings: "TABLE_NAME:MIN:MAX"
      • integer: NUMBER_OF_TESTS
      • integer: CORRECT_GUESSES
      • string: TRAINING_NAME
      • base64: TEST_DESCRIPTION


  • add_test_info_rpc
    • input: String com o nome do teste e string com o nome do CORE, string com o nome do lexicon utilizado no teste, vetor de strings contendo nome da tabela ttv, limites inferior e superior separados por ":" e, um base64 com a descrição do treinamento.
      • string: TEST_NAME
      • string: CORE_NAME
      • string: TRAINING_NAME
      • array strings: "TABLE_NAME:MIN:MAX"
      • integer: NUMBER_OF_TESTS
      • integer: CORRECT_GUESSES
      • base64: TEST_DESCRIPTION
    • output: nenhum.
      • -

Comunicando com o WNN_CORE

O WNN_CORE desempenha tanto o papel de cliente, quanto o de servidor. Neste CORE encontramos o módulo wnn_rpcs.c, o qual contém as seguintes rpcs:

  • train_wnn_rpc
    input: nome da tabela, nome da coluna, linha inicial, linha final, nome do lexicon e tipo de construção.
    output: 1 se sucesso.
  • test_wnn_rpc
    input: nome da tabela, nome da coluna, linha inicial, linha final, nome do lexicon e tipo de construção.
    output: número de testes realizados e quantos acertos.
  • save_wnn_memory_rpc
    input: nome dado à memória da WNN VG-RAM que será salva.
    output: 1 se sucesso.
  • reload_wnn_memory_rpc
    input: nome da memória da WNN VG-RAM a ser recarregada.
    output: 1 se sucesso.
  • classify_text_rpc
    input: texto a ser classificado e nome do lexicon.
    output: vetor de número de linhas (sequenciais) da tabela CNAE_110_SUBLCASSE.

Do ponto de vista do desenvolvedor de um core (um pesquisador que esteja criando um novo mecanismo de classificacao), as funcoes que tem que ser desenvolvidas sao (exemplos em C): ...

Comunicando com o VS_CORE

O VS_CORE desempenha tanto o papel de cliente, quanto o de servidor. Neste CORE encontramos o módulo vs_rpcs.c, o qual contém as seguintes rpcs:

  • train_vector_space_rpc
    input: nome da tabela, nome da coluna, linha inicial, linha final, nome do lexicon e tipo de construção.
    output: 1 se sucesso.
  • test_vector_space_rpc
    input: nome da tabela, nome da coluna, linha inicial, linha final, nome do lexicon e tipo de construção.
    output: número de testes realizados e quantos acertos.
  • save_vector_space_rpc
    input: nome dado ao Espaço Vetorial.
    output: 1 se sucesso.
  • reload_vector_space_rpc
    input: nome do Espaço Vetorial a ser recarregada.
    output: 1 se sucesso.
  • classify_text_rpc
    input: texto a ser classificado e nome do lexicon.
    output: vetor de número de linhas (sequenciais) da tabela CNAE_110_SUBLCASSE.

Comunicando com o WISARD_CORE

O WISARD_CORE desempenha tanto o papel de cliente, quanto o de servidor. Neste CORE encontramos o módulo wisard_rpcs.c, o qual contém as seguintes rpcs:

  • train_wisard_rpc
    input: nome da tabela, nome da coluna, linha inicial, linha final, nome do lexicon e tipo de construção.
    output: 1 se sucesso.
  • test_wisard_rpc
    input: nome da tabela, nome da coluna, linha inicial, linha final, nome do lexicon e tipo de construção.
    output: número de testes realizados e quantos acertos.
  • save_wisard_rpc
    input: nome dado à memória da rede WNN WISARD.
    output: 1 se sucesso.
  • reload_wisard_rpc
    input: nome da memória da rede WNN WISARD a ser recarregada.
    output: 1 se sucesso.
  • classify_text_rpc
    input: texto a ser classificado e nome do lexicon.
    output: vetor de número de linhas (sequenciais) da tabela CNAE_110_SUBLCASSE.



Módulos do SCAE (CORE's)

O SCAE possuirá vários módulos de classficação. Os já implementados são descritos a seguir.

DB_CORE

Trata-se de um Banco de Dados implementado na linguagem C que, entre outras coisas, é responsável por:

  • carregar tabelas em formato .csv;
  • construir e armazenar novas tabelas;
  • atender às requisições dos demais CORES.
Tabelas Existentes

Abaixo, esboçamos as tabelas em .csv que são utilizadas como ponto de partida para a criaçào das demais tabelas.

Tabela: DICIONARIO
Coluna Comentários
PALAVRA a própria palavra
CLASSE classe gramatical
PALAVRA_CANONICA palavra canônica
GENERO gênero
GRAU grau
LISTA_ELEMENTOS lista de elementos
LISTA_PREPOSICOES lista de preposições
LISTA_REGENCIAS lista de regências
MODO_TEMPO_FORMANOMINAL modo e/ou tempo e/ou forma nominal
NUMERO número
LISTA_PAPEIS lista de papéis
PESSOA pessoa
CODIGO_PALAVRA_CANONICA código da palavra canônica
CODIGO_PALAVRA código da palavra


Tabela: CNAE_110_SUBCLASSE
Coluna Comentários
CODIGO_SUB_SEC Código Sequencial da subclasse
CODIGO_SEC
CODIGO_DIV
CODIGO_GRP
CODIGO_CLA
CODIGO_SUB
DV_SUB
DESCRICAO_SUB
CCOMPRE_SUB
TCOMPRE_SUB
NCOMPRE_SUB
NOTAS_SUB
CODIGO_CNAE_SUBCLASSE
VETOR_CODIGOS_CNAE


Tabela: CNAE_200_SUBCLASSE
Coluna Comentários
CODIGO_SUB_SEC Código Sequencial da subclasse
CODIGO_SEC
CODIGO_DIV
CODIGO_GRP
CODIGO_CLA
CODIGO_SUB
DV_SUB
DESCRICAO_SUB
CCOMPRE_SUB
TCOMPRE_SUB
NCOMPRE_SUB
NOTAS_SUB
CODIGO_CNAE_SUBCLASSE
VETOR_CODIGOS_CNAE


Tabela: DADOS_VITORIA_110
Coluna Comentários
NO_IDENTIFICADOR Um número de identificação que veio junto aos dados que recebemos
OBJETO_SOCIAL Texto descritivo do objeto em questão
CNAE_FISCAL Um código CNAE para o qual esta atividade foi classificada; Formato direto de 7 dígitos, sem '-' ou '/'
VETOR_CODIGOS_CNAE Neste campo, sempre o valor zero, ele é preenchido pelo DB_CORE com os sequenciais que representam as classificações


Tabela: DADOS_VITORIA_200
Coluna Comentários
NO_IDENTIFICADOR Um número de identificação que veio junto aos dados que recebemos
OBJETO_SOCIAL Texto descritivo do objeto em questão
CNAE_FISCAL Um código CNAE para o qual esta atividade foi classificada; Formato direto de 7 dígitos, sem '-' ou '/'
VETOR_CODIGOS_CNAE Neste campo, sempre o valor zero, ele é preenchido pelo DB_CORE com os sequenciais que representam as classificações


MAE

Implementação do classificador que utiliza Redes Neurais.

VS_CORE

Implementação do classificador que utiliza Espaço Vetorial.

WISARD_CORE

???

BAYESIAN_CORE

???

Adicionando um CORE ao SCAE

A tarefa de adicionar um novo CORE ao SCAE foi bastante simplificada e é resumida nos passos abaixo:

1) Edite seu arquivo .bashrc

  • Insira as seguintes linhas ao seu .bashrc:
# SHARED 
export SHAREDHOME=$HOME/code/CORES/shared;
  • Feche o terminal corrente e abra outro.

2) Edite o arquivo ports.cfg

  • Abra o arquivo ports.cfg existente no diretório config (code/CORES/config/);
  • Adicione a seguinte linha ao arquivo:
    NEW_CORE_NAME = 127.0.0.1 PORT_NUMBER
  • Assegure que a palavra NEW_CORE_NAME e o número PORT_NUMBER não estejam em uso por outros CORES;

3) Copie um CORE existente;

  • A inclusão de um novo CORE será mais rápida se ela partir de um já existente;
  • Copie o VS_CORE (code/CORE/VS_CORE), o qual é o CORE mais simples, para o CORE que deseja incluir;
cp -r VS_CORE NEW_CORE_NAME
  • Dentro do diretório NEW_CORE_NAME, remova todos os arquivos e diretóris, exceto: Makefile, e ports.cfg;

4) Adaptando o diretório NEW_CORE_NAME

  • Copie para o diretóro NEW_CORE_NAME os arquvos e/ou diretórios pertencentes ao novo CORE;
  • Modifique o módulo specific_core_rpcs_handling_functions.c. Neste arquivo existem 6 (seis) funções, cada qual com comentário descrevendo o que a função faz, os parâmetros de entrada e a saída. Ao inserir um novo CORE, o corpo de cada função deverá ser modificado de acordo com o tipo de tratamento que será empregado. Caso queira incluir arquivos, declarar variáveis globais e defines, faça no início do módulo.
  • Alterar o arquivo Makefile.
    • Altere o nome do executável;
    • Remova o arquivo .objeto vector_space.o e adicione outros (caso exista);
    • Atualize as linhas de dependências:
vector_space.o	: vector_space.h $(INCPATH)/specific_core_rpcs_handling_functions.h
specific_core_rpcs_handling_functions.o	: $(INCPATH)/specific_core_rpcs_handling_functions.h vector_space.h
  • O novo CORE deverá fazer uma chamada de função que inicializará o servidor (a partir desta chamada, o CORE entrará em um estado de espera por requisições). A função que inicializa o servidor é a initialize_core_server (NEW_CORE_NAME), em que NEW_CORE_NAME é a mesma string que foi inserida no arquivo ports.cfg. Atenção: a função initialize_core_server(NEW_CORE_NAME) só deverá ser chamada após o CORE ter inicializado suas variáves, estruturas ...

5) Criação de arquivos .bat

  • Caso queira executar o novo CORE, vá ao diretório USER_INTERFACE (code/CORES/USER_INTERFACE);
  • Copie o arquivo train_and_save_110_vs_short.bat para train_and_save_110_new_core_name_short.bat e substitua as ocorrêncis de VS por NEW_CORE_NAME;
  • Copie o arquivo reload_and_test_110_vs_short.bat para reload_and_test_110_new_core_name_short.bat e substitua as ocorrêncis de VS por NEW_CORE_NAME.

Como acessar o Repositório SCAE

É possível acessar o repositório do SCAE através do seu navegador ou ainda baixar os códigos direto para sua máquina. O acesso só é permitido a usuários do Projeto SCAE cadastrados e com conta no LCAD.

Organização do Repositório

O Repositório está dividido da seguinte maneira:

  • code
    • CORES (Código dos classificadores)
      • DB_SERVER
      • MAE
      • USER_INTERFACE
      • VS_CORE
      • WISARD_CORE
      • config
    • db_server (Código da API do Oracle -- em desuso no momento)
    • scaeweb (Código da Interface WEB)
  • data (Dados do Oracle -- em desuso no momento)
  • install (Diretório de instalações)

Navegando no Repositório

Para acessar o repositório de um navegador basta seguir para http://www.lcad.inf.ufes.br/svn/scae e utilizar sua conta/senha do LCAD.

Baixando o SCAE para sua máquina

Antes de baixar o repositório do SCAE, recomenda-se navegar pelo mesmo e identificar qual(is) parte(s) dele serão utilizadas. Dessa forma, é possível fazer o download apenas das partes de interesse, evitando um longo download de todo o conteúdo.


Para baixar o repositório do SCAE completo para sua máquina utilize

svn co http://www.lcad.inf.ufes.br/svn/scae

Para baixar apenas uma parte, por exemplo, um diretório da árvore do repositório, acrescente o caminho ao endereço. Exemplos:

  • Download de apenas a instalação das bibliotecas necessárias para instalação do xmlrpc
svn co http://www.lcad.inf.ufes.br/svn/scae/install/xmlrpc
  • Download de apenas os códigos-fonte dos CORES
svn co http://www.lcad.inf.ufes.br/svn/scae/code/CORES

Maiores informações sobre o svn podem ser encontradas no nosso manual de Uso básico do Subversion.