URL: https://linuxfr.org/news/inflectiones-declinaisons-et-conjugaisons-en-grec-ancien Title: Inflectiones, déclinaisons et conjugaisons en grec ancien Authors: Xavier Faure Benoît Sibaud et tuiu pol Date: 2014年02月12日T22:24:04+01:00 License: CC By-SA Tags: python3, langage, orthographe_et_grammaire, esperanto et grec Score: 26 En bref : inflectiones est une bibliothèque (Python3, GPLv3) qui permet de conjuguer et de décliner des mots. Le travail inverse (analyser un mot pour en dégager les caractéristiques morphologiques) ne m'intéressant pas, n'a pas été codé. Enfin, seuls quelques exemples tirés du grec ancien et de l'esperanto sont disponibles, voyez les exemples ci-dessous. Le projet n'en est qu'à ses débuts et attend du renfort ! ---- [Inflectiones sur GitHub](https://github.com/suizokukan/inflectiones) [Phokaia, un dictionnaire utilisant la bibliothèque Inflectiones](http://94.23.197.37/phokaia/phokaia.html) ---- (1) buts d'Inflectiones ======================= (1.1) buts ---------- Dans le cadre de différents projets (comme [celui-ci](http://94.23.197.37/phokaia/phokaia.html)) j'ai eu besoin de récupérer des formes automatiquement fléchies (conjuguées/déclinées) dans quelques langues, dont le grec ancien. La bibliothèque **Inflectiones** répond à ce problème en renvoyant une liste de formes décrites, d'une part à l'aide de la bibliothèque **DChars** (trace orthographique), d'autre part à l'aide de la bibliothèque **Phoseg** (trace phonétique). Une exportation sous forme de tableaux HTML est possible : vous en trouverez deux exemples ci-après. **Inflectiones** peut être utilisé pour faire le travail inverse et analyser une forme pour en reconstituer les caractéristiques morphologiques : ayant trop peu de temps à consacrer à ce projet, j'ai volontairement supprimé tout le code permettant de faire de telles analyses car je n'en étais pas satisfait. Si vous étiez intéressés par cette possibilité, faites-le-moi savoir. (1.2) intérêt ------------- Le point fort de cette bibliothèque est de générer _automatiquement_ des grilles de flexions. S'agissant du grec ancien, son utilisation permet(trait) de réduire les erreurs que je vois souvent dans les tableaux tapés péniblement à la main et qui sont rarement corrigés même quand une erreur est signalée. J'utilise **Inflectiones** dans le cadre d'un dictionnaire de grec ancien → français dont les articles sont partiellement remplis par des grilles de flexion construites et par **Inflectiones** et par les données du dictionnaire : reportez à l'article [χρόνος](http://94.23.197.37/phokaia/rst/art000515.html) pour en avoir un exemple. Enfin, il est facile de construire une table inverse associant à une formée donnée sa décomposition grammaticale (ex. en français : aima → aimer::passé simple.3S) : le module **Infgrid** permet de construire facilement de tels dictionnaires. (2) utiliser Inflectiones ========================= (2.1) créer une simple liste de formes -------------------------------------- Le code suivant ... word = "γεωργός" infgrid = INFLECTIONES["grc.λόγος"].inflect( input_parameters = { "Nsg" : word, "gender" : "masculine", }, ) for key in infgrid.gridsv: orthophone_objects = infgrid.gridsv[key] print(key, orthophone_objects[0].ortho, orthophone_objects[0].phone.get_ipa_representation()) ... remplit un objet nommé _infgrid_ de type **Infgrid** qui est une grille de flexions (ici, un tableau de déclinaison). Dans cet exemple, la flexion nommée _grc.λόγος_ est appelée avec deux paramètres, le nominatif singulier _γεωργός_ et le genre de ce mot. _infgrid.gridsv_ est par exemple un dictionnaire associant à une clef un objet **Phrase** qui n'est rien d'autre qu'une liste d'objets **OrthoPhone**. o key est une clef de type string valant par exemple "case=N;number=sg;dialect=att". o orthophone_objects[0] est de type Orthophone o orthophone_objects[0].ortho est un objet de type DString, une liste d'objets DChars o orthophone_objects[0].phone est un objet de type PhoSeg (2.2) créer un tableau HTML --------------------------- Si vous écriviez maintenant ... htmldata = INFLECTIONES["grc.λόγος"].inflectAndExportAsHTML( input_parameters = { "Nsg" : "ἀθηναῖος", "gender" : "masculine", }, morphogrid = "fra__grc_logos", formatstring = "ORTHO [PHONE]", captiontitle = word, tableborder = "1", characters_output = {"grc::ignore makron":True}, ) ... vous obtiendriez du code HTML générant un tableau de type « tableau de grammaire que l'on trouve dans les manuels scolaires ». Pour plus de lisibilité (affichage en console par exemple), le code HTML généré peut être interprété par l'outil w3m à l'aide de la commande : `python example.py | w3m -dump -cols 200 -T text/html`. C'est ce que j'ai fait pour présenter les deux tableaux suivants, liés au grec ancien. (3) quelques résultats en grec ancien ===================================== Les conjugaisons et déclinaisons du grec ancien sont _compliquées_ à expliquer à un ordinateur : il s'agissait pour moi d'un bon test pour jauger les capacités **d'Inflectiones** ! S'agissant de la transcription phonétique, elle n'a rien de trivial. Par exemple dans `ἀθηναίω [a.t̪hɛː.nˈa˧˥.jːɔː]`, vous pouvez remarquer que la transcription d'`αίω` est `[ˈa˧˥.jːɔː]`, et non le simple (mais ambigu) `[ˈai̯.ɔː]`. Les deux seules flexions acceptées pour le moment sont les mots de la deuxième déclinaison et quelques temps des verbes thématiques non contractes et non préfixés; les « accidents phonétiques » (exemples au futur : `τρίβω> τρίψω`, `πείθω> πείσω`, ...) sont bien intégrées (voyez le résumé des possibilités dans [l'en-tête du fichier paideuo.py](https://github.com/suizokukan/inflectiones/blob/master/inflectiones/languages/grc/paideuo.py)). Pour être complet, les tableaux qui suivent présentent, pour chaque forme, et la trace orthographique et la trace phonétique entre crochets (`formatstring = "ORTHO [PHONE]"`). Il est bien sûr possible de ne retenir que la trace orthographique en spécifiant par exemple `formatstring = "ORTHO"`. (3.1) deuxième déclinaison : ἀθηναῖος ------------------------------------- word = "ἀθηναῖος" infgrid = INFLECTIONES["grc.λόγος"].inflectAndExportAsHTML( input_parameters = { "Nsg" : word, "gender" : "masculine", }, morphogrid = "fra__grc_logos", formatstring = "ORTHO [PHONE]", captiontitle = word, tableborder = "1", characters_output = {"grc::ignore makron":True}, ) print(infgrid) ἀθηναῖος ┌─────────────┬────────────────────────────┬──────────────────────────────┬──────────────────────────────────┐ │ │singulier │duel │pluriel │ ├─────────────┼────────────────────────────┼──────────────────────────────┼──────────────────────────────────┤ │nominatif │ἀθηναῖος [a.t̪hɛː.nˈa˥˧.jːos]│ἀθηναίω [a.t̪hɛː.nˈa˧˥.jːɔː] │ἀθηναῖοι [a.t̪hɛː.nˈa˥˧.jːoi̯] │ ├─────────────┼────────────────────────────┼──────────────────────────────┼──────────────────────────────────┤ │vocatif │ἀθηναῖε [a.t̪hɛː.nˈa˥˧.jːe] │ἀθηναίω [a.t̪hɛː.nˈa˧˥.jːɔː] │ἀθηναῖοι [a.t̪hɛː.nˈa˥˧.jːoi̯] │ ├─────────────┼────────────────────────────┼──────────────────────────────┼──────────────────────────────────┤ │accusatif │ἀθηναῖον [a.t̪hɛː.nˈa˥˧.jːon]│ἀθηναίω [a.t̪hɛː.nˈa˧˥.jːɔː] │ἀθηναίους [a.t̪hɛː.nˈa˧˥.jːoːs] │ ├─────────────┼────────────────────────────┼──────────────────────────────┼──────────────────────────────────┤ │génitif │ἀθηναίου [a.t̪hɛː.nˈa˧˥.jːoː]│ἀθηναίοιν [a.t̪hɛː.nˈa˧˥.jːoi̯n]│ἀθηναίων [a.t̪hɛː.nˈa˧˥.jːɔːn] │ ├─────────────┼────────────────────────────┼──────────────────────────────┼──────────────────────────────────┤ │datif │ἀθηναίῳ [a.t̪hɛː.nˈa˧˥.jːɔː] │ἀθηναίοιν [a.t̪hɛː.nˈa˧˥.jːoi̯n]│ἀθηναίοις [a.t̪hɛː.nˈa˧˥.jːoi̯s] │ ├─────────────┼────────────────────────────┼──────────────────────────────┼──────────────────────────────────┤ │datif(ionien)│ │ │ἀθηναίοισι [a.t̪hɛː.nˈa˧˥.jːoi̯.si] │ └─────────────┴────────────────────────────┴──────────────────────────────┴──────────────────────────────────┘ (3.2) verbes thématiques : τρί̄βω -------------------------------- word = "τρί̄βω" infgrid = INFLECTIONES["grc.παιδεύω"].inflectAndExportAsHTML( input_parameters = { "AIndPresent1S" : word, "AIndImperfect1S" : None, "AIndFuture1S" : None, "AIndAorist_no_augment" : None, "PIndFuture1S" : None, "PIndAorist_no_augment" : None, }, morphogrid = "fra__grc_paideuo", formatstring = "ORTHO [PHONE]", captiontitle = word, tableborder = "1", characters_output = {"grc::ignore makron":True}, ) print(infgrid) τρί̄βω ┌────────────────────────────────────────────────────────────────────────────────────────────┐ │ACTIF │ ├──┬─────────┬───────────────────────────────────────┬───────────────────────────────────────┤ │ │ │ │ │ │ │ │indicatif │infinitif │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├──┼─────────┼───────────────────────────────────────┼───────────────────────────────────────┤ │ │ │τρίβω [t̪rˈiː˧˥.bɔː] │τρίβειν [t̪rˈiː˧˥.beːn] │ │ │présent │τρίβεις [t̪rˈiː˧˥.beːs] │ │ │ │ │τρίβει [t̪rˈiː˧˥.beː] │ │ │ │ │τρίβομεν [t̪rˈiː˧˥.bo.men] │ │ │ │ │τρίβετε [t̪rˈiː˧˥.be.t̪e] │ │ │ │ │τρίβουσι [t̪rˈiː˧˥.boː.si] │ │ │ │ │τρίβετον [t̪rˈiː˧˥.be.t̪on] │ │ │ │ │τρίβετον [t̪rˈiː˧˥.be.t̪on] │ │ ├──┼─────────┼───────────────────────────────────────┼───────────────────────────────────────┤ │1S│ │ἔτριβον [ˈet̪.riː.bon] │ │ │2S│imparfait│ἔτριβες [ˈet̪.riː.bes] │ │ │3S│ │ἔτριβε [ˈet̪.riː.be] │ │ │1P│ │ἐτρίβομεν [et̪.rˈiː˧˥.bo.men] │ │ │2P│ │ἐτρίβετε [et̪.rˈiː˧˥.be.t̪e] │ │ │3P│ │ἔτριβον [ˈet̪.riː.bon] │ │ │2D│ │ἐτριβέτην [et̪.riː.bˈe.t̪ɛːn] │ │ │3D│ │ἐτριβέτην [et̪.riː.bˈe.t̪ɛːn] │ │ ├──┼─────────┼───────────────────────────────────────┼───────────────────────────────────────┤ │1S│ │ἔτριψα [ˈet̪.riːp.sa] │τρῖψαι [t̪rˈiː˥˧p.sai̯] │ │2S│aoriste │ἔτριψας [ˈet̪.riːp.sas] │ │ │3S│ │ἔτριψε [ˈet̪.riːp.se] │ │ │1P│ │ἐτρίψαμεν [et̪.rˈiː˧˥p.sa.men] │ │ │2P│ │ἐτρίψατε [et̪.rˈiː˧˥p.sa.t̪e] │ │ │3P│ │ἔτριψαν [ˈet̪.riːp.san] │ │ │2D│ │ἐτριψάτην [et̪.riːp.sˈa.t̪ɛːn] │ │ │3D│ │ἐτριψάτην [et̪.riːp.sˈa.t̪ɛːn] │ │ ├──┼─────────┼───────────────────────────────────────┼───────────────────────────────────────┤ │1S│ │τρίψω [t̪rˈiː˧˥p.sɔː] │τρίψειν [t̪rˈiː˧˥p.seːn] │ │2S│futur │τρίψεις [t̪rˈiː˧˥p.seːs] │ │ │3S│ │τρίψει [t̪rˈiː˧˥p.seː] │ │ │1P│ │τρίψομεν [t̪rˈiː˧˥p.so.men] │ │ │2P│ │τρίψετε [t̪rˈiː˧˥p.se.t̪e] │ │ │3P│ │τρίψουσι [t̪rˈiː˧˥p.soː.si] │ │ │2D│ │τρίψετον [t̪rˈiː˧˥p.se.t̪on] │ │ │3D│ │τρίψετον [t̪rˈiː˧˥p.se.t̪on] │ │ ├──┴─────────┴───────────────────────────────────────┴───────────────────────────────────────┤ │PASSIF │ ├──┬─────────┬───────────────────────────────────────┬───────────────────────────────────────┤ │ │ │ │ │ │ │ │indicatif │infinitif │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├──┼─────────┼───────────────────────────────────────┼───────────────────────────────────────┤ │ │ │τρίβομαι [t̪rˈiː˧˥.bo.mai̯] │τριβέσθαι [t̪riː.bˈes.t̪hai̯] │ │ │présent │τρίβει [t̪rˈiː˧˥.beː] │ │ │ │ │τρίβεται [t̪rˈiː˧˥.be.t̪ai̯] │ │ │ │ │τριβόμεθα [t̪riː.bˈo.me.t̪ha] │ │ │ │ │τρίβεσθε [t̪rˈiː˧˥.bes.t̪he] │ │ │ │ │τρίβονται [t̪rˈiː˧˥.bon.t̪ai̯] │ │ │ │ │τρίβεσθον [t̪rˈiː˧˥.bes.t̪hon] │ │ │ │ │τρίβεσθον [t̪rˈiː˧˥.bes.t̪hon] │ │ ├──┼─────────┼───────────────────────────────────────┼───────────────────────────────────────┤ │1S│ │ἐτριβόμην [et̪.riː.bˈo.mɛːn] │ │ │2S│imparfait│ἐτρίβου [et̪.rˈiː˧˥.boː] │ │ │3S│ │ἐτρίβετο [et̪.rˈiː˧˥.be.t̪o] │ │ │1P│ │ἐτριβόμεθα [et̪.riː.bˈo.me.t̪ha] │ │ │2P│ │ἐτρίβεσθε [et̪.rˈiː˧˥.bes.t̪he] │ │ │3P│ │ἐτρίβοντο [et̪.rˈiː˧˥.bon.t̪o] │ │ │2D│ │ἐτρίβεσθον [et̪.rˈiː˧˥.bes.t̪hon] │ │ │3D│ │ἐτριβέσθην [et̪.riː.bˈes.t̪hɛːn] │ │ ├──┼─────────┼───────────────────────────────────────┼───────────────────────────────────────┤ │1S│ │ἐτρίφθην [et̪.rˈiː˧˥ph.t̪hɛːn] │τριφθῆναι [t̪riːph.t̪hˈɛː˥˧.nai̯] │ │2S│aoriste │ἐτρίφθης [et̪.rˈiː˧˥ph.t̪hɛːs] │ │ │3S│ │ἐτρίφθην [et̪.rˈiː˧˥ph.t̪hɛːn] │ │ │1P│ │ἐτρίφθημεν [et̪.rˈiː˧˥ph.t̪hɛː.men] │ │ │2P│ │ἐτρίφθητε [et̪.rˈiː˧˥ph.t̪hɛː.t̪e] │ │ │3P│ │ἐτρίφθησαν [et̪.rˈiː˧˥ph.t̪hɛː.san] │ │ │2D│ │ἐτρίφθητον [et̪.rˈiː˧˥ph.t̪hɛː.t̪on] │ │ │3D│ │ἐτριφθήτην [et̪.riːph.t̪hˈɛː˧˥.t̪ɛːn] │ │ ├──┼─────────┼───────────────────────────────────────┼───────────────────────────────────────┤ │1S│ │τριφθήσομαι [t̪riːph.t̪hˈɛː˧˥.so.mai̯] │τριφθήσεσθαι [t̪riːph.t̪hˈɛː˧˥.ses.t̪hai̯] │ │2S│futur │τριφθήσει [t̪riːph.t̪hˈɛː˧˥.seː] │ │ │3S│ │τριφθήσεται [t̪riːph.t̪hˈɛː˧˥.se.t̪ai̯] │ │ │1P│ │τριφθησόμεθα [t̪riːph.t̪hɛː.sˈo.me.t̪ha] │ │ │2P│ │τριφθήσεσθε [t̪riːph.t̪hˈɛː˧˥.ses.t̪he] │ │ │3P│ │τριφθήσονται [t̪riːph.t̪hˈɛː˧˥.son.t̪ai̯] │ │ │2D│ │τριφθήσεσθον [t̪riːph.t̪hˈɛː˧˥.ses.t̪hon] │ │ │3D│ │τριφθήσεσθον [t̪riːph.t̪hˈɛː˧˥.ses.t̪hon] │ │ └──┴─────────┴───────────────────────────────────────┴───────────────────────────────────────┘ (4) installation ================ Le projet est hébergé sur [Github](https://github.com/suizokukan/inflectiones); le code utilise d'autres bibliothèques que j'ai développées : [DChars](https://github.com/suizokukan/dchars), [DictInfos](https://github.com/suizokukan/dictinfos), [InfGrid](https://github.com/suizokukan/infgrid), [OrthoPhone](https://github.com/suizokukan/orthophone) et [Phoseg](https://github.com/suizokukan/phoseg). Placez-les à la racine du répertoire où se trouve `inflectiones/` et lancez par exemple le script suivant : from inflectiones.inflectiones import INFLECTIONES htmldata = INFLECTIONES["grc.λόγος"].inflectAndExportAsHTML( input_parameters = { "Nsg" : "ἀθηναῖος", "gender" : "masculine", }, morphogrid = "fra__grc_logos", formatstring = "ORTHO [PHONE]", captiontitle = word, tableborder = "1", characters_output = {"grc::ignore makron":True}, ) print(htmldata) (5) fonctionnement d'Inflectiones ================================= Il faut comprendre que cette bibliothèque génère des informations orthographiques et phonétiques. C'est la bibliothèque **OrthoPhone** qui gère le lien entre ces deux types d'informations : objets DChars + objet Phoseg = OrthoPhone Grâce à **OrthoPhone**, il est par exemple possible de supprimer un suffixe à un mot et d'obtenir le résultat orthographique et phonétique attendu. C'est encore **OrthoPhone** qui gère le délicat problème de l'accentuation ou des signes diacritiques ayant une signification phonétique. Ainsi, l'application de la loi « σωτῆρα » se trouve dans [OrthoPhoneGRC.setTheAccentOnThePenult()](https://github.com/suizokukan/orthophone/blob/master/orthophone/languages/grc/orthophone.py). En se limitant à la partie d'OrthoPhone liée au grec ancien, voici quelques exemples de fonctions : o remove_any_initial_vocalic_breathing() o setTheAccentuation(new_accent='ὀξύτονος', ... 'περισπώμενος', etc. ) o hasAnAnacliticAccent() **Inflectiones** remplit des grilles de flexion créées par le module **InfGrid**. Par exemple, la grille `fra__grc_logos` prévoit des cellules du type "cas=nominatif;nombre=singulier". Chaque object **Infgrid** contient un dictionnaire associant le nom d'une cellule à un objet **OrthoPhone**. Enfin, un objet **Infgrid** contient le code HTML du tableau qu'il sert à remplir : voyez un exemple de ces "templates" [ici](https://github.com/suizokukan/infgrid/blob/master/infgrid/morphogrids/fra__grc_logos.py). (6) et à l'avenir ? =================== Je cherche des hellénistes susceptibles de relire mes tableaux et des Pythoneux pour étendre Inflectiones à d'autres langues. Si vous êtes intéressés, faites-moi signe !

AltStyle によって変換されたページ (->オリジナル) /