Com objetivo de corrigir palavras escritas de maneira incorreta em um arquivo de texto, utilizamos uma árvore de prefixos a fim de armazenar um dicionario, onde desfrutamos do mesmo para verificar a ortografia de cada palavra presente no arquivo em questão.
Feedback atribuído em nosso trabalho pelo Professor Doutor Juliano Henrique Foleis que ministra a matéria de Algoritmos e Estruturas de Dados 2 na Universidade Tecnologia Federal do Paraná (UTFPR/CM).
# Clone este repositório
$ git clone https://github.com/jhonatancunha/corretor_ortografico
# Acesse a pasta do projeto no terminal/cmd
$ cd corretor_ortografico
# Execute o makefile (windows)
$ mingw32-make
# Execute o makefile (linux)
$ make
# Por fim inicie o executavel
#Windows
$ main "nome_arquivo.txt"
#Linux
$ ./main "nome_arquivo.txt"| Argumento | Descrição |
|---|---|
| "nome_arquivo.txt" | É o arquivo .txt que você deseja verificar se a ortografia das palavras estão corretas. |
#Executei passando os seguintes argumentos
#Windows
$ main "testes/default.txt"
#Linux
$ ./main "testes/default.txt"Obtemos as seguintes informações como saida do algoritmo.
| STATUS | TEXTO |
|---|---|
| Incorreto | Eyte e um arxuiyo exkmpvo qte seva analizadu pelu corretur |
| Correto | Este e um arquivo exemplo que sera analisado pelo corretor |
Nesta palavra utilizaremos a técnica de alternar coringas com objetivo de encontrar qual a letra incorreta em nossa palavra. Coringas serão representados pelo caracter '*', e na posição referente a ele, podemos usar qualquer letra do alfabeto até encontrar a correta.
🔎 Palavra: hoye
| Prefixo Procurado | Resultado |
|---|---|
| *oye | NULL |
| h*ye | NULL |
| ho*e | hoje |
| hoy* | NULL |
Utilizaremos esta regra em palavras com mais de 5 letras, onde iremos pesquisar uma palavra p que vá até a posição n-3 e n-2. Tal regra nos retorna chaves que casam com o prefixo procurado.
🔎 Palavra: saladq
| Prefixo Procurado | Resultado |
|---|---|
| salad | salada, saladas |
| sala | sala, salada |
Esta regra retorna o maior prefixo válido de uma palavra procurada. A fim de exemplo, ao pesquisar a palavra "zebraolho", receberemos a chave "zebra" como retorno.
🔎 Palavra: zebraolho
| Prefixo Procurado | Resultado |
|---|---|
| zebraolho | zebra |
Essa regra é formulada via conjunção da regra 1 com a regra 2, ou seja, aplicaremos a regra 2 na palavra alvo e logo após a regra 1.
🔎 Palavra: xinamiyb
| Prefixo Procurado | Resultado |
|---|---|
| dinamiy | CASO N-2 |
| *inamiy | NULL |
| x*namiy | NULL |
| xi*amiy | NULL |
| xin*miy | NULL |
| xina*iy | NULL |
| xinami* | NULL |
| dinami | CASO N-3 |
| *inami | dinamica, dinamico, dinamita, dinamite, dinamito, dinamiza, dinamize, dinamizo |
| x*nami | NULL |
| xi*ami | NULL |
| xin*mi | NULL |
| xina*i | NULL |
| xinam* | NULL |
Essa regra é baseada na regra 1, porém, agora iremos utilizar dois coringas. Onde um ficará fixado em uma posição, enquanto o outro irá percorrer a palavra.
🔎 Palavra: xinxmite
| Prefixo Procurado | Resultado |
|---|---|
| **nxmite | NULL |
| *i*xmite | NULL |
| *in*mite | dinamite |
| *inx*ite | NULL |
| etc... | NULL |
Essa regra foi pensada para encontrar palavras que contém letras repetidas ou inexistentes, a mesma intercala pelos caracteres da palavras anulando-os. A fim de exemplificar, ao procurarmos a palavra "caasa", o código tenta encontrar as chaves: aasa, casa, casa, caaa, caas.
🔎 Palavra: commentario
| Prefixo Procurado | Resultado |
|---|---|
| ommentario | NULL |
| cmmentario | NULL |
| comentario | comentario |
| comentario | comentario |
| commntario | NULL |
| commetario | NULL |
| commenario | NULL |
| commentrio | NULL |
| commentaio | NULL |
| commentaro | NULL |
| commentari | NULL |
|
Jhonatan Cunha |
Jessé Pires |