Difference between revisions of "Problema da separação das sílabas"
(→Dificuldade 1) |
|||
Line 6: | Line 6: | ||
programa-ção | programa-ção | ||
− | O divisor | + | 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 | ||
− | |||
− | |||
== 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:
- 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:
.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.0 1.1 1.2 Arquivo README_hyph_pt_BR.txt em http://www.broffice.org/files/hyph_pt_BR-203.zip