# Langages pour établir des règles

**URL:** <https://www.debian-fr.org/t/langages-pour-etablir-des-regles/89674>\
**Category:** Programmation\
**Created:** [Mars 7, 2024, 8:00 UTC](https://www.debian-fr.org/t/langages-pour-etablir-des-regles/89674 "2024-03-07T20:00:19Z")\
**Posts on this page:** 17\
**Page:** 1

<div class="post-metadata">

**Author:** ![lanig](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/l/c4cdca/32.png) [@lanig](https://www.debian-fr.org/u/lanig)\
**Post date:** [Mars 7, 2024, 8:00 UTC](https://www.debian-fr.org/t/langages-pour-etablir-des-regles/89674/1 "2024-03-07T20:00:19Z")

</div>

Bonjour,  
Je voudrais récrire un logiciel qui permet de décliner les mots d’une langue à déclinaison.  
Pour ma première version, j’y étais allé sans beaucoup de réflexion préalable, ça marchait mais c’était pas propre. Je veux changer de langue et en même temps avoir une certaine forme de généralité qui permettrait de ne pas écrire soit même tout le code mais de déclarer des règles et d’avoir ensuite des fonctions qui appliquent ces règles.

Pour illustrer, par exemple, pour ma première version, j’avais une fonction pour l’accusatif masculin singulier des adjectif. Dans cette fonction, il y avait une fonction qui testait si le nom était animé ou pas et qui choisissait alors le génitif ou le nominatif de l’adjectif. Supposons que je passe à une langue qui ne fasse pas la différence inanimé/animé , cette fonction est caduque.  
J’aimerais plutôt un truc ou je puisse déclarer des règles du style  
Règle 1 : cas possibles : nominatif, vocatif, accusatif…etc.  
Règle n : accusatif si animé génitif, si inanimé nominatif  
et avoir ensuite des fonctions qui vont directement chercher dans la base de données la bonne forme du mot.  
Existe-t-il des langages qui pourraient convenir à une telle utilisation ?  
Merci de vos idées.

---

<div class="post-metadata">

**Author:** ![nicola](https://www.debian-fr.org/user_avatar/www.debian-fr.org/nicola/32/8969_2.png) [@nicola](https://www.debian-fr.org/u/nicola)\
**Post date:** [Mars 8, 2024, 9:01 UTC](https://www.debian-fr.org/t/langages-pour-etablir-des-regles/89674/2 "2024-03-08T09:01:06Z")

</div>

Il existe des langages qui créent des syntaxes comme le couple bison/flex mais ce que tu demandes nécessite de la sémantique : les mots animés ou inanimés.  
[https://langevin.univ-tln.fr/CDE/LEXYACC/Lex-Yacc.html](https://langevin.univ-tln.fr/CDE/LEXYACC/Lex-Yacc.html)

---

<div class="post-metadata">

**Author:** ![lanig](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/l/c4cdca/32.png) [@lanig](https://www.debian-fr.org/u/lanig)\
**Post date:** [Mars 8, 2024, 11:55 UTC](https://www.debian-fr.org/t/langages-pour-etablir-des-regles/89674/3 "2024-03-08T11:55:11Z")

</div>

Merci de ta suggestion. Que veux-tu dire par

> ce que tu demandes nécessite de la sémantique ?

Je précise que je n’ai pratiquement aucune formation théorique en programmation, je suis uniquement un amateur autodidacte, d’où peut-être des questions pas forcément pertinentes.

---

<div class="post-metadata">

**Author:** ![nicola](https://www.debian-fr.org/user_avatar/www.debian-fr.org/nicola/32/8969_2.png) [@nicola](https://www.debian-fr.org/u/nicola)\
**Post date:** [Mars 8, 2024, 1:06 UTC](https://www.debian-fr.org/t/langages-pour-etablir-des-regles/89674/4 "2024-03-08T13:06:33Z")

</div>

Ce que je veux dire, c’est que le fait qu’un nom soit animé ou non ne dépend pas de sa position dans le texte mais de son sens. En gros, il te faudra faire une liste de noms animés et de noms inanimés voire même de noms animés ou non selon le sens de la phrase (par exemple un animal mort est-il animé ou non ?)

---

<div class="post-metadata">

**Author:** ![lanig](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/l/c4cdca/32.png) [@lanig](https://www.debian-fr.org/u/lanig)\
**Post date:** [Mars 8, 2024, 1:24 UTC](https://www.debian-fr.org/t/langages-pour-etablir-des-regles/89674/5 "2024-03-08T13:24:35Z")

</div>

OK. Oui, ce truc là n’est pas un problème. Pour les différentes formes, je parse la db de Wikidic et pour les langues où la distinction est pertinente, c’est indiqué. Pour répondre à ta question, c’est la grammaire qui compte, donc un animal mort est animé 😉

---

<div class="post-metadata">

**Author:** ![nicola](https://www.debian-fr.org/user_avatar/www.debian-fr.org/nicola/32/8969_2.png) [@nicola](https://www.debian-fr.org/u/nicola)\
**Post date:** [Mars 8, 2024, 1:56 UTC](https://www.debian-fr.org/t/langages-pour-etablir-des-regles/89674/6 "2024-03-08T13:56:59Z")

</div>

> [@lanig](#):
>
> un animal mort est animé

Par les asticots ?

Plus sérieusement, tu devrais demander de l’aide auprès de linguistes.

---

<div class="post-metadata">

**Author:** ![lanig](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/l/c4cdca/32.png) [@lanig](https://www.debian-fr.org/u/lanig)\
**Post date:** [Mars 8, 2024, 2:16 UTC](https://www.debian-fr.org/t/langages-pour-etablir-des-regles/89674/7 "2024-03-08T14:16:58Z")

</div>

Oui, tu as raison, c’est tellement un problème de base qu’il est impossible qu’il n’ait pas été sérieusement étudié. Inutile de réinventer la roue.  
Bonne journée.

---

<div class="post-metadata">

**Author:** ![Zargos](https://www.debian-fr.org/user_avatar/www.debian-fr.org/zargos/32/10889_2.png) [@Zargos](https://www.debian-fr.org/u/Zargos)\
**Post date:** [Mars 8, 2024, 10:18 UTC](https://www.debian-fr.org/t/langages-pour-etablir-des-regles/89674/8 "2024-03-08T22:18:45Z")

</div>

> [@nicola](#):
>
> non ne dépend pas de sa position dans le texte mais de son sens

Ca dépend de la langue en fait.

> [@lanig](#):
>
> c’est tellement un problème de base

En fait il se trouve que ce n’est pas un problème de base justement, sinon les traducteurs automatiques seraient bien meilleurs 🙂 .

Pour pouvoir traiter un tel problème il faut d’une part avoir les connaissances des sciences du langages, qu’on appelle la linguistique qui comprend en fait plusieurs domaines:

- la phonétique/phonologie
- la morphologie
- la lexicologie
- la syntaxe
- la sémantique
- l’ énonciation/pragmatique

Bon courage 🙂

Et pour paraphraser Ferdinand de Saussure: `les Sciences du langage consistent à étudier ce qui est réellement dit et non ce qui devrait se dire`

---

<div class="post-metadata">

**Author:** ![lanig](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/l/c4cdca/32.png) [@lanig](https://www.debian-fr.org/u/lanig)\
**Post date:** [Mars 8, 2024, 10:41 UTC](https://www.debian-fr.org/t/langages-pour-etablir-des-regles/89674/9 "2024-03-08T22:41:37Z")

</div>

> [@Zargos](#):
>
> En fait il se trouve que ce n’est pas un problème de base justement, sinon les traducteurs automatiques seraient bien meilleurs

Justement, dans mon premier message, j’explique le but limité de mon programme, qui n’est absolument pas de faire de la traduction : décliner les mots qui en ont besoin dans certaines langues. Donc, très peu de lexicologie, pas besoin de phonétique, ni de sémantique et encore moins de pragmatique.

---

<div class="post-metadata">

**Author:** ![Zargos](https://www.debian-fr.org/user_avatar/www.debian-fr.org/zargos/32/10889_2.png) [@Zargos](https://www.debian-fr.org/u/Zargos)\
**Post date:** [Mars 8, 2024, 10:49 UTC](https://www.debian-fr.org/t/langages-pour-etablir-des-regles/89674/10 "2024-03-08T22:49:26Z")

</div>

> [@lanig](#):
>
> il y avait une fonction qui testait si le nom était animé ou pas

Sans sémantique j’ai des doutes 🙂

---

<div class="post-metadata">

**Author:** ![lanig](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/l/c4cdca/32.png) [@lanig](https://www.debian-fr.org/u/lanig)\
**Post date:** [Mars 8, 2024, 11:08 UTC](https://www.debian-fr.org/t/langages-pour-etablir-des-regles/89674/11 "2024-03-08T23:08:01Z")

</div>

C’est dans la base de données de Wikidic. Donc, non, pas besoin de sémantique, juste d’appliquer des règles.

---

<div class="post-metadata">

**Author:** ![josephtux](https://www.debian-fr.org/user_avatar/www.debian-fr.org/josephtux/32/3985_2.png) [@josephtux](https://www.debian-fr.org/u/josephtux)\
**Post date:** [Mars 9, 2024, 4:55 UTC](https://www.debian-fr.org/t/langages-pour-etablir-des-regles/89674/12 "2024-03-09T16:55:28Z")

</div>

On ne s’improvise pas linguiste.

Pour quel usage précisément? générer une présentation des déclinaisons pour un manuel scolaire? un guide touristique?

---

<div class="post-metadata">

**Author:** ![dindoun](https://www.debian-fr.org/user_avatar/www.debian-fr.org/dindoun/32/4281_2.png) [@dindoun](https://www.debian-fr.org/u/dindoun)\
**Post date:** [Mars 10, 2024, 5:05 UTC](https://www.debian-fr.org/t/langages-pour-etablir-des-regles/89674/13 "2024-03-10T17:05:38Z")

</div>

> [@josephtux](#):
>
> On ne s’improvise pas linguiste

pourquoi pas linguiste amateur? je suis pour les conaissances partagées, donc étudiées; toi aussi si tu es ici, d’ailleurs 🙂

---

<div class="post-metadata">

**Author:** ![josephtux](https://www.debian-fr.org/user_avatar/www.debian-fr.org/josephtux/32/3985_2.png) [@josephtux](https://www.debian-fr.org/u/josephtux)\
**Post date:** [Mars 12, 2024, 1:14 UTC](https://www.debian-fr.org/t/langages-pour-etablir-des-regles/89674/14 "2024-03-12T13:14:40Z")

</div>

soit, mais quel niveau, quel effort, quelle quantité de travail, pour _atteindre quel objectif_?

Pour décliner des mots en latin, on établi des tables de déclinaison, ensuite on l’utilise selon sa syntaxe en fonction de sa sémantique, quel mode convient pour donner quelle signification (quel signifiant pour quel signifié…). Je ne comprends pas ce que doit faire votre logiciel, sinon afficher des tables (ce que vous savez certainement faire beaucoup mieux que moi)

---

<div class="post-metadata">

**Author:** ![vbreton](https://www.debian-fr.org/user_avatar/www.debian-fr.org/vbreton/32/11400_2.png) [@vbreton](https://www.debian-fr.org/u/vbreton)\
**Post date:** [Mars 19, 2024, 5:54 UTC](https://www.debian-fr.org/t/langages-pour-etablir-des-regles/89674/15 "2024-03-19T17:54:17Z")

</div>

Bonsoir @Ianig,

Comme le mentionne @nicola, le couple flex/Bison pourrait être utile pour générer un analyseur. Quel langage de programmation utilises-tu ? Je m’étais amusé à analyser un texte en faisant usage du langage Python et la moindre règle implique du code; ce langage est bien adapté pour effectuer assez facilement des traitements sur des chaînes de caractères ainsi que des statistiques. Là où ça va se compliquer, c’est dans la richesse de la langue française et des exceptions ainsi que des éventuelles ambiguïtés. Qu’appelles-tu "nom animé " ? Je doute qu’il y ait beaucoup de linguistes ici aussi l’expression du besoin mériterait à être plus explicite, plus détaillée avec des exemples précis pour faciliter la compréhension. ChatGPT peut aussi aider à mieux formuler le besoin tout en aidant à trouver des axes de solutions en développement sans pour autant se substituer à nos quelques neurones encore intacts !

---

<div class="post-metadata">

**Author:** ![lanig](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/l/c4cdca/32.png) [@lanig](https://www.debian-fr.org/u/lanig)\
**Post date:** [Mars 19, 2024, 7:00 UTC](https://www.debian-fr.org/t/langages-pour-etablir-des-regles/89674/16 "2024-03-19T19:00:04Z")

</div>

Merci de ta réponse.  
Nom animé : dans (au moins) certaines langues slaves, la déclinaison des noms masculins d’êtres vivants (animé) est différente de celle des noms masculins de choses (inanimés).  
Je pense utiliser python.  
En fait, je crois avoir trouvé un moyen qui consisterait à décrire les déclinaisons sous forme d’un arbre (xml) qui pourrait être parcouru de manière récursive par un script qui générerait les fonctions.  
Le point clé, c’est de bien (simplement) décrire l’arbre des déclinaisons. Par exemple, au lieu de considérer que masculin animé et masculin inanimé sont des variantes de la même déclinaison comme c’est fait classiquement, les considérer comme des déclinaisons séparées.

---

<div class="post-metadata">

**Author:** ![anon2873143](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/ee59a6/32.png) [@anon2873143](https://www.debian-fr.org/u/anon2873143)\
**Post date:** [Mars 19, 2024, 11:23 UTC](https://www.debian-fr.org/t/langages-pour-etablir-des-regles/89674/17 "2024-03-19T23:23:00Z")

</div>

j’ai dit une bêtise peut être.

Désolé. j’ai édité le message pour plus de clareté.
