c
a
d
r
a
t






  Entrée  
   Ressources   
    Code  
     Étiquetage  
 
+  Des ressources en corpus, isotopies et programmes
+  Des articles d’ études sur le traitement automatique de la langue
+  Les pages du site pour des recherches, informations, résumés...


 
     le programme des verbes fléchis pour le corse, en Python   
Le programme en Python fléchissant les infinitifs types du corse

 

 1.  présentation du code

La liste générée par le programme est une première approche du fléchissement des verbes en corse. Si côté programmation les difficultés sont intégrées, certaines questions linguistiques attendent d'être éclairées. Des erreurs sont pour l'heure patentes comme l'accord en genre et nombre du gérondif.

Le principe du programme consiste en une variable socle, à savoir un verbe archétypal, qui va subir des ajustements au fil des variations des conjugaisons. Celles-ci suivent pas à pas l'ouvrage de Jean-Marie Comiti, qui a paru associer au mieux formalisation et exhaustivité, et se réfèrent partiellement aussi à Yvia-Croce (voir les diverses références). La modification de la racine (par les expressions régulières) est incluse dans celles des désinences (par les listes et chaînes). Le résultat n'est pas complet, puisque 154 verbes témoins ont servi de tests, déroulant après exécution 21425 formes, soit une moyenne de 139 formes par infinitif, et 15083 formes une fois concaténées. La base nous montre un lexique de quelque 30% ambigu, en sachant que le discours devrait infléchir ce pourcentage de formes identiques, se manifestant pour des temps peu employés, ou que des corrections linguistiques devraient diminuer une approche assez ouverte de la conjugaison.

Le fichier lista_verbi.txt     a été amplifié des huit verbes irréguliers issus de la liste de mots sur les verbes, saisie manuellement. Il reste donc une série à saisir et une autre, autrement plus importante, à situer dans le programme, lequel est reproduit ci-dessous, ou plus sûrement : prog_flexion_verbe_corse.py     .

Du point de vue de la programmation, contrairement au programme de découpage lexical du français, ce programme est plus académique en ce qu'il développe les classes, et si la programmation objet n'est pas ici indispensable, elle offre une meilleure clarté dans l'architecture du code. Elle différencie les opérations annexes de traitement du programme, Trt_lex_initial (ln.8) de son coeur, Cunghjucazione (ln.38). Plutôt que la perspective d'intégrer ce programme dans un ensemble plus vaste, l'intérêt de la programmation objet s'orienterait plutôt vers les variables, ici les temps de conjugaison, afin de faciliter leur manipulation : concaténation et héritage. Leur structuration est opérée sous forme de listes imbriquées, et permet de représenter directement dans le code le format des conjugaisons (ln.50). Les variables de type dictionnaire en Python dictionarie n'ont pas été retenues à cause de questions de redondances, et qui aurait pourtant fait gagner en clarté le code.

L'on peut relever deux faiblesses de notre langage de programmation : sachant que dans Python une variable hérite des modifications d'une nouvelle affectation, l'instruction appropriée pour la neutraliser en la recopiant est copy. Elle ne fonctionne pas pour les listes imbriquées, aussi il est nécessaire de rédiger une fonction de copie "dure" des variables clone (ln.20). Secundo, remarquons la variation de syntaxe entre deux instructions des expressions régulières : '\t\*' pour compil (ln.33) et pour '\t*' pour sub (ln.34), surnommé à juste titre : backslash plague.


 2.  usage de la liste

Une fois établie, cette liste pose le traditionnel problème de la norme. L'informatique est une couche supplémentaire en la matière, et ne peut être modéré qu'en clarifiant la méthode de programmation, balisant les étapes de transformation des données et laissant l'accès libre aux sources du programme. Pour le corse, le problème s'amplifie d'une communauté de sources, lesquelles ne sont pas répertoriées. Il aurait fallu associer à chaque forme sa bibliographie, ce qui peut compliquer singulièrement notre programme, en ayant décliné quatre critères au lieu de trois. Quand bien même chaque verbe aurait été tracé, se serait posé le problème linguistique du choix de la source et celui informatique de l'exclure à convenance.

Ce type de liste se veut aiguiller une recherche sur une graphie et non servir de référence normative. Si une forme est effective, et dans la base et dans une grammaire, l'utilisateur appliquera sa propre pratique de la langue, voir sa vision de la norme. La correspondance entre cette liste et un manuel est avant tout un gage de rigueur du présent travail. Par ailleurs, il y a d'autres manières de décrire et d'enseigner la langue, comme la phonétique ou le jeu.

La finalité de la liste est de s'intégrer à un lemmatiseur, un catégoriseur, un conjugueur... d'être un outil parmi d'autres pour prolonger les mots du corse. Ainsi, une forme ne peut y être attestée, seulement éclairée. Toute écriture soucieuse d'authenticité puisant à la base se devra de retenir la problématique, en la reprenant, en adaptant son discours, ainsi pour la conjugaison en proposant un accès détaillé à l'infinitif, pour la lexicologie en multipliant les comparaisons...

Pour la rendre complète, son développement est tributaire d'un patient d'enrichissement en complétant chacun des champs. Le travail pourrait être effectué par un linguiste corsophone ou par une recherche dans une base de textes La récupération pouvant s'effectuer sur internet, avec son risque d'écueils qualitatifs.

 3.  code de flexion verbale

         

# -*- coding:cp1252 -*-

# Flexion des verbes du corse, v. 1.56, 154 verbes.
# Flexion des verbes du corse, 01.09.2005, par Vincent Comiti, http://cadrat.saynete.net , vincent@saynete.net


# Classe de traitement du corpus
class Trt_lex_initial:

    def __init__(s,cg='',fd='',fa='',ts='',rd='',std='',sta=''):
        s.conj=cg # Ensemble de la conjugaison, ex: contenu de cong_arhi
        s.frm_dep=fd # Graphème de départ pour la svucalatura
        s.frm_arr=fa # Graphème d arrivée pour la svucalatura
        s.tempu_svu=ts # Temps de conjugaison
        s.verb=rd # Lemme du verbe
        s.term_dep=std # Terminaison de départ du lemme pour la svucalatura
        s.term_arr=sta # Terminaison d arrivée du lemme pour la svucalatura

    # Fonction de copie dure (ou clonage) des variables, liste par liste    
    def clone(s):
        double=[['',['']]]
        for db in range(0,len(s.conj)-1):
            double[db:db]=[[['temp'], ['morph']]]
        for db in range(0,len(s.conj)):
            dd=s.conj[db][0]
            double[db][0]=dd[:]
            ee=s.conj[db][1]
            double[db][1]=ee[:]
        return double

    # Fonction de modification de la racine
    def svucalatura(s):
        svu_i = re.compile('\n(\w*)'+s.frm_dep+'(.{1,5})'+s.term_dep+'\t\*'+s.verb+'\t'+s.tempu_svu)
        s.conj=svu_i.sub('\n\\1'+s.frm_arr+'\\2'+s.term_arr+'\t*'+s.verb+'\t'+s.tempu_svu,s.conj)
        return s.conj


# Classe de conjugaison des verbes
class Cunghjucazione:

# Distribution des variables

    # Morphèmes de genre, nombre et personne :
    
    f0='';f1='+SG+P1';f2='+SG+P2';f3='+SG+P3';f4='+PL+P1';f5='+PL+P2';f6='+PL+P3';fms='+Mas+SG';fmp='+Mas+PL';ffs='+Fem+SG';ffp='+Fem+PL';
    tabl=''

    # Désinences :
    
    # Arhizotonique
    cong_arhi=[\
    ['Ver:IPri',['u',f1,'i',f2,'a',f3,'e',f3,'emu',f4,'imu',f4,'emi',f4,'eti',f5,'ate',f5,'anu',f6,'enu',f6,'ani',f6,'ini',f6]],\
    ['Ver:IImp',['avu',f1,'ava',f1,'aia',f1,'aiu',f1,'avi',f2,'ai',f2,'ava',f3,'ave',f3,'aia',f3,'avamu',f4,'aiami',f4,'avati',f5,'avate',f5,'aiati',f5,'avanu',f6,'avenu',f6,'aiani',f6]],\
    ['Ver:IFut',['eraghju',f1,'araghju',f1,'erai',f2,'arè',f2,'erà',f3,'arà',f3,'eremu',f4,'aremu',f4,'aremi',f4,'erete',f5,'areti',f5,'aranu',f6,'eranu',f6,'arani',f6]],\
    ['Ver:IPad',['ai',f1,'eti',f1,'asti',f2,'esti',f2,'ò',f3,'eti',f3,'aimu',f4,'etimi',f4,'aste',f5,'esti',f5,'onu',f6,'etini',f6]],\
    ['Ver:CPrp',['eria',f1,'eriu',f1,'aria',f1,'ariu',f1,'erii',f2,'eristi',f2,'arii',f2,'aristi',f2,'eria',f3,'erie',f3,'aria',f3,'eriamu',f4,'ariami',f4,'eriate',f5,'ariasti',f5,'aristi',f5,'erianu',f6,'erienu',f6,'ariani',f6]],\
    ['Ver:CPrd',['erebbi',f1,'eribbe',f1,'eresti',f2,'erebbe',f3,'eribbe',f3,'erebbimu',f4,'eribbemu',f4,'ereste',f5,'erebbenu',f6,'eribbenu',f6]],\
    ['Ver:SPri',['i',f1,'i',f2,'i',f3,'e',f3,'imu',f4,'imi',f4,'ite',f5,'iti',f5,'inu',f6,'enu',f6,'ini',f6]],\
    ['Ver:SImp',['assi',f1,'essi',f1,'assi',f2,'essi',f2,'assi',f3,'essi',f3,'assimu',f4,'essimu',f4,'essimi',f4,'assite',f5,'essite',f5,'essiti',f5,'assinu',f6,'essinu',f6,'essini',f6]],\
    ['Ver:PPas',['atu',fms,'ati',fmp,'ata',ffs,'ate',ffp]],\
    ['Ver:PPri',['endu',fms]],\
    ['Ver:GPri',['endu',fms]],\
    ['Ver:ImPr',['a',f2,'emu',f4,'emi',f4,'imu',f4,'ate',f5,'eti',f5]],\
    ['Ver:IfPr',['à',f0]],\
    ]
    
    # Arhizotonique avec variante en -eghj -ighj
    cong_arhi_eghj=Trt_lex_initial(cong_arhi).clone()
    cong_arhi_eghj[0][1][0]='eghju';cong_arhi_eghj[0][1].append('ighju');cong_arhi_eghj[0][1].append(f1)
    cong_arhi_eghj[0][1][2]='eghji';cong_arhi_eghj[0][1].append('ighji');cong_arhi_eghj[0][1].append(f2)
    cong_arhi_eghj[0][1][4]='eghja';cong_arhi_eghj[0][1][6]='eghje';cong_arhi_eghj[0][1].append('ighja');cong_arhi_eghj[0][1].append(f3)
    cong_arhi_eghj[0][1][18]='eghjanu';cong_arhi_eghj[0][1][20]='eghjenu';cong_arhi_eghj[0][1][22]='eghjani';cong_arhi_eghj[0][1][24]='eghjini';cong_arhi_eghj[0][1].append('ighjani');cong_arhi_eghj[0][1].append(f6)
    cong_arhi_eghj[6][1]=['eghji',f1,'ighji',f1,'eghji',f2,'ighji',f2,'eghji',f3,'ighji',f3,'eghje',f3,'eghjimu',f4,'eghjimi',f4,'ighjimi',f4,'eghjite',f5,'eghjiti',f5,'ighjiti',f5,'eghjinu',f6,'eghjenu',f6,'eghjini',f6,'ighjini',f6]
    cong_arhi_eghj[11][1][0]='eghja';cong_arhi_eghj[11][1].append('ighja');cong_arhi_eghj[11][1].append(f2)

    # Arhizotonique avec variante en -eghj -ighj facultatif
    cong_arhi_eghj_falc=Trt_lex_initial(cong_arhi_eghj).clone()
    cong_arhi_eghj_falc[0][1].append('u');cong_arhi_eghj_falc[0][1].append(f1)
    cong_arhi_eghj_falc[0][1].append('i');cong_arhi_eghj_falc[0][1].append(f1)
    cong_arhi_eghj_falc[0][1].append('a');cong_arhi_eghj_falc[0][1].append(f3);cong_arhi_eghj_falc[0][1].append('e');cong_arhi_eghj_falc[0][1].append(f3);
    cong_arhi_eghj_falc[0][1].append('anu');cong_arhi_eghj_falc[0][1].append(f6);cong_arhi_eghj_falc[0][1].append('enu');cong_arhi_eghj_falc[0][1].append(f6);cong_arhi_eghj_falc[0][1].append('ani');cong_arhi_eghj_falc[0][1].append(f6);cong_arhi_eghj_falc[0][1].append('ini');cong_arhi_eghj_falc[0][1].append(f6);
    cong_arhi_eghj_falc.append(['Ver:SPri'])
    cong_arhi_eghj_falc[13].append(['i',f1,'i',f2,'i',f3,'e',f3,'imu',f4,'imi',f4,'ite',f5,'iti',f5,'inu',f6,'enu',f6,'ini',f6])
    cong_arhi_eghj[11][1].append('a');cong_arhi_eghj[11][1].append(f2)

    # Arhizotonique avec variante en -g
    cong_arhi_g=Trt_lex_initial(cong_arhi).clone()
    cong_arhi_g[0][1][0]='gu';
    cong_arhi_g[6][1]=['ga',f1,'ghi',f1,'ga',f2,'ghi',f2,'ga',f3,'ghi',f3,'gamu',f4,'ghimu',f4,'gami',f4,'ghimi',f4,'gate',f5,'ghite',f5,'gati',f5,'ghiti',f5,'ganu',f6,'ghinu',f6,'gani',f6,'ghini',f6]

    # Arhizotonique avec variante soit en -g soit en -eghj
    cong_arhi_g_eghj=Trt_lex_initial(cong_arhi_eghj).clone()
    cong_arhi_g_eghj[0][1].append('gu');cong_arhi_g_eghj[0][1].append(f1);
    cong_arhi_g_eghj.append(['Ver:SPri'])
    cong_arhi_g_eghj[13].append(['ga',f1,'ghi',f1,'ga',f2,'ghi',f2,'ga',f3,'ghi',f3,'gamu',f4,'ghimu',f4,'gami',f4,'ghimi',f4,'gate',f5,'ghite',f5,'gati',f5,'ghiti',f5,'ganu',f6,'ghinu',f6,'gani',f6,'ghini',f6])
    
    # Arhizotonique à double participe passé
    cong_arhi_ppas=Trt_lex_initial(cong_arhi).clone()
    cong_arhi_ppas.append(['Ver:PPas',['u',fms,'i',fmp,'a',ffs,'e',ffp]])

    # Arhizotonique des -ì -isce
    cong_arhi_isce=[\
    ['Ver:IPri',['iscu',f1,'isci',f2,'isce',f3,'isci',f3,'imu',f4,'imi',f4,'iscimi',f4,'ite',f5,'iti',f5,'isciti',f5,'iscenu',f6,'iscini',f6]],\
    ['Ver:IImp',['iu',f1,'ia',f1,'ii',f2,'ia',f3,'iamu',f4,'iami',f4,'iimi',f4,'iate',f5,'iati',f5,'iiti',f5,'ianu',f6,'iani',f6,'iini',f6]],\
    ['Ver:IFut',['isceraghju',f1,'isicaraghju',f1,'iscerai',f2,'isciarè',f2,'iscerà',f3,'isciarà',f3,'isceremu',f4,'isciaremu',f4,'isciaremi',f4,'iscerete',f5,'isciareti',f5,'isciaranu',f6,'isceranu',f6]],\
    ['Ver:IPad',['ii',f1,'isti',f2,'ì',f3,'iimu',f4,'iimi',f4,'iste',f5,'isti',f5,'inu',f6,'ini',f6]],\
    ['Ver:CPrp',['isceria',f1,'isceriu',f1,'isciaria',f1,'isciariu',f1,'iscerii',f2,'isceristi',f2,'isciarii',f2,'isciaristi',f2,'isceria',f3,'isciaria',f3,'isceriamu',f4,'isciariami',f4,'isceriate',f5,'isceriste',f5,'isciariati',f5,'iscerianu',f6,'isceriani',f6,]],\
    ['Ver:CPrd',['iscerebbi',f1,'isceribbe',f1,'isceresti',f2,'iscerebbe',f3,'isceribbe',f3,'iscerebbimu',f4,'isceribbemu',f4,'iscereste',f5,'iscerebbenu',f6,'isceribbenu',f6]],\
    ['Ver:SPri',['isca',f1,'ischi',f1,'isca',f2,'ischi',f2,'isca',f3,'ischi',f3,'iscamu',f4,'ischimi',f4,'iscate',f5,'ischiti',f5,'iscanu',f6,'ischini',f6]],\
    ['Ver:SImp',['issi',f1,'issi',f2,'issi',f3,'issimu',f4,'issimi',f4,'issite',f5,'issiti',f5,'issinu',f6,'issini',f6]],\
    ['Ver:PPas',['itu',fms,'iti',fmp,'ita',ffs,'ite',ffp]],\
    ['Ver:PPri',['endu',fms,'indu',fms,'iscendu',fms]],\
    ['Ver:GPri',['endu',fms,'indu',fms,'iscendu',fms]],\
    ['Ver:ImPr',['isci',f2,'imu',f4,'iscimi',f4,'ite',f5,'iti',f5,'isciti',f5]],\
    ['Ver:IfPr',['ì',f0]],\
    ]

    # Arhizotonique des -ì -isce, à double participe passé
    cong_arhi_ippa=Trt_lex_initial(cong_arhi_isce).clone()
    cong_arhi_ippa.append(['Ver:IPaa'])
    cong_arhi_ippa[13].append(['si',f1,'isti',f2,'se',f3,'si',f3,'simu',f4,'simi',f4,'iste',f5,'isti',f5,'senu',f6,'sini',f6])
    cong_arhi_ippa.append(['Ver:PPas',['uttu',fms,'utti',fmp,'utta',ffs,'utte',ffp]])

    # Rhizotonique ppas en -utu
    cong_rhiz_utu=[\
    ['Ver:IPri',['u',f1,'i',f2,'e',f3,'i',f3,'emu',f4,'imu',f4,'imi',f4,'ite',f5,'iti',f5,'enu',f6,'ini',f6]],\
    ['Ver:IImp',['iu',f1,'ia',f1,'ii',f2,'ia',f3,'iamu',f4,'iami',f4,'iate',f5,'iati',f5,'ianu',f6,'iani',f6]],\
    ['Ver:IFut',['eraghju',f1,'araghju',f1,'erai',f2,'arè',f2,'erà',f3,'arà',f3,'eremu',f4,'aremu',f4,'aremi',f4,'erete',f5,'areti',f5,'eranu',f6,'arani',f6]],\
    ['Ver:IPad',['ii',f1,'isti',f2,'ì',f3,'iimu',f4,'iimi',f4,'iste',f5,'isti',f5,'inu',f6,'ini',f6]],\
    ['Ver:IPaa',['iti',f1,'eti',f1,'esti',f2,'ete',f3,'iti',f3,'eti',f3,'etimu',f4,'etimi',f4,'itimi',f4,'iste',f5,'isti',f5,'etenu',f6,'etini',f6,'itini',f6]],\
    ['Ver:CPrp',['eria',f1,'eriu',f1,'aria',f1,'ariu',f1,'erii',f2,'eristi',f2,'arii',f2,'aristi',f2,'eria',f3,'aria',f3,'eriamu',f4,'ariami',f4,'eriate',f5,'ariati',f5,'eristi',f5,'erianu',f6,'ariani',f6]],\
    ['Ver:CPrd',['erebbi',f1,'eribbe',f1,'eresti',f2,'erebbe',f3,'eribbe',f3,'erebbimu',f4,'ereste',f5,'erebbenu',f6,'eribbenu',f6]],\
    ['Ver:SPri',['i',f1,'i',f2,'i',f3,'imu',f4,'imi',f4,'ite',f5,'iti',f5,'inu',f6,'ini',f6]],\
    ['Ver:SImp',['issi',f1,'essi',f1,'issi',f2,'essi',f2,'issi',f3,'essi',f3,'issimu',f4,'essimu',f4,'issimi',f4,'essite',f5,'issite',f5,'issiti',f5,'issinu',f6,'essinu',f6,'issini',f6]],\
    ['Ver:PPas',['utu',fms,'uti',fmp,'uta',ffs,'ute',ffp]],\
    ['Ver:PPri',['endu',fms,'indu',fms]],\
    ['Ver:GPri',['endu',fms,'indu',fms]],\
    ['Ver:IfPr',['e',f0,'a',f0]],\
    ]

    # Rhizotonique ppas en -utu, infinitif en ia
    cong_rhiz_utu_ia=Trt_lex_initial(cong_rhiz_utu).clone()
    cong_rhiz_utu_ia[12][1][2]='ia';

    # Rhizotonique ppas en -itu
    cong_rhiz_itu=Trt_lex_initial(cong_rhiz_utu).clone()
    cong_rhiz_itu[9][1]=['itu',fms,'iti',fmp,'ita',ffs,'ite',ffp]

    # Rhizotonique ppas en -itu, infinitif en ia (Cogle pour Coglie)
    cong_rhiz_itu_ia=Trt_lex_initial(cong_rhiz_utu).clone()
    cong_rhiz_itu_ia[12][1][2]='ia';
    
    # Rhizotonique ppas en -tu, sur radical irrégulier,
    cong_rhiz_tu=Trt_lex_initial(cong_rhiz_utu).clone()
    del cong_rhiz_tu[9] # suppression du PPas
    cong_rhiz_tu[3][1]=['isti',f2,'iste',f5,'isti',f5]

    # Rhizotonique ppas en -tu, infinitif en ia
    cong_rhiz_tu_ia=[['Ver:Infi',['ia',f0]]]
    
    # à plusieurs graphèmes de la désinence, type assume
    cong_rhiz_desi_tu=['Ver:PPad',['si',f1,'si',f3,'se',f3,'simu',f4,'simi',f4,'senu',f6,'sini',f6]]
    cong_rhiz_tu_ppas_untu=[['Ver:PPas',['ntu',fms,'nti',fmp,'nta',ffs,'nte',ffp]],cong_rhiz_desi_tu]
    cong_rhiz_tu_ppas_eltu=[['Ver:PPas',['ltu',fms,'lti',fmp,'lta',ffs,'lte',ffp]],cong_rhiz_desi_tu]
    cong_rhiz_tu_ppas_tu=[['Ver:PPas',['tu',fms,'ti',fmp,'ta',ffs,'te',ffp]],cong_rhiz_desi_tu]
    cong_rhiz_tu_ppas_ltu=[['Ver:PPas',['ltu',fms,'lti',fmp,'lta',ffs,'lte',ffp]],cong_rhiz_desi_tu]

    # Rhizotonique ppas en -ttu, sur radical irrégulier,
    cong_rhiz_ttu=Trt_lex_initial(cong_rhiz_tu).clone()

    # Rhizotonique ppas en -ttu, type scrive, a
    cong_rhiz_tu_ppas_ttu_e=Trt_lex_initial(cong_rhiz_utu).clone()
    del cong_rhiz_tu_ppas_ttu_e[12]; # Suppr de l infi
    del cong_rhiz_tu_ppas_ttu_e[9]; # Suppr du PPas
    del cong_rhiz_tu_ppas_ttu_e[3][1][0:2];del cong_rhiz_tu_ppas_ttu_e[3][1][2:8];del cong_rhiz_tu_ppas_ttu_e[3][1][6:] # Suppr des IPad
    cong_rhiz_tu_ppas_ttu_e.append(['Ver:IfPr',['a',f0,'e',f0]])
    cong_rhiz_tu_ppas_ttu_e_ipad=[['Ver:PPad',['ssi',f1,'ssi',f3,'sse',f3,'ssimu',f4,'ssimi',f4,'ssenu',f6,'ssini',f6]]]
    cong_rhiz_tu_ppas_ttu_e_ipad.append(['Ver:PPas',['ttu',fms,'tti',fmp,'tta',ffs,'tte',ffp]])

    # Rhizotonique ppas en -ttu, type cunduce, ia
    cong_rhiz_tu_ppas_ttu_ia=Trt_lex_initial(cong_rhiz_utu).clone()
    del cong_rhiz_tu_ppas_ttu_ia[12]; # Suppr de l infi
    del cong_rhiz_tu_ppas_ttu_ia[9]; # Suppr du PPas
    del cong_rhiz_tu_ppas_ttu_ia[3][1][0:2];del cong_rhiz_tu_ppas_ttu_ia[3][1][2:8];del cong_rhiz_tu_ppas_ttu_ia[3][1][6:] # Suppr des IPad
    cong_rhiz_tu_ppas_ttu_ia.append(['Ver:IfPr',['ia',f0,'e',f0]])
    cong_rhiz_tu_ppas_ttu_ia_ipad=[['Ver:PPad',['ssi',f1,'ssi',f3,'sse',f3,'ssimu',f4,'ssimi',f4,'ssenu',f6,'ssini',f6]]]
    cong_rhiz_tu_ppas_ttu_ia_ipad.append(['Ver:PPas',['ttu',fms,'tti',fmp,'tta',ffs,'tte',ffp]])

    # Rhizotonique ppas en -ttu, régulier, type rompe, a
    cong_rhiz_tu_ppas_ttu_irre=Trt_lex_initial(cong_rhiz_utu).clone()
    del cong_rhiz_tu_ppas_ttu_irre[12]; # Suppr de l infi
    del cong_rhiz_tu_ppas_ttu_irre[9]; # Suppr du PPas
    del cong_rhiz_tu_ppas_ttu_irre[3][1][0:2];del cong_rhiz_tu_ppas_ttu_irre[3][1][2:8];del cong_rhiz_tu_ppas_ttu_irre[3][1][6:] # Suppr des IPad
    cong_rhiz_tu_ppas_ttu_irre.append(['Ver:IfPr',['a',f0,'e',f0]])
    cong_rhiz_tu_ppas_ttu_irre_ppas=[['Ver:PPas',['ttu',fms,'tti',fmp,'tta',ffs,'tte',ffp]]]

    # Rhizotonique ppas en -su, sur radical irrégulier,
    cong_rhiz_su=Trt_lex_initial(cong_rhiz_tu).clone()

    # Rhizotonique ppas en -su, type perde, a
    cong_rhiz_tu_ppas_su=Trt_lex_initial(cong_rhiz_utu).clone()
    del cong_rhiz_tu_ppas_su[12]; # Suppr de l infi
    cong_rhiz_tu_ppas_su.append(['Ver:IfPr',['a',f0,'e',f0]])
    del cong_rhiz_tu_ppas_su[9]; # Suppr du PPas
    del cong_rhiz_tu_ppas_su[3][1][0:2];del cong_rhiz_tu_ppas_su[3][1][2:8];del cong_rhiz_tu_ppas_su[3][1][6:] # Suppr des IPas
    cong_rhiz_tu_ppas_su_ipad=[['Ver:PPad',['si',f1,'si',f3,'se',f3,'simu',f4,'simi',f4,'senu',f6,'sini',f6]]]
    cong_rhiz_tu_ppas_su_ipad.append(['Ver:PPas',['su',fms,'si',fmp,'sa',ffs,'se',ffp]])

    # Rhizotonique ppas en -ssu, type mette, a
    cong_rhiz_tu_ppas_ssu=Trt_lex_initial(cong_rhiz_utu).clone()
    del cong_rhiz_tu_ppas_ssu[12]; # Suppr de l infi
    cong_rhiz_tu_ppas_ssu.append(['Ver:IfPr',['a',f0,'e',f0]])
    del cong_rhiz_tu_ppas_ssu[9]; # Suppr du PPas
    del cong_rhiz_tu_ppas_ssu[3][1][0:2];del cong_rhiz_tu_ppas_su[3][1][2:8];del cong_rhiz_tu_ppas_su[3][1][6:] # Suppr des IPad
    cong_rhiz_tu_ppas_ssu_ipad=[['Ver:PPad',['ssi',f1,'ssi',f3,'sse',f3,'ssimu',f4,'ssimi',f4,'ssenu',f6,'ssini',f6]]]
    cong_rhiz_tu_ppas_ssu_ipad.append(['Ver:PPas',['ssu',fms,'ssi',fmp,'ssa',ffs,'sse',ffp]])

    # Rhizotonique ppas en -ertu, type apre, a
    cong_rhiz_tu_ppas_ertu=Trt_lex_initial(cong_rhiz_utu).clone()
    del cong_rhiz_tu_ppas_ertu[12]; # Suppr de l infi
    cong_rhiz_tu_ppas_ertu.append(['Ver:IfPr',['a',f0,'e',f0]])
    del cong_rhiz_tu_ppas_ertu[9]; # Suppr du PPas
    cong_rhiz_tu_ppas_ertu_ppas=[['Ver:PPas',['ertu',fms,'erti',fmp,'erta',ffs,'erte',ffp,'artu',fms,'arti',fmp,'arta',ffs,'arte',ffp]]]

    # Rhizotonique infixe -g, irrégulier en -tu
    cong_rhiz_g_tu=Trt_lex_initial(cong_rhiz_utu).clone()
    del cong_rhiz_g_tu[0][1][0:2]# suppression deux premiers présent
    del cong_rhiz_g_tu[12]; # Suppr de l infi
    cong_rhiz_g_tu.append(['Ver:IfPr',['e',f0]])
    del cong_rhiz_g_tu[7]; # Suppr du subjonctif présent
    del cong_rhiz_g_tu[3][1][0:2];del cong_rhiz_g_tu[3][1][2:8];del cong_rhiz_g_tu[3][1][4:10]# suppression deux premiers IPad
    del cong_rhiz_g_tu[8]; # Suppr du PPas
    cong_rhiz_g_tu_spri=[['Ver:IPri',['u',f1]]]
    cong_rhiz_g_tu_spri.append(['Ver:PPas',['tu',fms,'ti',fmp,'ta',ffs,'te',ffp]])
    cong_rhiz_g_tu_spri.append(['Ver:SPri',['ga',f1,'ghi',f1,'ga',f2,'ghi',f2,'ga',f3,'ghi',f3,'gamu',f4,'ghimi',f4,'ghimu',f4,'gate',f5,'ghite',f5,'ghiti',f5,'ganu',f6,'ghini',f6,'ghinu',f6]])
    cong_rhiz_g_tu_spri.append(['Ver:IPad',['si',f1,'se',f2,'se',f3,'si',f3,'simu',f4,'simi',f4,'senu',f6,'sini',f6]])
    cong_rhiz_g_tu_infi=[['Ver:IfPr',['gna',f1]]]

    # Rhizotonique infixe -g, régulier
    cong_rhiz_g_reg=Trt_lex_initial(cong_rhiz_itu).clone()
    cong_rhiz_g_reg[0][1][0]='gu'; # modification présent
    cong_rhiz_g_reg[7][1]=['ga',f1,'ghi',f1,'ga',f2,'ghi',f2,'ga',f3,'ghi',f3,'gamu',f4,'ghimi',f4,'ghimu',f4,'gate',f5,'ghite',f5,'ghiti',f5,'ganu',f6,'ghini',f6,'ghinu',f6]
    del cong_rhiz_g_reg[8]; # Suppr du PPas
    cong_rhiz_g_reg.append(['Ver:IPaa',['si',f1,'isti',f2,'se',f3,'si',f3,'simu',f3,'simi',f4,'isti',f5,'sini',f6,'senu',f6]])
    cong_rhiz_g_reg.append(['Ver:PPas',['tu',fms,'ti',fmp,'ta',ffs,'te',ffp]])
    
    # Rhizotonique infixe -g, régulier en -utu
    cong_rhiz_g_reg_utu=Trt_lex_initial(cong_rhiz_g_reg).clone()
    cong_rhiz_g_reg_utu[13][1]=['utu',fms,'uti',fmp,'uta',ffs,'ute',ffp]
    cong_rhiz_g_reg_utu_ppa=[['Ver:PPas',['utu',fms,'uti',fmp,'uta',ffs,'ute',ffp]]]

    # Rhizotonique infixe -g, régulier pour crede
    cong_rhiz_g_reg_r=Trt_lex_initial(cong_rhiz_g_reg_utu).clone()
    del cong_rhiz_g_reg_r[-2];del cong_rhiz_g_reg_r[4] # Efface IPaa
    
    # Rhizotonique infixe -g, régulier en -su
    cong_rhiz_g_reg_su=Trt_lex_initial(cong_rhiz_g_reg).clone()
    cong_rhiz_g_reg_su[13][1]=['su',fms,'si',fmp,'sa',ffs,'se',ffp]
    cong_rhiz_g_reg_su[3][1]=['si',f1,'isti',f2,'se',f3,'si',f3,'simu',f3,'simi',f4,'isti',f5,'sini',f6,'senu',f6]
    del cong_rhiz_g_reg_su[-2];del cong_rhiz_g_reg_su[4] # Efface IPaa

    # Rhizotonique infixe -g, régulier en -stu
    cong_rhiz_g_reg_stu=Trt_lex_initial(cong_rhiz_g_reg).clone()
    del cong_rhiz_g_reg_stu[13];del cong_rhiz_g_reg_stu[-1];del cong_rhiz_g_reg_stu[4] # Efface IPaa et PPas
    cong_rhiz_g_reg_stu_ppa=[['Ver:PPas',['stu',fms,'sti',fmp,'sta',ffs,'ste',ffp]]]

    # Rhizotonique infixe -g et -chi, vede
    cong_rhiz_g_chi=Trt_lex_initial(cong_rhiz_utu).clone()
    del cong_rhiz_g_chi[0][1][0:2]# Suppression deux premiers présent
    del cong_rhiz_g_chi[7]; # Suppr du subjonctif présent
    del cong_rhiz_g_chi[8]; # Suppr du PPas
    cong_rhiz_g_chi_deux=[['Ver:IPri',['cu',f1]]]
    cong_rhiz_g_chi_deux.append(['Ver:PPas',['stu',fms,'sti',fmp,'sta',ffs,'ste',ffp]])
    cong_rhiz_g_chi_deux.append(['Ver:SPri',['ca',f1,'ca',f2,'ca',f3,'camu',f4,'cate',f5,'canu',f6]])
    cong_rhiz_g_chi_deux.append(['Ver:SPri',['chi',f1,'chi',f2,'chi',f3,'chimi',f4,'chiti',f5,'chini',f6]])
    cong_rhiz_g_chi_deux_i=[['Ver:SPri',['chi',f1,'chi',f2,'chi',f3,'chimi',f4,'chiti',f5,'chini',f6]]]
    cong_rhiz_g_chi_deux_i.append(['Ver:IPri',['cu',f1,'di',f2,'di',f3,'dimu',f4,'diti',f5,'dini',f6]])
    cong_rhiz_g_chi_deux_i.append(['Ver:IfPr',['da',f0]])

    # Attribution des arguments
    def __init__(s,vb='',md='',rd=-1):
        s.verb=vb # Lemme du verbe
        s.mode=md # Famille du verbe, ex: valeur cong_arhi
        s.radi=rd # Longueur du radical, tronqué de 1 par defaut
        if s.verb[s.radi-1:]=='ia' or s.verb[s.radi-1:]=='ie' or s.verb[s.radi-1:]=='ià':
            s.radi=-2
        s.radical=s.verb[0:s.radi] # Radical du verbe

    # Fonction de modification de la désinence (et alternance de la racine)
    def disinenza(s):
        exec('conjugaison=s.cong_'+s.mode)

        # formation de l étiquette
        for tp in conjugaison:
            etiquette=s.radical+'%s\t*'+s.verb+'\t'+tp[0]+'%s'
            conjug=str('\n'.join([etiquette % (tp[1][morph],tp[1][morph+1]) for morph in range(0,len(tp[1]),2)]))
            s.tabl='\n'+s.tabl+conjug+'\n'

        # svucalatura
        if s.verb[s.radi:]=='à': # pour les Arhizotoniques
            for svu in range(2,5):
                penul=['i','e','u','o']
                for pe in range(0,3,2):
                    if s.verb[-svu]==penul[pe]: # pour i et u sur la pénultième du lemme
                        s.tabl=Trt_lex_initial(s.tabl,penul[pe],penul[pe+1],'Ver:ImPr\+SG\+P2',s.verb).svucalatura()
                        s.tabl=Trt_lex_initial(s.tabl,penul[pe],penul[pe+1],'Ver:SPri',s.verb).svucalatura()
                        s.tabl=Trt_lex_initial(s.tabl,penul[pe],penul[pe+1],'Ver:SPri',s.verb,'emu','imu').svucalatura()
                        s.tabl=Trt_lex_initial(s.tabl,penul[pe],penul[pe+1],'Ver:SPri',s.verb,'emi','imi').svucalatura()
                        s.tabl=Trt_lex_initial(s.tabl,penul[pe],penul[pe+1],'Ver:SPri',s.verb,'ete','ite').svucalatura()
                        s.tabl=Trt_lex_initial(s.tabl,penul[pe],penul[pe+1],'Ver:SPri',s.verb,'eti','iti').svucalatura()
                        s.tabl=Trt_lex_initial(s.tabl,penul[pe],penul[pe+1],'Ver:SPri',s.verb,'enu','inu').svucalatura()
                        s.tabl=Trt_lex_initial(s.tabl,penul[pe],penul[pe+1],'Ver:SPri',s.verb,'eni','ini').svucalatura()
                        s.tabl=Trt_lex_initial(s.tabl,penul[pe],penul[pe+1],'Ver:IPri',s.verb).svucalatura()
                        s.tabl=Trt_lex_initial(s.tabl,penul[pe+1],penul[pe],'Ver:IPri',s.verb,'emu','imu').svucalatura()
                        s.tabl=Trt_lex_initial(s.tabl,penul[pe+1],penul[pe],'Ver:IPri',s.verb,'emi','emi').svucalatura()
                        s.tabl=Trt_lex_initial(s.tabl,penul[pe+1],penul[pe],'Ver:IPri',s.verb,'eti','eti').svucalatura()
                        s.tabl=Trt_lex_initial(s.tabl,penul[pe+1],penul[pe],'Ver:IPri',s.verb,'ate','ate').svucalatura()
                        s.tabl=Trt_lex_initial(s.tabl,penul[pe],penul[pe+1],'Ver:IPri',s.verb,'eni','eni').svucalatura()
                        s.tabl=Trt_lex_initial(s.tabl,'o','u','Ver:IPri',s.verb,'emu','imu').svucalatura()
        if s.verb[-2:]=='cà':
            s.tabl=Trt_lex_initial(s.tabl,'ci','chi','',s.verb).svucalatura()
            s.tabl=Trt_lex_initial(s.tabl,'ce','che','',s.verb).svucalatura()
            s.tabl=Trt_lex_initial(s.tabl,'','','',s.verb,'ci','chi').svucalatura()
        if s.verb[-2:]=='gà':
            s.tabl=Trt_lex_initial(s.tabl,'gi','ghi','',s.verb).svucalatura()
            s.tabl=Trt_lex_initial(s.tabl,'ge','ghe','',s.verb).svucalatura()
            s.tabl=Trt_lex_initial(s.tabl,'','','',s.verb,'gi','ghi').svucalatura()
        if conjugaison==s.cong_rhiz_tu_ppas_ertu:
            for ertu in ['rtu','rti','rta','rte']:
                s.tabl=Trt_lex_initial(s.tabl,'o','u','Ver:PPas',s.verb,ertu,ertu).svucalatura()
        if conjugaison==s.cong_rhiz_g_reg:
            s.tabl=Trt_lex_initial(s.tabl,'o','u','Ver:IPad',s.verb).svucalatura()
            s.tabl=Trt_lex_initial(s.tabl,'o','u','Ver:IPri\+PL\+P1',s.verb).svucalatura()
            s.tabl=Trt_lex_initial(s.tabl,'o','u','Ver:IPaa\+SG\+P2',s.verb).svucalatura()
            s.tabl=Trt_lex_initial(s.tabl,'o','u','Ver:IPaa\+PL\+P2',s.verb).svucalatura()
        if conjugaison==s.cong_rhiz_g_reg_utu_ppa:
            s.tabl=Trt_lex_initial(s.tabl,'e','i','Ver:PPas',s.verb).svucalatura()
        if conjugaison==s.cong_rhiz_g_reg_r:
            s.tabl=Trt_lex_initial(s.tabl,'d','r','Ver:SPri',s.verb).svucalatura()
        if conjugaison==s.cong_rhiz_g_chi_deux_i:
            s.tabl=Trt_lex_initial(s.tabl,'e','i','',s.verb).svucalatura()
        
        # nettoyage du corpus
        for n in range(10):s.tabl=s.tabl.replace('\n\n','\n')
        s.tabl=s.tabl.replace('\\+','+')
            
        return s.tabl
        
# Module des chaînes de caractère
import string
# Module des expressions régulières
import re

# Liste des verbes    
liste=[['arhi',['cantà','paghjellà','cascà','lampà','parlà','pusà','nittà','manghjà','magnà','cibà','scagnulà','pranzà','purtà','pinsà','falà','duvè','trigà']],\
['arhi_eghj',['sciaccamanà','cuntinuà','pridicà','ghjudicà','dubbità','calculà','favurizà','participà','purificà','numinà','identificà','lucalizà','qualificà','assucià','valorizà']],\
['arhi_eghj_falc',['appiccicà','trinnicà','runzicà','annannà','mursicà','liticà','sminticà','stuzzicà','luccicà','praticà','vindicà','merità','occupà','suvità','sunnià']],\
['arhi_g',['falà','minà','ghjurà','sperà','mirà','sunà','innamurà']],\
['arhi_g_eghj',['bastunà','bufunà','vutulà','suminà']],\
['arhi_ppas',['cumprà','tumbà','circà','buscà','liccà','struppià','tuccà']],\
['arhi_isce',['finì','capì','pulì']],\
['arhi_ippa',['custruì','apparì','scumparì']],\
['rhiz_utu',['vende','sparte','batte','cresce','crede','empie','sente','accunsente','accade','parte','beie']],\
['rhiz_utu_ia',['cresce']],\
['rhiz_itu',['fughje','dorme','dromma','arruste','bolle','bodda','budda','cosge']],\
['rhiz_itu_ia',['cosge']],\
['rhiz_tu',['assume','riassume','sceglie','scedda','sparghje','vince','torce','coglie','codda']],\
['rhiz_tu_ia',['vince','scegle','torce','cogle']],\
]
for variante in liste: # Appel de la procédure principale, en déroulant les verbes
    for lis in variante[1]:
        result=Cunghjucazione(lis,variante[0]).disinenza()
        print result

# Liste des verbes : Cas des PPas à taille de désinence irrégulière,
liste=[['rhiz_tu_ppas_untu',['assume','riassume'],-2],\
['rhiz_tu_ppas_tu',['sparghje'],-4],\
['rhiz_tu_ppas_tu',['vince','torce'],-2],\
['rhiz_tu_ppas_tu',['vincia','torcia'],-3],\
['rhiz_tu_ppas_ltu',['coglie','sceglie'],-4],\
['rhiz_tu_ppas_ltu',['codda','scedda'],-3],\
['rhiz_tu_ppas_ttu_e',['scrive', 'prutege'],-1],\
['rhiz_tu_ppas_ttu_e_ipad',['scrive','prutege'],-2],\
['rhiz_tu_ppas_ttu_ia',['cunduce','pruduce','elege'],-1],\
['rhiz_tu_ppas_ttu_ia_ipad',['cunduce','pruduce','elege'],-2],\
['rhiz_tu_ppas_ttu_e',['strughje','frighje','distrughje','aleghja','pruteghja'],-3],\
['rhiz_tu_ppas_ttu_e_ipad',['strughje','frighje','distrughje','aleghja','pruteghja'],-4],\
['rhiz_tu_ppas_ttu_irre',['rompe'],-1],\
['rhiz_tu_ppas_ttu_irre_ppas',['rompe'],-3],\
['rhiz_tu_ppas_su',['perde','corre','curra','rode','accende','chjode','chjuda','decide','dicida','difende','ride','tende','stende','rende'],-1],\
['rhiz_tu_ppas_su_ipad',['perde','corre','curra','rode','accende','chjode','chjuda','decide','dicida','difende','ride','tende','stende','rende'],-2],\
['rhiz_tu_ppas_su_ipad',['accende','difende','tende','stende','rende'],-3],\
['rhiz_tu_ppas_ssu',['perde','mette','permette','parmetta','rimette','scumette','move','scote'],-1],\
['rhiz_tu_ppas_ssu_ipad',['perde','mette','permette','parmetta','rimette','scumette'],-3],\
['rhiz_tu_ppas_ssu_ipad',['move','scote'],-2],\
['rhiz_tu_ppas_ertu',['apre','copre','scopre','offre','soffre'],-1],\
['rhiz_tu_ppas_ertu_ppas',['apre','copre','scopre','offre','soffre'],-2],\
['rhiz_g_tu',['pienghje','munghje','ghjunghje','cinghje','stringhje','pinghje','tinghje'],-1],\
['rhiz_g_tu_spri',['pienghje','munghje','ghjunghje','cinghje','stringhje','pinghje','tinghje'],-4],\
['rhiz_g_tu_infi',['pienghje','munghje','ghjunghje','cinghje','stringhje','pinghje','tinghje'],-5],\
['rhiz_g_reg',['more'],-1],\
['rhiz_g_reg_utu',['vene','tene','sustene','mantene'],-1],\
['rhiz_g_reg_utu_ppa',['vene','tene','sustene','mantene','crede'],-1],\
['rhiz_g_reg_r',['crede'],-1],\
['rhiz_g_reg_su',['chere'],-1],\
['rhiz_g_reg_stu',['pone'],-1],\
['rhiz_g_reg_stu_ppa',['pone'],-2],\
['rhiz_g_chi',['vede','rivede','preveda'],-1],\
['rhiz_g_chi_deux',['vede','rivede','preveda'],-2],\
['rhiz_g_chi_deux_i',['vede','rivede','preveda'],-2],\
]
for variante in liste:
    for lis in variante[1]:
        result=Cunghjucazione(lis,variante[0],variante[2]).disinenza()
        print result

         

 

 .4.    Liens

     Logiciel de conjugaison 
http://perso.orange.fr/e.garidacci/liens/sites-corses-1.htm
     Une librairie du corse, « Logos »   
http://www.logoslibrary.eu/pls/wordtc/new_wordtheque.wcom_literature.literaturea_page?lang=CO&letter=A&source=search&page=1


     Le langage Python    II.3.2.  
     Liens sur le langage Python    II.3.2.3.  

       Site       motte 0.5  
       Imprimer  
     Le code de fléchissement verbal du corse
     La liste des verbes fléchis pour le corse
     La page d’accueil
     Le sommaire des pages
     Rédaction/Publication :01.06.2005          www.cadrat.saynete.net  2003-2007