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

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

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

Mention effi10
Scout
Lieu : Troyes
Inscription : 2013-09-10
Messages : 250

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 ;-)

Hors ligne

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

Mention Jaffaar
Guardian
Lieu : Marseille
Inscription : 2012-06-01
Messages : 5 353

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

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 ?


⌕ Tu veux Ranker ?
⏩ Actives le mode automatique : SEO Quartz             
⏩ Profite d'un consultant SEO (sur Marseille ou sur Skype => jaffaarbh )
⏩ Tu veux des techniques concrètes ? SEO Basics Skills - SEO Ranking Skills

Hors ligne

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

Mention Alcor
Soldier
Inscription : 2012-10-09
Messages : 1 313

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

Hors ligne

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

Mention puples
Scout
Lieu : Haute Savoie
Inscription : 2013-08-09
Messages : 198

Développement PHP
Marketing
Advertising

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

+10k lol

Hors ligne

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

Mention effi10
Scout
Lieu : Troyes
Inscription : 2013-09-10
Messages : 250

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 ;-)

Hors ligne

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

Mention cyex
Scout
Inscription : 2013-07-12
Messages : 144

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)

Hors ligne

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

Mention razbithume
Soldier
Inscription : 2013-09-17
Messages : 825

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 !

Hors ligne

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

Mention effi10
Scout
Lieu : Troyes
Inscription : 2013-09-10
Messages : 250

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 ;-)

Hors ligne

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

Mention cyex
Scout
Inscription : 2013-07-12
Messages : 144

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

Hors ligne

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

Mention Jaffaar
Guardian
Lieu : Marseille
Inscription : 2012-06-01
Messages : 5 353

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

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


⌕ Tu veux Ranker ?
⏩ Actives le mode automatique : SEO Quartz             
⏩ Profite d'un consultant SEO (sur Marseille ou sur Skype => jaffaarbh )
⏩ Tu veux des techniques concrètes ? SEO Basics Skills - SEO Ranking Skills

Hors ligne

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

Mention cyex
Scout
Inscription : 2013-07-12
Messages : 144

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)

Hors ligne

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

Mention Jaffaar
Guardian
Lieu : Marseille
Inscription : 2012-06-01
Messages : 5 353

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

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 ?


⌕ Tu veux Ranker ?
⏩ Actives le mode automatique : SEO Quartz             
⏩ Profite d'un consultant SEO (sur Marseille ou sur Skype => jaffaarbh )
⏩ Tu veux des techniques concrètes ? SEO Basics Skills - SEO Ranking Skills

Hors ligne

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

Mention razbithume
Soldier
Inscription : 2013-09-17
Messages : 825

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 !

Hors ligne

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

Mention cyex
Scout
Inscription : 2013-07-12
Messages : 144

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

Hors ligne

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

Mention effi10
Scout
Lieu : Troyes
Inscription : 2013-09-10
Messages : 250

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 ;-)

Hors ligne

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

Mention cyex
Scout
Inscription : 2013-07-12
Messages : 144

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

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

Hors ligne

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

Mention effi10
Scout
Lieu : Troyes
Inscription : 2013-09-10
Messages : 250

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 ;-)

Hors ligne

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

Mention Jaffaar
Guardian
Lieu : Marseille
Inscription : 2012-06-01
Messages : 5 353

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

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

c'est moi wink


⌕ Tu veux Ranker ?
⏩ Actives le mode automatique : SEO Quartz             
⏩ Profite d'un consultant SEO (sur Marseille ou sur Skype => jaffaarbh )
⏩ Tu veux des techniques concrètes ? SEO Basics Skills - SEO Ranking Skills

Hors ligne

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

Mention davidc1
Soldier
Inscription : 2013-09-17
Messages : 1 004

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

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

Hors ligne

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

Mention davidc1
Soldier
Inscription : 2013-09-17
Messages : 1 004

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;


?>
 

Hors ligne

#21 2013-09-19 10:06:59

Mention cyex
Scout
Inscription : 2013-07-12
Messages : 144

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

Le pauvre il code en C# (:

Peut-être essayer avec http://www.asp.net/downloads/archived-v … -to-aspnet ou http://phalanger.codeplex.com/
En tout cas ca pourra être utile pour d'autres sources

Dernière modification par cyex (2013-09-19 10:07:32)

Hors ligne

#22 2013-09-19 11:41:20

Mention effi10
Scout
Lieu : Troyes
Inscription : 2013-09-10
Messages : 250

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

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

Bande de moqueurs tongue

Le PHP ça va, je pratique depuis 2005... Mais bon globalement je préfère coder sur du client lourd que sur du web, surtout quand y'a de l'interface utilisateur derrière roll

MERCI davidc1, vais tester ça smile


PS : le C# j'aime pas non plus, je préfère le VB.Net ! J'aime les langages "verbeux" !

Dernière modification par effi10 (2013-09-19 11:42:18)


effiSpin, c'est moi ;-)

Hors ligne

#23 2013-09-19 11:45:49

Mention Jaffaar
Guardian
Lieu : Marseille
Inscription : 2012-06-01
Messages : 5 353

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

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

effi10 a écrit :

PS : le C# j'aime pas non plus, je préfère le VB.Net ! J'aime les langages "verbeux" !

lol lol lol


⌕ Tu veux Ranker ?
⏩ Actives le mode automatique : SEO Quartz             
⏩ Profite d'un consultant SEO (sur Marseille ou sur Skype => jaffaarbh )
⏩ Tu veux des techniques concrètes ? SEO Basics Skills - SEO Ranking Skills

Hors ligne

#24 2013-09-19 11:47:04

Mention effi10
Scout
Lieu : Troyes
Inscription : 2013-09-10
Messages : 250

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

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

Davidc1, en fait ton code en PHP va me servir big_smile et pas qu'un peu !

Je teste et je te redis en privé wink


effiSpin, c'est moi ;-)

Hors ligne

#25 2013-09-19 11:49:54

Mention cyex
Scout
Inscription : 2013-07-12
Messages : 144

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

PS : le C# j'aime pas non plus, je préfère le VB.Net ! J'aime les langages "verbeux" !

je peux lire sur le site ou jafaar apprends le black hat :

Vous trouvez le C et le C++ trop compliqués mais aimeriez concevoir des programmes fonctionnels...

http://fr.openclassrooms.com/informatiq … -en-vb-net
hahahaha

En tout cas merci davidc1 ca sera utile smile

Dernière modification par cyex (2013-09-19 11:51:01)

Hors ligne

Pied de page des forums