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 353: Linha 353:
  
 
=====Criação de um lexicon no SCAE=====
 
=====Criação de um lexicon no SCAE=====
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).
  
 
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.  
 
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.  

Edição das 13h29min de 10 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 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 e explique aqui como fazê-lo ( :) ).

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. Experimente categorizar uma atividade econômica por meio da Funcionalidade 8, Classificação de atividades econômicas com o SCAE.

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

Usando o SCAE

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.

Utilizando a USER_INTERFACE

O usuário realizará os seus experimentos de treino/teste a partir da USER_INTERFACE, a qual só efetua requisições aos demais CORES do SCAE, ou seja, USER_INTERFACE é um cliente puro. Esta interface poderá ser utilizada tanto por meio de linha de comando quanto pelo browser na página SCAEWEB. Atualmente, a USER_INTERFACE chama as seguintes rpcs:

  • DB_CORE: todas, exceto get_train_and_test_vector_rpc, get_cnae_codes_rpc e build_user_vector_rpc.
  • WNN_CORE: todas.
  • VS_CORE: todas.
  • WISARD_CORE: todas.

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

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

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 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 vetores de treinamento e teste
Treinamento dos cores classificadores do SCAE
Teste dos cores classificadores do SCAE
Classificação de atividades econômicas com o SCAE

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
Criando Tabelas no DB_CORE

O processo de criação de tabelas pode ser explicado por meio da interpretação de arquivos .bat existentes no diretório DB_CORE. Por exemplo, no arquivo build_tables_subclasse_110.bat encontraremos a seguinte lista de comandos:

./db_core load_csv_dicionario load_csv_cnae_subclasse CNAE_110_SUBCLASSE cnae_110_subclasse.csv load_csv_dados_vitoria DADOS_VITORIA_110 
dados_vitoria_110.csv CNAE_110_SUBCLASSE create_word_vectors_table CNAE_110_SUBCLASSE-DESCRICAO_SUB create_word_vectors_table                 
DADOS_VITORIA_110-OBJETO_SOCIAL create_lexicon "Tudo menos artigos e preposicoes da tabela CNAE 1.0" CNAE_110_SUBCLASSE-DESCRICAO_SUB "art. prep." 10000
LEXICON_LESS_ART_PREP_SUB_110 create_training_and_testing_vectors_table LEXICON_LESS_ART_PREP_SUB_110 CNAE_110_SUBCLASSE-DESCRICAO_SUB COMMON  
create_cnae_codes_vectors_table CNAE_110_SUBCLASSE COMMON create_training_and_testing_vectors_table LEXICON_LESS_ART_PREP_SUB_110 
DADOS_VITORIA_110-OBJETO_SOCIAL COMMON create_cnae_codes_vectors_table DADOS_VITORIA_110 COMMON save_tables_in_binary_format

Ao lermos este arquivo .bat, notamos que o nome do executavél é db_core, os demais nomes serão descritos abaixo.

./db_core load_csv_dicionario load_csv_cnae_subclasse CNAE_110_SUBCLASSE cnae_110_subclasse.csv load_csv_dados_vitoria DADOS_VITORIA_110 
dados_vitoria_110.csv CNAE_110_SUBCLASSE create_word_vectors_table CNAE_110_SUBCLASSE-DESCRICAO_SUB create_word_vectors_table                 
DADOS_VITORIA_110-OBJETO_SOCIAL create_lexicon "Tudo menos artigos e preposicoes da tabela CNAE 1.0" CNAE_110_SUBCLASSE-DESCRICAO_SUB "art. prep." 10000
LEXICON_LESS_ART_PREP_SUB_110 create_training_and_testing_vectors_table LEXICON_LESS_ART_PREP_SUB_110 CNAE_110_SUBCLASSE-DESCRICAO_SUB COMMON  
create_cnae_codes_vectors_table CNAE_110_SUBCLASSE COMMON create_training_and_testing_vectors_table LEXICON_LESS_ART_PREP_SUB_110 
DADOS_VITORIA_110-OBJETO_SOCIAL COMMON create_cnae_codes_vectors_table DADOS_VITORIA_110 COMMON save_tables_in_binary_format

O parâmetro load_csv_dicionario chama a função que carrega o arquivo dicionário.csv, existente no diretório CSV_FILES, para a tabela DICIONARIO.

./db_core load_csv_dicionario load_csv_cnae_subclasse CNAE_110_SUBCLASSE cnae_110_subclasse.csv load_csv_dados_vitoria DADOS_VITORIA_110 
dados_vitoria_110.csv CNAE_110_SUBCLASSE create_word_vectors_table CNAE_110_SUBCLASSE-DESCRICAO_SUB create_word_vectors_table                 
DADOS_VITORIA_110-OBJETO_SOCIAL create_lexicon "Tudo menos artigos e preposicoes da tabela CNAE 1.0" CNAE_110_SUBCLASSE-DESCRICAO_SUB "art. prep." 10000
LEXICON_LESS_ART_PREP_SUB_110 create_training_and_testing_vectors_table LEXICON_LESS_ART_PREP_SUB_110 CNAE_110_SUBCLASSE-DESCRICAO_SUB COMMON  
create_cnae_codes_vectors_table CNAE_110_SUBCLASSE COMMON create_training_and_testing_vectors_table LEXICON_LESS_ART_PREP_SUB_110 
DADOS_VITORIA_110-OBJETO_SOCIAL COMMON create_cnae_codes_vectors_table DADOS_VITORIA_110 COMMON save_tables_in_binary_format

O parâmetro load_csv_cnae_subclasse chama a função que carrega o arquivo cnae_110_subclasse.csv, existente no diretório CSV_FILES, para a tabela CNAE_110_SUBCLASSE.

./db_core load_csv_dicionario load_csv_cnae_subclasse CNAE_110_SUBCLASSE cnae_110_subclasse.csv load_csv_dados_vitoria DADOS_VITORIA_110 
dados_vitoria_110.csv CNAE_110_SUBCLASSE create_word_vectors_table CNAE_110_SUBCLASSE-DESCRICAO_SUB create_word_vectors_table                 
DADOS_VITORIA_110-OBJETO_SOCIAL create_lexicon "Tudo menos artigos e preposicoes da tabela CNAE 1.0" CNAE_110_SUBCLASSE-DESCRICAO_SUB "art. prep." 10000
LEXICON_LESS_ART_PREP_SUB_110 create_training_and_testing_vectors_table LEXICON_LESS_ART_PREP_SUB_110 CNAE_110_SUBCLASSE-DESCRICAO_SUB COMMON  
create_cnae_codes_vectors_table CNAE_110_SUBCLASSE COMMON create_training_and_testing_vectors_table LEXICON_LESS_ART_PREP_SUB_110 
DADOS_VITORIA_110-OBJETO_SOCIAL COMMON create_cnae_codes_vectors_table DADOS_VITORIA_110 COMMON save_tables_in_binary_format

O parâmetro load_csv_dados_vitoria chama a função que carrega o arquivo dados_vitoria_110.csv, existente no diretório CSV_FILES, para a tabela DADOS_VITORIA_110, utilizando como referência a tabela CNAE_110_SUBCLASSE.

./db_core load_csv_dicionario load_csv_cnae_subclasse CNAE_110_SUBCLASSE cnae_110_subclasse.csv load_csv_dados_vitoria DADOS_VITORIA_110 
dados_vitoria_110.csv CNAE_110_SUBCLASSE create_word_vectors_table CNAE_110_SUBCLASSE-DESCRICAO_SUB create_word_vectors_table                 
DADOS_VITORIA_110-OBJETO_SOCIAL create_lexicon "Tudo menos artigos e preposicoes da tabela CNAE 1.0" CNAE_110_SUBCLASSE-DESCRICAO_SUB "art. prep." 10000
LEXICON_LESS_ART_PREP_SUB_110 create_training_and_testing_vectors_table LEXICON_LESS_ART_PREP_SUB_110 CNAE_110_SUBCLASSE-DESCRICAO_SUB COMMON  
create_cnae_codes_vectors_table CNAE_110_SUBCLASSE COMMON create_training_and_testing_vectors_table LEXICON_LESS_ART_PREP_SUB_110 
DADOS_VITORIA_110-OBJETO_SOCIAL COMMON create_cnae_codes_vectors_table DADOS_VITORIA_110 COMMON save_tables_in_binary_format

O parâmetro create_word_vectors_table chama a função que construirá uma tabela de vetores de códigos de palavras (V_CNAE_110_SUBCLASSE-DESCRICAO_SUB) a partir da tabela CNAE_110_SUBCLASSE e da coluna DESCRICAO_SUB.

./db_core load_csv_dicionario load_csv_cnae_subclasse CNAE_110_SUBCLASSE cnae_110_subclasse.csv load_csv_dados_vitoria DADOS_VITORIA_110 
dados_vitoria_110.csv CNAE_110_SUBCLASSE create_word_vectors_table CNAE_110_SUBCLASSE-DESCRICAO_SUB create_word_vectors_table                 
DADOS_VITORIA_110-OBJETO_SOCIAL create_lexicon "Tudo menos artigos e preposicoes da tabela CNAE 1.0" CNAE_110_SUBCLASSE-DESCRICAO_SUB "art. prep." 10000
LEXICON_LESS_ART_PREP_SUB_110 create_training_and_testing_vectors_table LEXICON_LESS_ART_PREP_SUB_110 CNAE_110_SUBCLASSE-DESCRICAO_SUB COMMON  
create_cnae_codes_vectors_table CNAE_110_SUBCLASSE COMMON create_training_and_testing_vectors_table LEXICON_LESS_ART_PREP_SUB_110 
DADOS_VITORIA_110-OBJETO_SOCIAL COMMON create_cnae_codes_vectors_table DADOS_VITORIA_110 COMMON save_tables_in_binary_format

O mesmo procedimento anterior, só que para a tabela DADOS_VITORIA_110 e coluna OBJETO_SOCIAL. A tabela criada chamar-se-á V_DADOS_VITORIA_110-OBJETO_SOCIAL.

./db_core load_csv_dicionario load_csv_cnae_subclasse CNAE_110_SUBCLASSE cnae_110_subclasse.csv load_csv_dados_vitoria DADOS_VITORIA_110 
dados_vitoria_110.csv CNAE_110_SUBCLASSE create_word_vectors_table CNAE_110_SUBCLASSE-DESCRICAO_SUB create_word_vectors_table                 
DADOS_VITORIA_110-OBJETO_SOCIAL create_lexicon "Tudo menos artigos e preposicoes da tabela CNAE 1.0" CNAE_110_SUBCLASSE-DESCRICAO_SUB "art. prep." 10000
LEXICON_LESS_ART_PREP_SUB_110 create_training_and_testing_vectors_table LEXICON_LESS_ART_PREP_SUB_110 CNAE_110_SUBCLASSE-DESCRICAO_SUB COMMON  
create_cnae_codes_vectors_table CNAE_110_SUBCLASSE COMMON create_training_and_testing_vectors_table LEXICON_LESS_ART_PREP_SUB_110 
DADOS_VITORIA_110-OBJETO_SOCIAL COMMON create_cnae_codes_vectors_table DADOS_VITORIA_110 COMMON save_tables_in_binary_format

O parâmetro create_lexicon chama a função que criará um lexicon que será representado pela tabela LEXICON_LESS_ART_PREP_SUB_110. Este lexicon será construído a partir da tabela CNAE_110_SUBCLASSE e da coluna DESCRICAO_SUB, nele não constarão as palavras pertencentes às classes gramaticais artigo e preposição, bem como palavras com frequência superior a 10000 na coleção.

./db_core load_csv_dicionario load_csv_cnae_subclasse CNAE_110_SUBCLASSE cnae_110_subclasse.csv load_csv_dados_vitoria DADOS_VITORIA_110 
dados_vitoria_110.csv CNAE_110_SUBCLASSE create_word_vectors_table CNAE_110_SUBCLASSE-DESCRICAO_SUB create_word_vectors_table                 
DADOS_VITORIA_110-OBJETO_SOCIAL create_lexicon "Tudo menos artigos e preposicoes da tabela CNAE 1.0" CNAE_110_SUBCLASSE-DESCRICAO_SUB "art. prep." 10000
LEXICON_LESS_ART_PREP_SUB_110 create_training_and_testing_vectors_table LEXICON_LESS_ART_PREP_SUB_110 CNAE_110_SUBCLASSE-DESCRICAO_SUB COMMON  
create_cnae_codes_vectors_table CNAE_110_SUBCLASSE COMMON create_training_and_testing_vectors_table LEXICON_LESS_ART_PREP_SUB_110 
DADOS_VITORIA_110-OBJETO_SOCIAL COMMON create_cnae_codes_vectors_table DADOS_VITORIA_110 COMMON save_tables_in_binary_format

O parâmetro create_training_and_testing_vectors_table chama a função que criará uma tabela de vetores de treino e teste (TST_LEXICON_LESS_ART_PREP_SUB_110-CNAE_110_SUBCLASSE-DESCRICAO_SUB_COMMON) a partir da tabela CNAE_110_SUBCLASSE e da coluna DESCRICAO_SUB. O processo de criação fará uso do lexicon já existente LEXICON_LESS_ART_PREP_SUB_110 e do método COMMON (existem 3 (três) tipos de métodos implementados até o momento: COMMON, ADD, OR. Sucintamente, o método COMMON diz que cada subclasse será representada por um vetor. Já os métodos ADD e OR nos dizem que as atividades serão combinadas de alguma forma (soma de vetores ou OU binário) para gerar um vetor que representará a subclasse em questão. Note que COMMON pode ser aplicada a qualquer tabela e que ADD e OR somente à tabela ATIVIDADE).

./db_core load_csv_dicionario load_csv_cnae_subclasse CNAE_110_SUBCLASSE cnae_110_subclasse.csv load_csv_dados_vitoria DADOS_VITORIA_110 
dados_vitoria_110.csv CNAE_110_SUBCLASSE create_word_vectors_table CNAE_110_SUBCLASSE-DESCRICAO_SUB create_word_vectors_table                 
DADOS_VITORIA_110-OBJETO_SOCIAL create_lexicon "Tudo menos artigos e preposicoes da tabela CNAE 1.0" CNAE_110_SUBCLASSE-DESCRICAO_SUB "art. prep." 10000
LEXICON_LESS_ART_PREP_SUB_110 create_training_and_testing_vectors_table LEXICON_LESS_ART_PREP_SUB_110 CNAE_110_SUBCLASSE-DESCRICAO_SUB COMMON  
create_cnae_codes_vectors_table CNAE_110_SUBCLASSE COMMON create_training_and_testing_vectors_table LEXICON_LESS_ART_PREP_SUB_110 
DADOS_VITORIA_110-OBJETO_SOCIAL COMMON create_cnae_codes_vectors_table DADOS_VITORIA_110 COMMON save_tables_in_binary_format

O parâmetro create_cnae_codes_vectors_table chama a função que criará uma tabela (CNAE_CODES_CNAE_110_SUBCLASSE_COMMON) em que cada linha existirá um código CNAE. Esta tabela será criada a partir de CNAE_110_SUBCLASSE.

./db_core load_csv_dicionario load_csv_cnae_subclasse CNAE_110_SUBCLASSE cnae_110_subclasse.csv load_csv_dados_vitoria DADOS_VITORIA_110 
dados_vitoria_110.csv CNAE_110_SUBCLASSE create_word_vectors_table CNAE_110_SUBCLASSE-DESCRICAO_SUB create_word_vectors_table                 
DADOS_VITORIA_110-OBJETO_SOCIAL create_lexicon "Tudo menos artigos e preposicoes da tabela CNAE 1.0" CNAE_110_SUBCLASSE-DESCRICAO_SUB "art. prep." 10000
LEXICON_LESS_ART_PREP_SUB_110 create_training_and_testing_vectors_table LEXICON_LESS_ART_PREP_SUB_110 CNAE_110_SUBCLASSE-DESCRICAO_SUB COMMON  
create_cnae_codes_vectors_table CNAE_110_SUBCLASSE COMMON create_training_and_testing_vectors_table LEXICON_LESS_ART_PREP_SUB_110 
DADOS_VITORIA_110-OBJETO_SOCIAL COMMON create_cnae_codes_vectors_table DADOS_VITORIA_110 COMMON save_tables_in_binary_format

O mesmo procedimento já explicado anteriormente, só que para a tabela DADOS_VITORIA_110 e coluna OBJETO_SOCIAL. A tabela criada chamar-se-á TST_LEXICON_LESS_ART_PREP_SUB_110-DADOS_VITORIA_110-OBJETO_SOCIAL_COMMON.

./db_core load_csv_dicionario load_csv_cnae_subclasse CNAE_110_SUBCLASSE cnae_110_subclasse.csv load_csv_dados_vitoria DADOS_VITORIA_110 
dados_vitoria_110.csv CNAE_110_SUBCLASSE create_word_vectors_table CNAE_110_SUBCLASSE-DESCRICAO_SUB create_word_vectors_table                 
DADOS_VITORIA_110-OBJETO_SOCIAL create_lexicon "Tudo menos artigos e preposicoes da tabela CNAE 1.0" CNAE_110_SUBCLASSE-DESCRICAO_SUB "art. prep." 10000
LEXICON_LESS_ART_PREP_SUB_110 create_training_and_testing_vectors_table LEXICON_LESS_ART_PREP_SUB_110 CNAE_110_SUBCLASSE-DESCRICAO_SUB COMMON  
create_cnae_codes_vectors_table CNAE_110_SUBCLASSE COMMON create_training_and_testing_vectors_table LEXICON_LESS_ART_PREP_SUB_110 
DADOS_VITORIA_110-OBJETO_SOCIAL COMMON create_cnae_codes_vectors_table DADOS_VITORIA_110 COMMON save_tables_in_binary_format

O parâmetro create_cnae_codes_vectors_table chama a função que criará uma tabela (CNAE_CODES_DADOS_VITORIA_110_COMMON) em que cada linha existirá um vetor de códigos CNAE. Esta tabela será criada a partir de DADOS_VITORIA_110.

./db_core load_csv_dicionario load_csv_cnae_subclasse CNAE_110_SUBCLASSE cnae_110_subclasse.csv load_csv_dados_vitoria DADOS_VITORIA_110 
dados_vitoria_110.csv CNAE_110_SUBCLASSE create_word_vectors_table CNAE_110_SUBCLASSE-DESCRICAO_SUB create_word_vectors_table                 
DADOS_VITORIA_110-OBJETO_SOCIAL create_lexicon "Tudo menos artigos e preposicoes da tabela CNAE 1.0" CNAE_110_SUBCLASSE-DESCRICAO_SUB "art. prep." 10000
LEXICON_LESS_ART_PREP_SUB_110 create_training_and_testing_vectors_table LEXICON_LESS_ART_PREP_SUB_110 CNAE_110_SUBCLASSE-DESCRICAO_SUB COMMON  
create_cnae_codes_vectors_table CNAE_110_SUBCLASSE COMMON create_training_and_testing_vectors_table LEXICON_LESS_ART_PREP_SUB_110 
DADOS_VITORIA_110-OBJETO_SOCIAL COMMON create_cnae_codes_vectors_table DADOS_VITORIA_110 COMMON save_tables_in_binary_format

O parâmetro save_tables_in_binary_format savará todas as tabelas em formato binário no diretório DB_TABLES.

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

O texto abaixo assume que a raiz é http://www.lcad.inf.ufes.br/svn/scae/code/

XXXX é o nome do novo CORE a ser acrescentado.


O novo CORE deve ter as seguintes funções (que responderão a chamadas da USER_INTERFACE):

  • test_response_rpc (verifica se o CORE está no ar)
  • reload_XXXX_rpc (carrega treinamento salvo previamente)
  • train_XXXX_rpc (treina o CORE)
  • test_XXXX_rpc (roda massa de testes no CORE treinado)
  • save_XXXX_rpc (salva treinamento no disco)
  • classify_text_rpc (classifica uma instância de teste)

Criar uma pasta /CORES/XXXX_CORE, colocando nela

  • o código do novo CORE,
  • cópias dos arquivos xmlrpc_amconfig.h e xmlrpc_config.h, que podem ser encontrados em /CORES/USER_INTERFACE

Editar o arquivo /CORES/config/ports.cfg

  • adicionar a linha "XXXX_SERVER = 127.0.0.1 YYYY", onde YYYY é uma porta não-utilizada

Fazer o mesmo com os arquivos /CORES/DB_CORE/ports.cfg e /CORES/USER_INTERFACE

No arquivo CORES/USER_INTERFACE/remote_functions.c, algumas alterações devem ser feitas:

  • acrescentar a variável global char XXXX_core_server_url[256], que será preenchida na função read_ports.
  • incluir no método "void test_response()" uma chamada a função test_response do novo CORE
  • incluir no método "void read_ports(char *file_name)" código para o preenchimento de XXXX_core_server_url.
  • criar os métodos que executarão chamadas às respectivas funções programadas no novo CORE, as encapsulando com tratamentos de erros e mensagens de sucesso para o usuário:
    • reload_XXXX,
    • train_XXXX,
    • save_XXXX e
    • test_XXXX,

Para executar o novo CORE, crie bats em /CORES/USER_INTERFACE. lá há alguns exemplos.

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.