Difference between revisions of "Problema da separação das sílabas"

From AdonaiMedrado.Pro.Br
Jump to: navigation, search
(Dificuldade 1)
Line 6: Line 6:
 
  programa-ção
 
  programa-ção
  
O divisor silábico do BrOffice está sob a Licença Pública Geral Menor versão 2.1 (LGPLv2.1) e funciona "com base no léxico do VERO, através de análise combinatória, extraíndo-se os casos reais e descartando-se as condições inexistentes." <ref>http://www.broffice.org/files/hyph_pt_BR-203.zip</ref>
+
O divisor silábico do BrOffice está sob a Licença Pública Geral Menor versão 2.1 (LGPLv2.1) e funciona "com base no léxico do VERO, através de análise combinatória, extraíndo-se os casos reais e descartando-se as condições inexistentes." <ref name="arquivo_readme">Arquivo README_hyph_pt_BR.txt em http://www.broffice.org/files/hyph_pt_BR-203.zip</ref>
 +
 
 +
Segundo <ref name="arquivo_readme" /> ele funciona conforme o algoristmo de Frank M. Liang da seguinte forma:
 +
#são carregadas uma série de partículas indicando pontos onde a divisão é possível e onde a divisão deve ser evitada.
 +
#quando uma palavra precisa ser divida as particulas são utilizadas e processadas para identificar os pontos de divisão.
 +
 
 +
 
 +
Cada partícula possui o seguinte formato:
 +
.<sub>0</sub><letra<sub>0</sub>><digito<sub>0</sub>><letra<sub>1</sub>><digito<sub>1</sub>>...<letra<sub>n</sub>><digito<sub>n</sub>>.<sub>1</sub>
 +
 
 +
Onde:
 +
*.<sub>0</sub> (caractere ponto) caso presente no início indica que a partícula deve ocorrer no início da palavra.
 +
*<letra<sub>n</sub>> é uma letra minúscula do alfabeto.
 +
*<digito<sub>n</sub>> pode ser omitido e é um dígito de inteiro positivo no intervalo fechado entre 1 e 9.
 +
*.<sub>1</sub> (caractere ponto) caso presente no final indica que a partícula deve ocorrer no final da palavra.
 +
 
 +
Caso <digito<sub>n</sub>> seja um número par, o ponto não é preferível para divisão silábica, caso seja impar o ponto é preferível. Quanto maior o valor, maior a preferência pela divisão (caso impar) ou pela não divisão (caso par).
 +
 
 +
O processamento é realizando sobrepondo-se as partículas na palavra considerando-se, em caso de particulas que tratem de uma mesma subcadeia da palavra, o maior dígito. Assim, observe o processamento da palavra '''silábicas''' (exemplo extraído de <ref name="arquivo_readme" />):
 +
 
 +
Particulas pertinentes: 
 +
  s2i
 +
  i3l2á
 +
  l4á
 +
  á1b2
 +
  3b2i
 +
  i1c4
 +
  3c2a
 +
  2s.
 +
 
 +
Processamento:
 +
 
 +
s i l á b i c a s
 +
s2i
 +
    l4á
 +
  i3l2á
 +
    l4á
 +
      á1b2
 +
        3b2i
 +
          i1c4
 +
            3c2a
 +
                2s.
 +
------------------
 +
s2i3l4á3b2i3c4a2s  <--- Resultado
  
== Referências ==
 
<references/>
 
  
 
== Dificuldade 2 ==
 
== Dificuldade 2 ==
Line 17: Line 58:
  
 
Nesta difilculdade o programa só receberá a palavra como entrada e retornará além do solicitado na dificuldade 1 as particulas de fato utilizadas no processamento da palavra.
 
Nesta difilculdade o programa só receberá a palavra como entrada e retornará além do solicitado na dificuldade 1 as particulas de fato utilizadas no processamento da palavra.
 +
 +
== Referências ==
 +
<references/>

Revision as of 01:22, 8 March 2009

Dificuldade 1

Geralmente um processador de textos utiliza algum algoritmo para fazer a hifenização das palavras. Neste algoritmo são consideradas posições onde a palavra pode ser divida. Por exemplo, a palavra programação têm as seguintes possibilidades para a divisão silábica:

pro-gramação
progra-mação
programa-ção

O divisor silábico do BrOffice está sob a Licença Pública Geral Menor versão 2.1 (LGPLv2.1) e funciona "com base no léxico do VERO, através de análise combinatória, extraíndo-se os casos reais e descartando-se as condições inexistentes." [1]

Segundo [1] ele funciona conforme o algoristmo de Frank M. Liang da seguinte forma:

  1. são carregadas uma série de partículas indicando pontos onde a divisão é possível e onde a divisão deve ser evitada.
  2. quando uma palavra precisa ser divida as particulas são utilizadas e processadas para identificar os pontos de divisão.


Cada partícula possui o seguinte formato:

.0<letra0><digito0><letra1><digito1>...<letran><digiton>.1

Onde:

  • .0 (caractere ponto) caso presente no início indica que a partícula deve ocorrer no início da palavra.
  • <letran> é uma letra minúscula do alfabeto.
  • <digiton> pode ser omitido e é um dígito de inteiro positivo no intervalo fechado entre 1 e 9.
  • .1 (caractere ponto) caso presente no final indica que a partícula deve ocorrer no final da palavra.

Caso <digiton> seja um número par, o ponto não é preferível para divisão silábica, caso seja impar o ponto é preferível. Quanto maior o valor, maior a preferência pela divisão (caso impar) ou pela não divisão (caso par).

O processamento é realizando sobrepondo-se as partículas na palavra considerando-se, em caso de particulas que tratem de uma mesma subcadeia da palavra, o maior dígito. Assim, observe o processamento da palavra silábicas (exemplo extraído de [1]):

Particulas pertinentes:

 s2i
 i3l2á
 l4á
 á1b2
 3b2i
 i1c4
 3c2a
 2s.

Processamento:

s i l á b i c a s
s2i 
    l4á
  i3l2á
    l4á
      á1b2
       3b2i
          i1c4
           3c2a
               2s.
------------------
s2i3l4á3b2i3c4a2s   <--- Resultado


Dificuldade 2

Resolva o mesmo problema só que desta vez, ao invés de você receber uma lista de particulas para cada palavra você deverá ler uma lista fixa no arquivo hyph_pt_BR.dic.

Este arquivo também é do projeto VERO do BrOffice (http://www.broffice.org/verortografico), porém sofre uma pequena alteração para este problema (exclusão da primeira linha).

Nesta difilculdade o programa só receberá a palavra como entrada e retornará além do solicitado na dificuldade 1 as particulas de fato utilizadas no processamento da palavra.

Referências

  1. 1.0 1.1 1.2 Arquivo README_hyph_pt_BR.txt em http://www.broffice.org/files/hyph_pt_BR-203.zip