Código PHP para fazer plural de palavra em portugues

1,005 views
Skip to first unread message

Marcel Ferrante

unread,
Nov 13, 2013, 3:44:05 AM11/13/13
to go...@googlegroups.com
Pessoal,

estamos com uma necessidade aqui e gostaria de saber se voces conhecem algo do tipo.

Para fins de interface, precisamos fazer o plural de algumas palavras. Ex:

cadeira > cadeiras
colchão > colchões
mão > mãos

O problema é que essa lingua tem regras de mais!!!

Você sabem se existe algum código que trata isso e consegue me fornecer o plural da palavra fornecida ?

Abs
Marcel


--
Marcel Ferrante Silva
(62) 8108-1277 (TIM)
"The Power of Ideas"
skype: marcelferrante
msn/gtalk: mar...@gmail.com

Leonardo Oliveira

unread,
Nov 13, 2013, 5:43:50 AM11/13/13
to go...@googlegroups.com
até onde eu sei não existe nada automatizado, você vai ter que ter um dicionário mesmo, não tem jeito.
pode criar algo com o ngettext onde você tenha um relacionamento no banco de dados de palavras no singular e no plural e montar o seu texto usando a função em todas as palavras, não sei se ficaria viável tantas requisições, mas é uma ideia:
<?=ngettext("palavra", "palavras", $number);?>
mas a questão é interessante, alguma outra ideia?

Programador Programmer

unread,
Nov 13, 2013, 5:50:54 AM11/13/13
to go...@googlegroups.com

Aproveitando o tópico. .. alguém aí sabe onde eu poderia conseguir um banco de dados com algum dicionário?

--
Você recebeu esta mensagem porque está inscrito na Lista "GOPHP" em Grupos do Google.
Para Postar: go...@googlegroups.com
Para Sair do Grupo: gophp-un...@googlegroups.com
Link: http://groups.google.com/group/gophp?hl=pt-BR
---
Você está recebendo esta mensagem porque se inscreveu no grupo "GOPHP" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para gophp+un...@googlegroups.com.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.

Marcel Ferrante

unread,
Nov 13, 2013, 6:17:40 AM11/13/13
to go...@googlegroups.com
Ola Leonardo,

Se tivesse um algoritmo com um conjunto de regras de portugues que resolvesse em 95% dos casos, já seria suficiente para mim e é menos complicado que ter um dicionario com todas as palavras do portugues no singular e plural e ainda manter isso atualizado....

Outra coisa util é um banco com pais/estado/cidade em mysql...

Abs
Marcel

Khyquer Ronaldy

unread,
Nov 13, 2013, 5:55:48 AM11/13/13
to go...@googlegroups.com
Bom dia Marcel,

A quantidade de palavras que você precisa aplicar o plural é muito grande?
Se for, acredito que compensa analisar as regras de plural dos substantivos (http://www.gramaticaonline.com.br/texto/832/) e fazer um algorítimo que faça a conversão. Li as regras e acredito que atenderia a maioria das situações.

Agora, se forem poucas palavras, será mais fácil você fazer um lista de conversão.

Se quiser utilizar um dicinário, tente essa API:

Boa sorte!


Cordialmente,

Khyquer Ronaldy
(
62) 8166-0317    

Um líder deve preparar o cenário para que seus liderados
alcancem todo o seu potencial. (O Monge e o Executivo) 

LinkedIn Adicionar Conexão  Google Talk khyquer.oliveira Skype khyquer



Marcel Ferrante

unread,
Nov 13, 2013, 6:54:51 AM11/13/13
to go...@googlegroups.com
Ola Ronaldy,
nao há como prever as palavras, pois o usuario que entra com o palavra. Esse seu texto pode ser de grande valia.
Abs
Marcel

Bruno Moraes

unread,
Nov 13, 2013, 6:03:51 AM11/13/13
to go...@googlegroups.com

Regras de plural não são tão complexas. Já pensou em montar um algorítimo usando substr?

fabio d lopes

unread,
Nov 13, 2013, 8:31:02 AM11/13/13
to go...@googlegroups.com
Na minha opniao, tem que usar (separar todas as palavras com os radicais da mesma regra e sua vogal tematica, dai da pra separar todas as palavras do mesmo grupo,
Tipo: (Cão = Cães, Mãe = Mães) - (Portão - Portões)  (Carro = Carros) (Barco = Barcos) (Janela = Janelas, Panela = Panelas), mais ou menos assim
o problema é que tem q exisitir uma pessoa para fazer isso manualmente, ou usar um algoritimo para verificar em um dicionario online por exemplo
as palavras com os radicais tal e passar seu equivalente para plural.

tipo fazer um substr mesmo.

Fabio Dutra Lopes
tel:62 93978230
msn:fabiodu...@msn.com
skype:fabio.dutra.lopes
gtalk:fabiodu...@gmail.com




Date: Wed, 13 Nov 2013 09:03:51 -0200
Subject: Re: [gophp] Código PHP para fazer plural de palavra em portugues
From: bruno...@gmail.com
To: go...@googlegroups.com

Marcel Ferrante

unread,
Nov 13, 2013, 8:45:07 AM11/13/13
to go...@googlegroups.com
Ola Bruno e Fabio,

vlw pelas consideracoes. Acho que é por ai mesmo atraves do substr.
Queria so um atalho na implementacao das regras de portugues. 
Nao precisa ser 100% de precisao, se for uns 95% esta bom.

Quando terminar vou postar o codigo para o grupo.

Abs
Marcel

Ole Peter Smith

unread,
Nov 13, 2013, 8:54:26 AM11/13/13
to go...@googlegroups.com
penso que pode ser feito com bastante eficiencia usando expressoes regulares, ex:

if (preg_match('/ão/',$word)) { }
elseif...

o mais especifico (raro) primeiro.

0le


2013/11/13 fabio d lopes <fabiodu...@msn.com>



--
                                            /////
                                         ( O O )
=================oOO==(_)==OOo=================
            Every day and every hour, I'm Learning more
          The more I Learn, the less I Know about before
         The Less I know, the more I want to Look around
             Diggin' deeper into Higher Ground...  UB40
                                   .oooO Oooo.
==================(     )=(     )=====================
                                     \  (     )  /
                                      \_)   (_/
===============================================
                        Ole Peter Smith, IME, UFG
            http://olepeter.mat.ufg.br  - ole at mat.ufg.br
===============================================
                   Life sure is a Mystery to be Lived
                      Not a Problem to be Solved
===============================================

Rodrigo Borges

unread,
Nov 13, 2013, 8:48:12 AM11/13/13
to go...@googlegroups.com

Ole Peter Smith

unread,
Nov 13, 2013, 8:58:32 AM11/13/13
to go...@googlegroups.com
faltou um $: preg_match('/ão$/',$word)) { }

 ou:

$substituir=array
(
  "ão$" => "ões",
  "o$" => "os",
  ...
);

foreach ($subsituir as $regex => $value)
{
   $word=preg_replace('/'.regex.'/',$value,$word);
}

0le


2013/11/13 Ole Peter Smith <ole...@gmail.com>

Fernando Cardoso

unread,
Nov 13, 2013, 8:58:06 AM11/13/13
to go...@googlegroups.com
Tem esse projeto plural em English,
pode ser que sirva para você tira uma base

https://github.com/mjijackson/plural

Rafael Fideles

unread,
Nov 13, 2013, 8:59:12 AM11/13/13
to go...@googlegroups.com
Marcel na minha humilde opinião eu tentaria aplicar a regras gramaticais

Por exemplo pegarias as duas últimas letras da palavra tipo: terminadas em "a" e "o" acrescento "s"
Terminadas em "ão" altero por "ões"
Terminadas em "L" por "is"
E as exceções tipo "pão" e "pães" 
Inserir no banco

Leonardo Oliveira

unread,
Nov 13, 2013, 10:01:55 AM11/13/13
to go...@googlegroups.com
Boa a dica do Rodrigo.


Em quarta-feira, 13 de novembro de 2013 11h48min12s UTC-2, Rodrigo Borges (rbm0407) escreveu:
Em 13 de novembro de 2013 11:45, Marcel Ferrante <mar...@gmail.com> escreveu:
Ola Bruno e Fabio,

vlw pelas consideracoes. Acho que é por ai mesmo atraves do substr.
Queria so um atalho na implementacao das regras de portugues. 
Nao precisa ser 100% de precisao, se for uns 95% esta bom.

Quando terminar vou postar o codigo para o grupo.

Abs
Marcel
Em 13 de novembro de 2013 11:31, fabio d lopes <fabiodu...@msn.com> escreveu:
Na minha opniao, tem que usar (separar todas as palavras com os radicais da mesma regra e sua vogal tematica, dai da pra separar todas as palavras do mesmo grupo,
Tipo: (Cão = Cães, Mãe = Mães) - (Portão - Portões)  (Carro = Carros) (Barco = Barcos) (Janela = Janelas, Panela = Panelas), mais ou menos assim
o problema é que tem q exisitir uma pessoa para fazer isso manualmente, ou usar um algoritimo para verificar em um dicionario online por exemplo
as palavras com os radicais tal e passar seu equivalente para plural.

tipo fazer um substr mesmo.

Fabio Dutra Lopes
tel:62 93978230

Marcel Ferrante

unread,
Nov 13, 2013, 10:59:39 AM11/13/13
to go...@googlegroups.com
Realmente Rodrigo matou a pau!
Obrigado,
Marcel
Reply all
Reply to author
Forward
0 new messages