Vous n'êtes pas identifié(e).

  • Contributions :
  • Vos boîtes de messages privés sont vides.

🟣 Algorithme ou bout de code pour décompte des syllabes (FR)


#1 2013-09-16 12:27:43

Mention effi10
🥉 Grade : Scout

AuxiliaireStratège
Lieu : Troyes
Inscription : 2013-09-10
Messages : 251
Likes : 0

Scraping
Développement C#
Content Spinning
Rédaction
Site Web

Algorithme ou bout de code pour décompte des syllabes (FR)

Bonjour

Tout est dans le titre (ou presque) : je recherche un script, un algorithme ou un bout de code mettant en oeuvre de manière "assez" fiable le décompte de syllabes pour la langue française.

À ce jour j'ai trouvé des trucs, mais uniquement pour l'anglais...

Merci smile


effiSpin, c'est moi ;-)

0
J'aime ❤️

🔴 Hors ligne

#2 2013-09-16 14:13:02

Mention Jaffaar
🥇 Grade : Guardian

AdminMembre du Black LaboMembre du CercleOfficierForce PolyvalenteIngénieur webKilluavie1000likesConsomateur de Liens1000 messagesMembre HospitalierPhilantrope
Lieu : Consultant SEO / WEB
Inscription : 2012-06-01
Messages : 8 420
Likes : 1321

Développement PHP
Développement JS
Networking SEO
Social Engineering

Re : Algorithme ou bout de code pour décompte des syllabes (FR)

j'ai rien la dessus, je réflechit comment faire cela en algorythmie, mais ca me parait un peu complexe.

une syllabe, généralement, c'est une consone + une voyelle , techniquement non ?


Comment Ranker ?
Nouveauté : Ninja Web Pro Pack copies limitées !
Ebook : Ninjalinking 2022 (-25% : labo25e)           
Conseils stratégiques ou techniques ? ( Skype : jaffaarbh )

0
J'aime ❤️

🔴 Hors ligne

#3 2013-09-16 14:33:50

Mention Alcor
🥉 Grade : Scout

Auxiliaire1000 messagesMembre Hospitalier
Inscription : 2012-10-09
Messages : 1 419
Likes : 1

Netlinking

Re : Algorithme ou bout de code pour décompte des syllabes (FR)

il parait qu'a Madagascar ils peuvent compter pour nous  big_smile  mais c'est pas facile a intégrer à un soft


Easy Peasy Lemon Squeezy

0
J'aime ❤️

🔴 Hors ligne

#4 2013-09-16 15:04:41

Mention puples
🥉 Grade : Scout

AuxiliaireNarcissiqueBusiness Man10likes
Lieu : Haute Savoie
Inscription : 2013-08-09
Messages : 379
Likes : 29

Développement PHP
Marketing
Advertising

Re : Algorithme ou bout de code pour décompte des syllabes (FR)

+10k lol

0
J'aime ❤️

🔴 Hors ligne

#5 2013-09-16 15:20:53

Mention effi10
🥉 Grade : Scout

AuxiliaireStratège
Lieu : Troyes
Inscription : 2013-09-10
Messages : 251
Likes : 0

Scraping
Développement C#
Content Spinning
Rédaction
Site Web

Re : Algorithme ou bout de code pour décompte des syllabes (FR)

Bon j'ai trouvé quelque chose mais en Delphi, pas fiable à 100%... C'est cependant suffisant pour "mesurer" (à la louche) certains critères sur un texte wink


effiSpin, c'est moi ;-)

0
J'aime ❤️

🔴 Hors ligne

#6 2013-09-16 16:48:56

Mention cyex
🥉 Grade : Scout

Auxiliaire
Inscription : 2013-07-12
Messages : 144
Likes : 1

Re : Algorithme ou bout de code pour décompte des syllabes (FR)

Je pense que ca peut se faire, en posant dessus un peu sur des mots particuliers :
brun
brune
queue
oeuf

Ensuite faut faire des patterns :
Pour une syllabe S, une Voyelle V et une consonne C
S = suite de C + suite de V (ex : bru,queue)
ou
S= suite de C + suite de V +suite de C  (ex:brun) (mais pas de V derrière sinon ca en fait 2, ex : brune)
ou
S= suite de V + suite de C (ex:oeuf)
etc. etc.

Sans compter qu'il faut gérrer les cas spéciaux, comme le "rium" de  "aquarium" peut être en faisant une liste de mot grec...

C'est posé en 5 min, j;ai pas vraiment réfléchi posement dessus, peut-être même que ca marche pas du tout ^^

En tout cas ca fait du taff, même si t'as déjà trouvé, je post un début de piste pour ceux qui plancherais dessus un jour, peut–être moi qui sait smile

Dernière modification par cyex (2013-09-16 16:50:15)

0
J'aime ❤️

🔴 Hors ligne

#7 2013-09-17 08:26:48

Mention razbithume
🥉 Grade : Scout

AuxiliaireStratègeMembre Hospitalier
Inscription : 2013-09-17
Messages : 827
Likes : 1

Audit et Analyse
Scraping
Marketing
Site Web

Re : Algorithme ou bout de code pour décompte des syllabes (FR)

Lorsque qu'une consonne est précédée et suivi d'une voyelle, la syllabe commence à la consonne.
(lorsqu'on trouve vcv, alors on sépare v/cv et on obtient 2 syllabes)
Exemple :
Sans = cvcc = on ne trouve pas le vcv, il n'y a qu'une syllabe
aquarium = vcvvcvvc = v/cvv/cvvc =a/qua/rium

ça ne marche pas tout le temps, il y a les doubles consonnes, etc. mais il faut peut etre fouiller là dedans...


Vive les regex et le xpath !

0
J'aime ❤️

🔴 Hors ligne

#8 2013-09-17 08:38:53

Mention effi10
🥉 Grade : Scout

AuxiliaireStratège
Lieu : Troyes
Inscription : 2013-09-10
Messages : 251
Likes : 0

Scraping
Développement C#
Content Spinning
Rédaction
Site Web

Re : Algorithme ou bout de code pour décompte des syllabes (FR)

Merci pour vos analyses smile

Vais tâcher d'adapter le bout de code Delphi que j'ai trouvé, je le partagerai. En fait j'aimerais implémenter l'algorithme de Gunning Fog pour mesurer la complexité d'un texte, et il me faut donc décompter impérativement le nombre de syllabes. C'est un indicateur je pense assez intéressant (un parmi tant d'autres me direz-vous) quand on travaille sur la génération de contenus wink


effiSpin, c'est moi ;-)

0
J'aime ❤️

🔴 Hors ligne

#9 2013-09-17 12:52:14

Mention cyex
🥉 Grade : Scout

Auxiliaire
Inscription : 2013-07-12
Messages : 144
Likes : 1

Re : Algorithme ou bout de code pour décompte des syllabes (FR)

aquarium = vcvvcvvc = v/cvv/cvvc =a/qua/rium

J'avais noté aquarium par ce que justement c'est une exception, soit : a/qua/ri/um

Sinon merci pour Gunning fog je ne connaissais pas. D'ailleurs en cherchant j'ai trouvé encore plus d'indices à chercher : http://www.mancko.com/tests-de-lisibilite/fr/
Il y en a du boulot smile

0
J'aime ❤️

🔴 Hors ligne

#10 2013-09-17 13:01:50

Mention Jaffaar
🥇 Grade : Guardian

AdminMembre du Black LaboMembre du CercleOfficierForce PolyvalenteIngénieur webKilluavie1000likesConsomateur de Liens1000 messagesMembre HospitalierPhilantrope
Lieu : Consultant SEO / WEB
Inscription : 2012-06-01
Messages : 8 420
Likes : 1321

Développement PHP
Développement JS
Networking SEO
Social Engineering

Re : Algorithme ou bout de code pour décompte des syllabes (FR)

aquarium = vcvvcvvc = v/cvv/cvvc =a/qua/rium

en arabe : si le mot aquarium, par exemple était, lu en phonétque pour un mot d'alphabet arabe,

je dirais qu'il est de 3 consonance (comme la majorité des mots en arabe)

A (avec une alif sous entendu avec la voyelle a)

qua (avec Qaf et la voyelle ou)

Rium (avec Ra et la voyelle y)

la consone a la fin n'est pas constituelle. en arabe. en francais elle n'est pas suivi de voyelle et ce n'est pas un syllabe wink

Donc En arabe 3 consone : Alif, Qaf et Ra et des voyelles. on a bien 3 syllabes sur a-qua-rium ?

Le Alif (la premiere est implicite ou invisible mais existe , alif etant justement la consonne invisible ) pour produire en son une simple voyelle. en son = syllabe ? wink

aquarium = vcvvcvvc = v/cvv/cvvc =a/qua/rium

- en début de mot une voyelle = une syllabe (V)
- une consonne suivie d'une voyelle (excepté en fin de mots) = syllabe (CV)

a partir de ces deux variable a et b on peux déduire un algorythme de reconaissance je pense ...

a  tester sur d'autres mots smile


Comment Ranker ?
Nouveauté : Ninja Web Pro Pack copies limitées !
Ebook : Ninjalinking 2022 (-25% : labo25e)           
Conseils stratégiques ou techniques ? ( Skype : jaffaarbh )

0
J'aime ❤️

🔴 Hors ligne

#11 2013-09-17 17:27:56

Mention cyex
🥉 Grade : Scout

Auxiliaire
Inscription : 2013-07-12
Messages : 144
Likes : 1

Re : Algorithme ou bout de code pour décompte des syllabes (FR)

lu en phonétque

A on avis pour mesurer la complexité d'un texte ecrit, il vaudrait mieux prendre le découpage des syllables écrites (je crois qu'en français on peut compter des deux façons écrite/orale).

Après une recherche de 5 min sur internet, j'ai trouvé les combinaisons possibles smile

Soit V une voyelle ou groupe de voyelles (voyelle + semi-voyelle) :
V
VC
CV
VCC
CCV
CVC
VCCC
CCCV
CCVC
CCVCC
CCCVC
CCCVCC
CCVCCC

Bien sur il à toujours des cas particuliers, mais vu qu'ils sont rares  ca doit suffire pour servir de mesure

Dernière modification par cyex (2013-09-17 17:28:42)

0
J'aime ❤️

🔴 Hors ligne

#12 2013-09-17 17:30:31

Mention Jaffaar
🥇 Grade : Guardian

AdminMembre du Black LaboMembre du CercleOfficierForce PolyvalenteIngénieur webKilluavie1000likesConsomateur de Liens1000 messagesMembre HospitalierPhilantrope
Lieu : Consultant SEO / WEB
Inscription : 2012-06-01
Messages : 8 420
Likes : 1321

Développement PHP
Développement JS
Networking SEO
Social Engineering

Re : Algorithme ou bout de code pour décompte des syllabes (FR)

il suffit peu etre simplement de relever les V en début de mot une voyelle = une syllabe (V)
et les consonne suivie d'une voyelle (excepté en fin de mots) = syllabe (CV)

et je crois que ces deux "types" avec leur conditions (début de mots, et excepté en fin de mots respectivement) remplacent cette liste non ?


Comment Ranker ?
Nouveauté : Ninja Web Pro Pack copies limitées !
Ebook : Ninjalinking 2022 (-25% : labo25e)           
Conseils stratégiques ou techniques ? ( Skype : jaffaarbh )

0
J'aime ❤️

🔴 Hors ligne

#13 2013-09-17 17:49:59

Mention razbithume
🥉 Grade : Scout

AuxiliaireStratègeMembre Hospitalier
Inscription : 2013-09-17
Messages : 827
Likes : 1

Audit et Analyse
Scraping
Marketing
Site Web

Re : Algorithme ou bout de code pour décompte des syllabes (FR)

Apres, ca dépend ce qu'on entend par syllabe.
les règles qu'on utilise pour découper les mots ne sont pas les mêmes que celles pour compter les pieds ds un poème.
Et la problématique du i s'illustre. Dans un cas, le i n'est pas considéré comme une voyelle, dans l'autre si.

mais en général, il y a autant de syllabe que de voyelle.


Vive les regex et le xpath !

0
J'aime ❤️

🔴 Hors ligne

#14 2013-09-17 18:05:30

Mention cyex
🥉 Grade : Scout

Auxiliaire
Inscription : 2013-07-12
Messages : 144
Likes : 1

Re : Algorithme ou bout de code pour décompte des syllabes (FR)

et je crois que ces deux "types" avec leur conditions (début de mots, et excepté en fin de mots respectivement) remplacent cette liste non ?

Oui c'est juste qu'a partir de la liste on en déduire un truc logique simple :

mais en général, il y a autant de syllabe que de voyelle.

Ou que de groupe de voyelle (voyelle + semi voyelle)

C'est effectivement le plus simple et rapide à mettre en oeuvre pour un calcul rapide.

<strike>N'oublie pas de mettre [résolu] dans le sujet de l'article !</strike> smile

0
J'aime ❤️

🔴 Hors ligne

#15 2013-09-18 06:28:30

Mention effi10
🥉 Grade : Scout

AuxiliaireStratège
Lieu : Troyes
Inscription : 2013-09-10
Messages : 251
Likes : 0

Scraping
Développement C#
Content Spinning
Rédaction
Site Web

Re : Algorithme ou bout de code pour décompte des syllabes (FR)

Bonjour

Bon pour la forme je vous donne le code (en Delphi, je l'ai pas encore adapté...) du truc que j'ai trouvé :


procedure Syllabify(Syllables: TStringList; s: string);
  const
    Consonants   = ['b','B','c','C','d','D','f','F','g','G',
            'h','H','j','J','k','K','l','L','m','M','n','N',
            'ñ','Ñ','p','P','q','Q','r','R','s','S','t','T',
            'v','V','w','W','x','X','y','Y','z','Z'];
    StrongVowels = ['a','A','á','Á','e','E','é','É',
                    'í','Í','o','ó','O','Ó','ú','Ú'];
    WeakVowels   = ['i','I','u','U','ü','Ü'];
    Vowels       = StrongVowels + WeakVowels;
    Letters      = Vowels + Consonants;
  var
    i, j, n, m, hyphen: integer;
  begin
    j := 2;
    s := #0 + s + #0;
    n := Length(s) - 1;
    i := 2;
    Syllables.Clear;
    while i <= n do begin
      hyphen := 0; // Do not hyphenate
      if s[i] in Consonants then begin
        if s[i+1] in Vowels then begin
          if s[i-1] in Vowels then hyphen := 1;
        end else if (s[i] in ['s', 'S']) and (s[i-1] in ['n', 'N'])
             and (s[i+1] in Consonants) then begin
          hyphen := 2;
        end else if (s[i+1] in Consonants) and
                    (s[i-1] in Vowels) then begin
          if s[i+1] in ['r','R'] then begin
            if s[i] in ['b','B','c','C','d','D','f','F','g',
                'G','k','K','p','P','r','R','t','T','v','V']
            then hyphen := 1 else hyphen := 2;
          end else if s[i+1] in ['l','L'] then begin
            if s[i] in ['b','B','c','C','d','D','f','F','g',
                'G','k','K','l','L','p','P','t','T','v','V']
            then hyphen := 1 else hyphen := 2;
          end else if s[i+1] in ['h', 'H'] then begin
            if s[i] in ['c', 'C', 's', 'S', 'p', 'P']
            then hyphen := 1 else hyphen := 2;
          end else
            hyphen := 2;
        end;
      end else if s[i] in StrongVowels then begin
        if (s[i-1] in StrongVowels) then hyphen := 1
      end else if s[i] = '-' then begin
        Syllables.Add(Copy(s, j, i - j));
        Syllables.Add('-');
        inc(i);
        j := i;
      end;
      if hyphen = 1 then begin  // Hyphenate here
        Syllables.Add(Copy(s, j, i - j));
        j := i;
      end else if hyphen = 2 then begin  // Hyphenate after
        inc(i);
        Syllables.Add(Copy(s, j, i - j));
        j := i;
      end;
      inc(i);
    end;
    m := Syllables.Count - 1;
    if (j = n) and (m >= 0) and (s[n] in Consonants) then
      Syllables[m] := Syllables[m] + s[n]   // Last letter
    else
      Syllables.Add(Copy(s, j, n - j + 1)); // Last syllable
  end;
 
 
// To test the procedure yon can drop a Textbox and a Label on a form and
//in the Change event of the Textbox write:
 
  procedure TForm1.Edit1Change(Sender: TObject);
  var
    Syllables: TStringList;
  begin
    Syllables := TStringList.Create;
    try
      Syllabify(Syllables, Edit1.Text);
      Label1.Caption := StringReplace(Trim(Syllables.Text),
        #13#10, '-', [rfReplaceAll]);
    finally
      Syllables.Free;
    end;
  end;
 

Si quelqu'un connait un convertisseur auto (comme Econ Netvert GUI, que j'utilise pour la traduction automatique C# / VB.Net - fonctionne super bien à 95% car utilise la réflexion autorisée par le framework .Net) ça m'évitera de me prendre le chou avec un langage que j'ai pas touché depuis 20 ans big_smile   (j'ai débuté la programmation avec le turbo pascal sous DOS... Après être passé par le Basic dès l'âge de 8 ans sur un ZX Spectrum 81, doté d'une imposante extension mémoire de 16 Ko : ça me rajeunit pas ces conneries roll )


effiSpin, c'est moi ;-)

0
J'aime ❤️

🔴 Hors ligne

#16 2013-09-18 07:51:17

Mention cyex
🥉 Grade : Scout

Auxiliaire
Inscription : 2013-07-12
Messages : 144
Likes : 1

Re : Algorithme ou bout de code pour décompte des syllabes (FR)

PS:C'était une blague pour le résolu hein ! smile

0
J'aime ❤️

🔴 Hors ligne

#17 2013-09-18 08:11:19

Mention effi10
🥉 Grade : Scout

AuxiliaireStratège
Lieu : Troyes
Inscription : 2013-09-10
Messages : 251
Likes : 0

Scraping
Développement C#
Content Spinning
Rédaction
Site Web

Re : Algorithme ou bout de code pour décompte des syllabes (FR)

Ah ben c'est pas moi qui l'ai mis tongue


effiSpin, c'est moi ;-)

0
J'aime ❤️

🔴 Hors ligne

#18 2013-09-18 09:13:22

Mention Jaffaar
🥇 Grade : Guardian

AdminMembre du Black LaboMembre du CercleOfficierForce PolyvalenteIngénieur webKilluavie1000likesConsomateur de Liens1000 messagesMembre HospitalierPhilantrope
Lieu : Consultant SEO / WEB
Inscription : 2012-06-01
Messages : 8 420
Likes : 1321

Développement PHP
Développement JS
Networking SEO
Social Engineering

Re : Algorithme ou bout de code pour décompte des syllabes (FR)

c'est moi wink


Comment Ranker ?
Nouveauté : Ninja Web Pro Pack copies limitées !
Ebook : Ninjalinking 2022 (-25% : labo25e)           
Conseils stratégiques ou techniques ? ( Skype : jaffaarbh )

0
J'aime ❤️

🔴 Hors ligne

#19 2013-09-19 08:46:06

Mention davidc1
🥉 Grade : Scout

Auxiliaire1000 messages
Lieu : La colle sur Loup
Inscription : 2013-09-17
Messages : 1 122
Likes : 2

Re : Algorithme ou bout de code pour décompte des syllabes (FR)

aller, je code un truc à l'arrache...

0
J'aime ❤️

🔴 Hors ligne

#20 2013-09-19 09:43:18

Mention davidc1
🥉 Grade : Scout

Auxiliaire1000 messages
Lieu : La colle sur Loup
Inscription : 2013-09-17
Messages : 1 122
Likes : 2

Re : Algorithme ou bout de code pour décompte des syllabes (FR)

voici un début (ça ne fonctionne pas parfaitement)
Je ne me suis pas servi de l'algo...

<?php

$mot = strtolower(htmlentities ($_GET["mot"]));
$mot = strtok ($mot,"");

$voyelles = array ("a","e","i","o","u","y");
$cvcv = "";
$moins = 0;

for ($i=0;$i<strlen ($mot)-1;$i++) {

if (in_array($mot[$i],$voyelles)) {$cvcv .="v";} else {$cvcv .="c";}

}
$cvcv = $cvcv." ";

$cvcv = str_replace ("vv","v",$cvcv);
$cvcv = str_replace ("vv","v",$cvcv);
$cvcv = str_replace ("vv","v",$cvcv);
$cvcv = str_replace ("cc","c",$cvcv);
$cvcv = str_replace ("cc","c",$cvcv);
$cvcv = str_replace ("cc","c",$cvcv);

$cvcv = str_replace ("c ","",$cvcv);
$cvcv = str_replace (" ","",$cvcv);

$nbsyllabes1 = count (explode ("cv",$cvcv));
$nbsyllabes2 = count (explode ("vc",$cvcv));

$nbsyllabes = min ($nbsyllabes1,$nbsyllabes2);

$nbsyllabes = $nbsyllabes - $moins;

echo $mot." --> ".$nbsyllabes;//." ".$nbsyllabes1." ".$nbsyllabes2." ".$cvcv;


?>
 

0
J'aime ❤️

🔴 Hors ligne

Pied de page des forums