Para usar o RSLP em seu código, são necessários os seguintes arquivos:
Para possibilitar o uso do RSLP em programas internos, o mesmo foi reescrito para ser integrado em outros programas escritos em linguagem C de forma simplificada, exigindo do usuário o uso de apenas três funções básicas. Assim, para utilizá-lo no código-fonte de seu programa, deve-se:
rslpStemmer.h, adicionando ao seu arquivo fonte principal:
... #include "rslpStemmer.h" ...
rslpLoadStemmer, que faz o carregamento de todos
os arquivos e estruturas necessárias para o funcionamento do stemmer. Esta função
somente precisa ser chamada uma vez, recebendo como parâmetro uma
estrutura do tipo rslp_stemmer_main_struct. No código-fonte do RSLP já
existe uma variável deste tipo declarada globalmente (rslpMainStruct), sendo
possível utilizá-la diretamente.
Além disso, é necessário também fornecer para a função o nome e o caminho
do arquivo de configuração principal (por exemplo, rslpconfig.txt).
Neste caso, a chamada à função seria:
rslpLoadStemmer(&rslpMainStruct, "rslpconfig.txt");
rslpUnloadStemmer, que desalocará toda a memória utilizada pelas estruturas
internas do stemmer. Como parâmetro, deve ser passada a mesma estrutura utilizada
na chamada à rslpLoadStemmer. Por exemplo:
rslpUnloadStemmer(&rslpMainStruct);
rslpStemmer.c e rslpTrie.c
ao Makefile de seu projeto. Abaixo um exemplo de Makefile, onde exemplo.c
é o nome do arquivo fonte de seu programa:
CC=gcc OBJS=exemplo.o rslpStemmer.o rslpTrie.o exemplo : $(OBJS) $(CC) $(OBJS) -o exemplo exemplo.o : exemplo.c $(CC) -c exemplo.c rslp.o : rslpStemmer.c $(CC) -c rslpStemmer.c trie.o : trie.c $(CC) -c rslpTrie.c $(OBJS) : rslpTrie.h rslpStemmer.hNo Dev-C++, basta adicionar os arquivos citados ao seu projeto, o Dev se encarrega de criar o Makefile apropriado.
Para efetivamente usar o stemmer, basta utilizar a função rslpProcessWord,
passando à ela a estrutura principal do stemmer (previamente carregada através de
rslpLoadStemmer) e uma variável com a palavra que se deseja processar.
Como a palavra será gradualmente modificada por cada passo do stemmer, é necessário
que a mesma esteja armazenada em uma variável que possibilite o aumento do seu
tamanho, como array do tipo char previamente alocado com um tamanho razoável
(por exemplo, palavra pode ter sido declarada em seu programa como
char palavra[80]).
Um exemplo de uso seria:
... char palavra[80]; ... lerPalavraDeAlgumDispositivo(palavra); ... rslpProcessWord(palavra, &rslpMainStruct); ...
Após a chamada à função rslpProcessWord a variável palavra conterá
o stem resultante da aplicação das regras de stemming sobre a palavra
originalmente passada à função.
A função de inicialização - rslpLoadStemmer() - primeiramente tenta
ler o arquivo de configuração do stemmer. Neste arquivo estão indicados
os nomes de arquivos para leitura dos passos e suas regras,
para a sua ordem de aplicação delas, além de configuração do dicionário de Entidades
Nomeadas e para stem, entre outras coisas. Sua sintaxe é simples, consistindo do nome
da variável de configuração (que deve estar escrita em letras maiúsculas), seguido
de um sinal de igual ("="), e o valor desejado para aquela configuração (os
valores possíveis dependem de cada variável).
A lista de variáveis de configuração segue abaixo:
| Variável | Valores possíveis | Tipo | |
|---|---|---|---|
| STEPS_FILE | String com o nome do arquivo de passos e regras | Obrigatório | |
| FLOW_FILE | String com o nome do arquivo com o fluxo de aplicação das regras. Caso não exista, o RSLP automaticamente carrega o fluxo de regras padrão. | Opcional | |
| DO_STEMMING | YES ou NO. Indica se o processo de stemming deve ser realizado. O padrão é YES. Caso seja selecionado NO, a função rslpProcessWord não aplica as regras de stemming, deixando a palavra passada intocada. Útil para depuração de código. |
Opcional | |
| REPLACE_ISO_CHARS | YES ou NO. Indica se deve substituir caracteres acentuados na palavra pelos equivalentes sem acento (por exemplo, á por a). |
Opcional | |
| USE_STEM_DICTIONARY | YES ou NO. Indica se deve ser utilizado o dicionário de stems, que consiste em armazenar em uma árvore TRIE cada palavra lida e seu respectivo stem. Em uma nova ocorrência desta palavra, a mesma não seria novamente processado, já que o seu stem estaria armazenado no dicionário. O uso deste dicionário aumenta drasticamente o desempenho do stemmer, porém às custa de um uso maior de memória. |
Opcional | |
| STEM_DICT_MAX_SIZE | Um valor inteiro, à partir de 0. Indica o tamanho máximo de memória (em megabytes) que o dicionário de stems pode utilizar. Caso este limite seja atingido, novas palavras não são mais adicionadas ao dicionário, obrigando o seu reprocessamento a cada nova ocorrência. Se for configurado para 0, o uso do dicionário é desativado. |
Opcional | |
| USE_NAMED_ENTITIES | YES ou NO. Indica se deve ser utilizado o dicionário de Entidades Nomeadas. Entidades Nomeadas, são, por exemplo, nomes próprios, que não deveriam ser reduzidos a stems. Assim, se ativado este dicionário, sempre que uma palavra iniciada por letras maiúscula é recebida, o stem primeiro verifica sua presença neste dicionário. Caso exista, a palavra não é processada pelos passos do stemmer, não sendo modificada (à exceção do case das letras e à substituição de acentos, caso ativada). |
Opcional | |
| NAMED_ENTITIES_FILE | String com o nome do arquivo com a listagem de Entidades Nomeadas. | Opcional | |
| NAMED_ENTITIES_DICT_MAX_SIZE | Idem a STEM_DICT_MAX_SIZE. | Opcional | |
Abaixo um exemplo de arquivo de configuração do RSLP Stemmer:
STEPS_FILE=steprules.txt DO_STEMMING=YES REPLACE_ISO_CHARS=YES USE_STEM_DICTIONARY=YES USE_NAMED_ENTITIES=YES NAMED_ENTITIES_FILE=nomes.xml STEM_DICT_MAX_SIZE=123 NAMED_ENTITIES_DICT_MAX_SIZE=50 FLOW_FILE=rslpflow.original
IMPORTANTE: o RSLP procura o arquivo de configuração na pasta atual, ou seja, o arquivo deve estar presenta na mesma pasta em que se está rodando o RSLP.