Manual do SCAE - Relato 3
Índice
- 1 Introdução
- 2 Tutorial sobre o SCAE
- 2.1 Introdução
- 2.2 Instalação
- 2.2.1 Preparando o ambiente para Instalação do SCAE
- 2.2.2 Instalação do corretor ortográfico
- 2.2.3 Compilando e Executando o BD
- 2.2.4 Compilando a Biblioteca Compartilhada de Comunicação (shared)
- 2.2.5 Compilando a Biblioteca Compartilhada MAE
- 2.2.6 Compilando e Executando o VS_CORE
- 2.2.7 Compilando e Executando o WNN_CORE
- 2.2.8 Compilando e Executando o WNN_COR_CORE
- 2.2.9 Configurando o SA
- 3 Utilização
Introdução
Este manual visa explicar como utilizar o SCAE, desde sua instalaçã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 de 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).
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 ao 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 seus textos associado (descritores).
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 e das descrições de atividades econômicas usadas em treinamento; etc.). Além de realizar a classificação, o Core manipula as tabelas do Sistema (cria, insere dados, remove dados, etc.) armazenadas 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
Preparando o ambiente para Instalação do SCAE
A preparação do ambiente para instalação do SCAE consiste basicamente na instalação e configuração das bibliotecas que este necessita. A seguir, são listadas as bibliotecas e os passos necessários para sua instalação.
Bibliotecas instaláveis a partir do YUM
- w3c-libwww
- w3c-libwww-devel
- xmlrpc-c
- xmlrpc-c-devel
- xforms
- xforms-devel
- freeglut
- freeglut-devel
- libnet-devel
- byacc
- httpd
- php
Efetue login como usuário root e entre com o comando a seguir para instalar as bibliotecas a partir do yum. Note que caso alguma delas já esteja instalada, o yum cuidará para que esta não seja instalada novamente e, caso alguma delas necessite de outra(s), o yum cuidará de instalar tais dependências. {Responda "y" quando for perguntado "Is this ok [y/N]:".}
yum install -y w3c-libwww w3c-libwww-devel xmlrpc-c xmlrpc-c-devel xforms xforms-devel freeglut freeglut-devel libnet-devel byacc httpd php
Bibliotecas instaláveis a partir do CD
JDK
O pacote JDK encontra-se no CD no caminho:
libs/jdk/jdk-6u4-linux-i586.bin
Copie o arquvio para o /opt:
cp /media/SCAE/libs/jdk/jdk_6u4_.bin /opt
Transforme este arquivo em um executável:
chmod +x /opt/jdk_6u4_.bin
Instale o pacote com o comando a seguir:
cd /opt; ./jdk_6u4_.bin ; ln -s jdk1.6.0_04 jdk-latest
A licença do pacote será exibida (aperte a tecla de espaço para passar cada tela) e em seguida você será perguntado se concorda com ela. Responda 'yes' para dar início a instalação. Em seguida, Copie o de configuração a seguir com o seguinte comando, que também o torna executável:
cp /media/SCAE/libs/jdk/java.sh /etc/profile.d/ ; chmod +x /etc/profile.d/java.sh
Agora execute o seguinte comando para tornar o arquivo disponível:
source /etc/profile.d/java.sh
Então execute o seguinte comando para verificar se o path está correto:
which java
Você deverá obter algo como:
/opt/jdk-latest/bin/java
Agora execute os seguintes comandos:
/usr/sbin/alternatives --install /usr/bin/java java /opt/jdk1.6.0_04/bin/java 2 /usr/sbin/alternatives --config java
Após ter inserido o último comando, você será perguntado sobre o tipo de Java que deseja para o sistema. Pressione 2(A opção que indica o JDK 1.6.0_04) e aperte enter.
Para confirmar a versão do seu Java Runtime Environment, execute:
java -version
A saída esperada é:
java version "1.6.0_04" Java(TM) SE Runtime Environment (build 1.6.0_04-b12) Java HotSpot(TM) Client VM (build 10.0-b19, mixed mode, sharin
Por último, adicione as seguintes linhas ao seu arquivo .bashrc no seu diretório home
#JAVA LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$JAVA_HOME/jre/lib/i386 export LD_LIBRARY_PATH LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$JAVA_HOME/jre/lib/i386/client export LD_LIBRARY_PATH
MAE
Instalação do corretor ortográfico
Antes de compilar o DB_CORE, é necessário instalar as bibliotecas do corretor ortográfico do SCAE. Para isso, siga os passos abaixo:
1 - Entre no diretório DB_CORE/SPELLER/scaeaspell-0.60.5/ e digite:
./configure make
2 - Inclua no arquivo .bashrc no seu home o caminho das bibliotecas do Aspell:
#SCAE SPELLER LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/scae/code/CORES/DB_CORE/SPELLER/scaeaspell-0.60.5/.libs export LD_LIBRARY_PATH
3 - Atualize as variáveis de ambiente:
source .bashrc
Agora, o DB_CORE está pronto para ser compilado.
Compilando e Executando o BD
Antes de compilar o DB_CORE é necessário seguir os passos abaixo (como root):
Por default, o Fedora Core 6 vem com um Java antigo instalado, então você precisa instalar a versão mais nova do Java Runtime Environment para desfrutar de todas as suas funcionalidades. Abaixo, nós o ensinaremos a instalar/atualizar seu Java Environment.
O primeiro passo é realizar o dowload daqui [1]. Você precisará aceitar a licença e selecionar linux como plataforma. Após clicar em continue, um nova página será aberta, na qual você deverá selecionar o arquivo .bin de nome jdk-6u4-linux-i586.bin. Após a seleção o download será iniciado.
Agora o DB_CORE pode ser compilado com sucesso.
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 arquivo, quando executado, será um daemon que implementa o BD.
CRIAÇÃO DE TABELAS
Após compilado, podemos utilizar 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). Executemos, por exemplo, o script abaixo:
./build_tables_subclasse_110_tf.bat
A saída deste comando deve ser:
Locale set to pt_BR.UTF-8. Loading known tables from .csv Number of known tables = 18 Creating KNOWN_LEXICONS_saved.csv file. Creating KNOWN_TTVS_saved.csv file. Creating KNOWN_TRAININGS_saved.csv file. Creating KNOWN_TESTS_saved.csv file. Loading dictionary .csv Number of dictionary words = 1212255 Number of distincts words = 843235 Loading cnae subclasses .csv Number of CNAE-Subclasses = 1183 Loading dados 'CSV_FILES/dados_vitoria_110.csv' Number of economic activities descriptions = 14204 Number of distinct economic activities descriptions = 3281 Loading dados 'CSV_FILES/dados_bh_110.csv' Number of economic activities descriptions = 175770 Number of distinct economic activities descriptions = 87999 Lexicon size = 1356. Number of words discarded due to word frequency (PFS) = 0.
CRIAÇÃO DE DICIONÁRIOS A PARTIR DE FILTROS
O DB_CORE permite que você construa dicionários filtrados a partir de tabelas (CNAE e/oui dados) ou a partir de um dicionário preexistente. Abaixo, descreveremos dois scripts que geram tais dicionários.
Criando um dicionário a partir de tabelas
O script abaixo usa o db_core para criar um dicionário filtrado a partir de: um filtro especificado, opções de filtragem e tabelas (CNAE e/ou dados):
./build_filtered_dictionary_from_tables.bat
Este script contém as seguintes linhas:
./db_core \ load_csv_cnae_subclasse CNAE_110_SUBCLASSE \ load_csv_dados DADOS_VITORIA_SUB_110 \ create_filtered_dictionary DICIONARIO_STOP_STEMM_ACCENT 1 "STOP + STEMM + ACCENT" 2 CNAE_110_SUBCLASSE-DESCRICAO_SUB DADOS_VITORIA_SUB_110-OBJETO_SOCIAL
DICIONARIO_STOP_STEMM_ACCENT é o nome do dicionário a ser criado. Este diconário será automaticamente inserido na Known_tables. O número 1 especifica que o filtro utilizará o stemmizador da Maria Abadia Lacerda Dias (mald@univates.br) (2 especifica que o filtro utilzará o stemmizador do Patraick Marques Cirelli). O texto entre aspas especifica as filtragens a serem adotadas (STOP = sem stop-words, STEMM = realiza stemming e ACCENTE = retira acento). O número 2, no exemplo, especifica a quantidade de tabelas que serão utilizadas para constrir o dicionário filtrado.
Criando um dicionário a partir de outro dicionário
O script abaixo usa o db_core para criar um dicionário filtrado a partir de: um filtro especificado, opções de filtragem e um dicionário preexistente.
./build_filtered_dictionary_from_dictionary.bat
Este script contém as seguintes linhas:
./db_core \ load_dictionary DICIONARIO \ create_filtered_dictionary_from_dictionary DICIONARIO_FILTERED_VERSION 1 "STEMM + STOP + ACCENT" DICIONARIO
DICIONARIO_FILTERED_VERSION é o nome do dicionário a ser criado. Este diconário será automaticamente inserido na Known_tables. O número 1 especifica que o filtro utilizará o stemmizador da Maria Abadia Lacerda Dias (mald@univates.br) (2 especifica que o filtro utilzará o stemmizador do Patraick Marques Cirelli). O texto entre aspas especifica as filtragens a serem adotadas (STOP = sem stop-words, STEMM = realiza stemming e ACCENTE = retira acento). O último parâmetro, DICIONARIO, especifica o nome do dicionário que servirá de base para a construção do novo.
Execuntando o DB_CORE SERVER
Após ter criado todas as tabelas de interesse, 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 são 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)
Antes de compilar e executar um CORE, é necessário garantir que a biblioteca compartilhada de comunicação esteja compilada e que sua variável de ambiente esteja setada. Para isto, siga os passos a seguir:
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 a Biblioteca Compartilhada MAE
Antes de compilar a MAE e os CORES WNN_CORE e WNN_COR_CORE, 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 a MAE vá para o seu diretório raiz e digite os comandos:
make clean make –f Makefile.no_interface
Em seguida, insira as seguintes linhas ao seu .bashrc (localizado no seu diretório home):
# MAE export MAEHOME=$HOME/PATH/MAE PATH=$PATH:$MAEHOME/bin
Compilando e Executando o VS_CORE
O Core da Figura 1, na verdade, pode ser composto por um ou mais classificadores. Na versão atual do SCAE, três classificadores estão disponíveis: VS_CORE WNN_CORE e WNN_COR_CORE. 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 e o Weightless Neural Network Correlate (WNN_COR)_Core empregam 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 WNN_CORE
Antes de compilar o WNN_CORE você já deveria ter compilado a biblioteca MAE
Para compilar o WNN_CORE volte para o seu diretório raiz e digite os comandos:
cd code/CORES/WNN_CORE make clean make
Estes comandos vão criar o executável wnn_core no diretório code/CORES/WNN_CORE. 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_core&
Com o comando acima, uma segunda parte do Core da Figura 1 estará em operação. Para interromper o wnn_core descubra o seu PID com o comando:
ps -A | grep wnn_core
e kill o wnn_core com o comando
kill -9 PID (onde PID é o número do processo informado pelo comando ps)
Compilando e Executando o WNN_COR_CORE
Antes de compilar o WNN_COR_CORE você já deveria ter compilado a biblioteca MAE
Para compilar o WNN_COR_CORE volte para o seu diretório raiz e digite os comandos:
cd code/CORES/WNN_COR_CORE make clean make
Estes comandos vão criar o executável wnn_cor_core no diretório code/CORES/WNN_COR_CORE. 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_cor_core&
Com o comando acima, uma segunda parte do Core da Figura 1 estará em operação. Para interromper o wnn_cor_core descubra o seu PID com o comando:
ps -A | grep wnn_cor_core
e kill o wnn_cor_core 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 através de um browser, ele precisa ser "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:
/etc/init.d/httpd restart
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.
- Instalar as depedências do scae:
- Instalar php
- Instalar o apache (httpd)
- Instalar o jdk1.6.0_04
- Instalar w3c-libwww e w3c-libwww-devel
- Instalar xmlrpc-c e xmlrpc-c-devel
- Instalar a aplicação MAE
- Instalar o Aspell
- Instalar a aplicação MAE:
- Instalar o xforms e xforms-devel
- Instalar freeglut e freeglut-devel
- Instalar libnet e libnet-devel
- Compilar a MAE com make -f Makefile.no_interface
- Configurar as variáveis de ambiente no arquivor .bashrc
- Especificar o path do java/lib/i386 na LD_LIBRARY_PATH
- Especificar o path do java/lib/i386/client na LD_LIBRARY_PATH
- Especificar o path do /opt/MAE na MAEHOME
- Especificar o path do /opt/MAE/bin na PATH
- Especificar o path CORES/shared na SHAREDHOME
- Especificar o path do SPELLER/scaeaspell-0.60.5 na LD_LIBRARY_PATH
- Instalar o SCAE
- ./configure
- make
- make install
- Instalar o scaeweb
- Inicializar o servidor web Apache
- Criar um link em /var/www/html/ apontando para code/scaeweb
- Alterar o home do usuário para permissão de leitura (chmod +rx user_name)