├── .editorconfig ├── .gitignore ├── Client_C11.pro ├── LICENSE ├── LISEZ-MOI.md ├── Mode_d_emploi.md ├── NOTES.md ├── NOTES_POUR_MAC.md ├── NOTES_Tagger.md ├── Publications.md ├── README.md ├── Vers_C12.md ├── bin ├── collatinus_en.qm ├── data │ ├── CatLASLA.txt │ ├── abreviations.la │ ├── assimilations.la │ ├── collatinus_en.qm │ ├── collatinus_fr.qm │ ├── contractions.la │ ├── dicos │ │ └── NOTES.md │ ├── hyphen.la │ ├── irregs.la │ ├── lem_ext.en │ ├── lem_ext.fr │ ├── lem_ext.la │ ├── lemmes.ca │ ├── lemmes.de │ ├── lemmes.en │ ├── lemmes.es │ ├── lemmes.fr │ ├── lemmes.gl │ ├── lemmes.it │ ├── lemmes.la │ ├── lemmes.pt │ ├── lucretia.txt │ ├── modeles.la │ ├── morphos.en │ ├── morphos.es │ ├── morphos.fr │ ├── morphos.k9 │ ├── parpos.txt │ └── tags.la └── doc │ ├── anatomie.html │ ├── anatomie.png │ ├── avancee.html │ ├── capturedic.png │ ├── coloriser.html │ ├── debuter.html │ ├── detach.png │ ├── dictionnaires.html │ ├── doc.css │ ├── flechir.html │ ├── index.html │ ├── lemmatiser.html │ ├── licence.html │ ├── optionslem.png │ ├── programmeurs.html │ ├── scander.html │ ├── server.html │ └── tagger.html ├── collatinus.1.gz ├── collatinus.icns ├── collatinus.ico ├── collatinus.jpg ├── collatinus.png ├── collatinus.pro ├── collatinus.qrc ├── collatinus_en.ts ├── collatinus_fr.ts ├── doc-usr ├── Exemple_liste.txt.zip ├── Makefile ├── anatomie.md ├── anatomie.png ├── avancee.md ├── capturedic.png ├── coloriser.md ├── debuter.md ├── detach.png ├── dictionnaires.md ├── doc.css ├── flechir.md ├── index.md ├── lemmatiser.md ├── licence.md ├── optionslem.png ├── programmeurs.md ├── scander.md ├── server.md └── tagger.md ├── make_dmg4mac ├── Fond_dmg.png ├── Notes.md └── Pack_Collatinus.command ├── res ├── abacus.svg ├── collatinus.css ├── collatinus.svg ├── copie.svg ├── csv.svg ├── dezoom.svg ├── dicolem.svg ├── dicolitt.svg ├── document-new.svg ├── document-open.svg ├── edit-alpha.svg ├── edit-clear.svg ├── edit-find.svg ├── gear.svg ├── help-browser.svg ├── license.txt ├── pdf.svg ├── poignee.svg ├── power.svg ├── print.svg ├── syntaxe.svg └── zoom.svg ├── src ├── ch.cpp ├── ch.h ├── client_main.cpp ├── dicos.cpp ├── dicos.h ├── flexion.cpp ├── flexion.h ├── irregs.cpp ├── irregs.h ├── lasla.cpp ├── lasla.h ├── lemCore.cpp ├── lemCore.h ├── lemmatiseur.cpp ├── lemmatiseur.h ├── lemme.cpp ├── lemme.h ├── main.cpp ├── mainwindow.cpp ├── mainwindow.h ├── maj.cpp ├── maj.h ├── modele.cpp ├── modele.h ├── mot.cpp ├── mot.h ├── scandeur.cpp ├── scandeur.h ├── src-saucisson.txt ├── tagueur.cpp └── tagueur.h └── tmp └── lemmes.fr /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | end_of_line = lf 5 | insert_final_newline = true 6 | trim_trailing_whitespace = true 7 | indent_style = space 8 | indent_size = 4 9 | charset = utf-8 10 | max_line_length = 80 11 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | bin/collatinus 2 | C*.app 3 | .* 4 | 5 | bin/data/*.bak 6 | moc 7 | 8 | # C++ objects and libs 9 | 10 | *.slo 11 | *.lo 12 | *.o 13 | *.a 14 | *.la 15 | *.lai 16 | *.so 17 | *.dll 18 | *.dylib 19 | 20 | # Qt-es 21 | 22 | /.qmake.cache 23 | /.qmake.stash 24 | *.pro.user 25 | *.pro.user.* 26 | *.qbs.user 27 | *.qbs.user.* 28 | *.moc 29 | moc_*.cpp 30 | qrc_*.cpp 31 | ui_*.h 32 | Makefile* 33 | *build-* 34 | 35 | # QtCreator 36 | 37 | *.autosave 38 | 39 | # QtCtreator Qml 40 | *.qmlproject.user 41 | *.qmlproject.user.* 42 | 43 | # QtCtreator CMake 44 | CMakeLists.txt.user 45 | bin/data/dicos/Gaffiot_2016-jun16.col 46 | bin/data/dicos/Georges_1913-avr16.col 47 | bin/data/dicos/Lewis_and_Short_1879-mai16.col 48 | bin/data/dicos/Quicherat_1836.cfg 49 | bin/data/dicos/Quicherat_1836.djvu 50 | bin/data/dicos/Quicherat_1836.idx 51 | -------------------------------------------------------------------------------- /Client_C11.pro: -------------------------------------------------------------------------------- 1 | QT += network widgets 2 | QT += core 3 | QT -= gui 4 | 5 | TARGET = Client_C11 6 | VERSION = "1.0" 7 | #CONFIG += console 8 | #CONFIG -= app_bundle 9 | CONFIG += release_binary 10 | 11 | TEMPLATE = app 12 | 13 | SOURCES += src/client_main.cpp 14 | OBJECTS_DIR= obj/ 15 | MOC_DIR = moc/ 16 | unix:!macx:DESTDIR = bin 17 | 18 | macx:{ 19 | # Commandes spéciales pour déployer l'application sur Mac. 20 | # J'ignore s'il faut l'équivalent pour Linux ou Windows. 21 | # Philippe. Octobre 2016 22 | 23 | QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.8 24 | ICON = collatinus_bw.icns 25 | 26 | deploy.commands = macdeployqt Client_C11.app 27 | QMAKE_EXTRA_TARGETS += deploy 28 | 29 | } 30 | -------------------------------------------------------------------------------- /LISEZ-MOI.md: -------------------------------------------------------------------------------- 1 | # Collatinus 2 | Sources du lemmatiseur-scandeur-analyseur morphologique latin Collatinus. 3 | Les sources de la version 10 sont sur le dépôt [collatinus-10-src](https://github.com/biblissima/collatinus-10-src). 4 | 5 | **Collatinus est une application libre, gratuite et 6 | multi-plateforme (Mac, Windows et Debian GNU/Linux), 7 | simple à installer et facile à utiliser.** 8 | 9 | **Page de présentation et téléchargement sur le site Biblissima** : [http://outils.biblissima.fr/collatinus/](http://outils.biblissima.fr/collatinus/) (exécutables disponibles pour Mac OS, GNU/Linux et Windows). 10 | 11 | Collatinus est à la fois un **lemmatiseur** et un **analyseur 12 | morphologique de textes latins** : il est capable, si on 13 | lui donne une forme déclinée ou conjuguée, de trouver 14 | quel mot il faudra chercher dans le dictionnaire pour 15 | avoir sa traduction dans une autre langue, ses 16 | différents sens, et toutes les autres données que 17 | fournit habituellement le dictionnaire. 18 | 19 | En pratique, il est utile surtout au professeur de 20 | latin, qui peut ainsi très rapidement, à partir d’un 21 | texte hors-manuel, distribuer à ses élèves un texte 22 | inédit avec son aide lexicale. Les élèves s’en servent 23 | souvent pour lire plus facilement le latin lorsque 24 | leurs connaissances lexicales et morphologiques sont 25 | encore insuffisantes. 26 | 27 | ## Principales fonctionnalités 28 | 29 | * Lemmatisation de mots latins ou d'un texte latin entier, 30 | * Traduction des lemmes grâce aux dictionnaires de 31 | latin incorporés dans l'application, 32 | * Affichage des quantités (durée longue ou brève des 33 | syllabes) et des flexions (déclinaison ou conjugaison). 34 | 35 | ## Historique 36 | 37 | Collatinus était destiné, à l'origine, à produire des 38 | documents sur papier, et c'est encore souvent dans ce 39 | but qu'il est utilisé. Il a ensuite été perfectionné 40 | pour satisfaire de nouveaux usages et besoins : 41 | 42 | 1. Disposer, lorsqu'on lit un texte latin, d'une aide 43 | lexicale et morphologique immédiate et discrète ; 44 | 2. Faire des recherches lexicales et stylistiques ; 45 | 3. Donner aux élèves des tâches d'identification, de 46 | relevé, de transformation. 47 | 48 | ## Principes de fonctionnement 49 | 50 | Contrairement à la majorité des lemmatiseurs qui 51 | utilisent une liste de formes fléchies, Collatinus 52 | utilise un lexique contenant les lemmes et les 53 | informations nécessaires pour leur flexion. L'avantage 54 | est qu'avec 11 000 lemmes, Collatinus est capable de 55 | reconnaître plus d'un demi-million de formes. L'ajout 56 | du lemme correspondant à une variante orthographique 57 | (médiévale, par exemple) permettrait également de 58 | reconnaître toutes ses formes fléchies. 59 | 60 | A partir du lemme et des désinences qui lui sont 61 | associées, Collatinus peut aussi donner des tableaux de 62 | flexion qui peuvent être utiles lors de l'apprentissage 63 | du latin. 64 | 65 | Enfin, lorsque les quantités sont connues pour le 66 | lemme, Collatinus peut scander le mot et par là même 67 | tout un texte. Lorsqu'il scande un texte, Collatinus 68 | applique les règles habituelles d'allongement et 69 | d'élision. 70 | 71 | ## Licence 72 | 73 | Ce programme est mis à disposition par Yves Ouvrard et Philippe Verkerk sous licence [GNU GPL v3](http://www.gnu.org/licenses/gpl.html). 74 | -------------------------------------------------------------------------------- /Mode_d_emploi.md: -------------------------------------------------------------------------------- 1 | # Collatinus-11, BRANCHE SERVEUR 2 | 3 | Octobre 2016 4 | 5 | ## Introduction 6 | 7 | Collatinus, dans sa forme actuelle, se prête mal à une utilisation en ligne de commande, 8 | parce qu'il doit charger beaucoup de données en mémoire au démarrage. 9 | Une façon de contourner ce problème consiste à avoir le programme qui tourne 10 | en tâche de fond (avec toutes les données chargées) et qu'en ligne de commande 11 | on n'ait qu'un client qui va interroger un serveur. Cette architecture a déjà été 12 | utilisée pour Collatinus-web où le démon avait été dérivé de la version standard. 13 | L'interrogation venait directement du PHP qui gérait la page web. 14 | L'idée est maintenant d'utiliser le même Collatinus 11 comme serveur. 15 | 16 | Une autre façon de réduire le temps de chargement est de le limiter à l'essentiel. 17 | On pourrait imaginer un Collatinus pour l'utilisation en ligne de commande 18 | qui ne chargerait que les désinences en mémoire. Dans la décomposition radical+désinence, 19 | une fois que la désinence est trouvée, le programme irait chercher dans un fichier 20 | "radices.la" si le radical correspondant existe. Cela suppose une espèce de compilation 21 | des fichiers actuels pour en tirer la liste des radicaux et la liste des formes 22 | singulières (irréguliers et formes canoniques sans désinence). Ces fichiers 23 | seront probablement beaucoup moins lisibles que les actuels lemmes.* 24 | mais ils pourraient en être tirés (c'est à dire que l'utilisateur continuerait 25 | à éditer les lemmes.* ; un utilitaire bien fait en tirerait les fichiers nécessaires). 26 | Cette approche est sûrement intéressante, mais nécessiterait une refonte 27 | complète du code : peut-être pour une version 12… 28 | 29 | Pour pouvoir converser avec le serveur, j'ai aussi écrit un client qui 30 | fonctionne en console. Il se contente de transmettre ses arguments 31 | au serveur, de récupérer la réponse et de l'afficher. 32 | La syntaxe ressemble à celle d'Unix. Par exemple : 33 | 34 | ./Client_C11 -lfr arma 35 | 36 | ## Syntaxe de la requête 37 | 38 | La syntaxe est '[cmd] [texte]' ou '[cmd] -f nom_de_fichier'. 39 | Éventuellement complétée par '-o nom_de_fichier_de_sortie'. 40 | 41 | Contrairement à l'usage Unix, on ne peut pas combiner plusieurs commandes. 42 | Si on veut obtenir, par exemple, la scansion et la lemmatisation d'un texte, 43 | il faudra envoyer deux requêtes distinctes. 44 | 45 | Par défaut (sans cmd), on obtient la scansion du texte. 46 | 47 | Les commandes possibles sont : 48 | - -s : Scansion du texte (-s1 : avec recherche des mètres). 49 | - -a : Accentuation du texte (avec options -a0..-a15). 50 | - -l : Lemmatisation du texte (avec options -l0..-l16). 51 | - -h : Lemmatisation du texte en HTML (mêmes options que -l) 52 | - -S, -A, -L, -H : Les mêmes avec Majuscules pertinentes. 53 | - -t : Langue cible pour les traductions (par exemple -tfr, -tde). 54 | - -C : Majuscules pertinentes. 55 | - -c : Majuscules non-pertinentes. 56 | - -? : Affichage de l'aide. 57 | 58 | Avec l'option '-f nom_de_fichier', c'est le contenu du fichier qui est traité. 59 | Comme le fichier est ouvert dans Collatinus, il vaut probablement mieux 60 | donner le chemin complet du fichier. Par exemple : 61 | 62 | /Users/Philippe/Documents/Virgile/Eneide1.txt 63 | 64 | Avec l'option '-o nom_de_fichier_de_sortie', le résultat de l'opération est stocké 65 | dans le fichier. Comme pour -f, il vaut mieux donner le chemin complet. 66 | 67 | ## Détails des commandes 68 | 69 | Attention, les commandes sans texte (-c, -C et -t) modifient les paramètres 70 | correspondants de l'application. L'affichage de l'aide n'affecte en rien l'application. 71 | Si un texte suit ces commandes, il est ignoré. 72 | - La langue cible : on peut changer la langue dans laquelle sont données les traductions 73 | en spécifiant l'intitulé de la langue en deux caractères. 74 | * Par exemple -tfr permet d'obtenir les traductions en français. 75 | Dans l'application, la langue-cible est également modifiée. 76 | * La commande nue, -t, ou avec un complément inconnu, -txx, donne la liste 77 | des langues disponibles (et ne modifie pas la langue dans l'application). 78 | - Majuscules pertinentes : on peut décider si Aeneas est équivalent à aeneas ou pas. 79 | En début de phrase ou de vers, la majuscule initiale n'est pas considérée 80 | comme pertinente. 81 | * -C ou -c1 : les majuscules sont respectées. 82 | * -c : les majuscules sont ignorées. 83 | 84 | Les commandes avec texte modifient temporairement les paramètres de l'application, 85 | mais les rétablissent à la fin du traitement. 86 | Les commandes -s, -a, -l et -h ont leur contrepartie en majuscule (-S, -A, -L et -H) 87 | qui considèreront que les majuscules sont pertinentes. 88 | - Scansion du texte : avec les commandes -s et -S, le texte est seulement scandé ; 89 | alors que les commandes -s1 et -S1 cherchent également les schémas métriques 90 | et font des statistiques. 91 | Attention, avec l'option 1, la réponse est en HTML avec des balises de mise en forme. 92 | - Accentuation du texte : les commandes -a et -A peuvent être suivies d'un ou deux 93 | chiffres qui définissent les options d'accentuation. 94 | Les options de groupes différents s'ajoutent (OU binaire). 95 | * Le premier groupe d'option détermine le comportement à adopter si la pénultième 96 | voyelle est commune. Ces options occupent les deux bits de poids faibles : 97 | * -a0 est équivalent à -s et retourne donc le texte scandé. 98 | Par exemple : ./Client_C11 -a0 tenebrae ==> tĕnē̆brāe 99 | * -a1 considère qu'une voyelle commune en pénultième position est accentuée. 100 | Par exemple : ./Client_C11 -a1 tenebrae ==> tenébræ (paroxyton) 101 | * -a2 considère qu'une voyelle commune en pénultième position n'est pas accentuée 102 | Par exemple : ./Client_C11 -a2 tenebrae ==> ténebræ (proparoxyton) 103 | * -a3 n'accentue pas les mots dont la pénultième est commune. 104 | * Le troisième bit (de valeur 4) permet la syllabisation des mots. 105 | Il est inactif si les deux premiers bits sont nuls. 106 | * -a5 ==> teˌnéˌbræ 107 | * -a6 ==> téˌneˌbræ 108 | * -a7 ==> teˌneˌbræ 109 | * Le quatrième bit (de valeur 8) introduit "l'exception illius" : 110 | Le latin ecclésiastique considère en effet les voyelles communes comme brèves, 111 | sauf dans le cas des génitifs en -ī̆ŭs, dont le plus fréquent est illius. 112 | La "bonne option" pour le latin ecclésiastique serait donc -a10 qui donnera : 113 | ténebræ (proparoxyton) mais illíus (paroxyton). 114 | - Lemmatisation du texte : les commandes -l, -L, -h et -H retournent l'ensemble des 115 | lemmes du texte. -L et -H considèrent les majuscules pertinentes. 116 | Les commandes -l et -L retournent l'ensemble des lemmes en texte simple, 117 | alors que -h et -H donne une réponse en HTML avec des balises de mise en forme. 118 | Ces commandes peuvent être suivies d'une option numérique de 0 à 16 et 119 | de la langue dans laquelle seront données les traductions sur deux lettres. 120 | Attention, l'ordre est imposé : la langue, si elle est donnée, vient en dernier. 121 | L'option numérique peut être omise (0 est alors la valeur par défaut). 122 | Tout comme la langue, auquel cas c'est la langue choisie dans l'appli qui 123 | est prise par défaut. Pour connaître la liste des langues disponibles, 124 | on utilisera la commande -t (voir ci-dessus). 125 | Comme pour les options de l'accentuation, les options de la lemmatisation s'ajoutent. 126 | * Bit de poids faible (de valeur 1) : détermine l'ordre des lemmes 127 | * -l0 : les lemmes sont donnés dans l'ordre du texte. 128 | * -l1 : les lemmes sont donnés dans l'ordre alphabétique. 129 | * Deuxième bit (de valeur 2) : les formes du texte 130 | * -l2 : affiche les formes du texte, avant d'en donner la lemmatisation. 131 | * -l3 : les formes du texte sont rangées en ordre alphabétique et lemmatisées. 132 | * Troisième bit (de valeur 4) : l'analyse morphologique 133 | * -l4 : associe à chaque lemmatisation les différentes analyses possibles. 134 | * -l5..7 : combinaison avec les options précédentes. 135 | * Quatrième bit (de valeur 8) : regroupe les formes non-reconnues à la fin 136 | * -l8..15 : combinaison avec les options précédentes. 137 | * -l16 est la dernière option numérique possible et n'est pas combinable : 138 | elle évalue la fréquence des lemmes dans le texte. 139 | 140 | -------------------------------------------------------------------------------- /NOTES_POUR_MAC.md: -------------------------------------------------------------------------------- 1 | # Pour une installation sur Mac 2 | 3 | Pour que Collatinus fonctionne sur Mac et que soient installés 4 | tous les fichiers nécessaires au bon endroit, 5 | il faut définir une "étape de déploiement". 6 | 7 | Dans QtCreator, il faut cliquer sur l'icône **Projets** (un livret dans la colonne 8 | de gauche). Dans le haut de la page qui s'ouvre apparaît un cadre sombre 9 | avec Qt 5.... (qui est la version de Qt que vous avez) et en dessous 10 | deux boutons "Compiler" et "Exécuter" : vous cliquez sur **Exécuter**. 11 | 12 | Dans la rubrique "Déploiement" (la première), vous faites **Ajouter l'étape Déploiement** 13 | et dans le cadre qui apparaît vous spécifiez **deploy** dans la ligne "Arguments de Make". 14 | Il vous reste à recompiler et relancer Collatinus. 15 | Vous obtiendrez ainsi une vraie appli qui peut être copiée et installée 16 | sur un autre Mac, même s'il ne dispose pas de Qt. 17 | Et avec tous les fichiers installés au bon endroit. -------------------------------------------------------------------------------- /Publications.md: -------------------------------------------------------------------------------- 1 | ## Publications 2 | 3 | 1. [Collatinus, lemmatiseur et analyseur morphologique de la langue latine.](https://www.cairn.info/revue-ela-2010-2-page-223.htm) 4 | Yves Ouvrard ; 5 | _Études de linguistique appliquée_ 2010/2 (n° **158**), pages 223 à 230 6 | 7 | 8 | 1. [Collatinus, un outil polymorphe pour l’étude du latin.](http://documents.irevues.inist.fr/handle/2042/69526) 9 | Yves Ouvrard et Philippe Verkerk ; 10 | _Archivum Latinitatis Medii Aevi - Bulletin du Cange_ (ALMA) [ISSN 0994-8090], 2014, **72**, p. 305-311 11 | 12 | 1. [L.A.S.L.A. and Collatinus: a convergence in lexica.](https://www.studiesaggilinguistici.it/index.php/ssl/article/view/275) 13 | Philippe Verkerk, Yves Ouvrard, Margherita Fantoli et Dominique Longrée ; 14 | _Studi e Saggi Linguistici_ Vol **58**, No 1 (2020) 15 | disponible aussi sur https://hal.archives-ouvertes.fr/hal-02399878 16 | 17 | 1. [Le corpus hagiographique bourguignon lemmatisé avec Collatinus 12](http://journals.openedition.org/cem/18482). Communication présentée lors de la journée d'études CBMA - Hagiographie bourguignonne 2.0 – corpus électronique et nouvelles recherches - 6 décembre 2021. Yves Ouvrard ; 18 | _Bulletin du centre d’études médiévales d’Auxerre | BUCEMA [Online], Collection CBMA, Les outils_ [ISSN 1954-3093], 2021 19 | 20 | 1. [Collatinus & Eulexis : Latin & Greek Dictionaries in the Digital Ages.](https://classics-at.chs.harvard.edu/collatinus-eulexis-latin-greek-dictionaries-in-the-digital-ages/) 21 | Yves Ouvrard et Philippe Verkerk ; 22 | _Classics@20, Digital Text Analysis of Greek and Latin sources; 23 | Methods, Tools, Perspectives._ 24 | Center for Hellenic Studies/Harvard University, 2022. 25 | Disponible aussi sur https://hal.archives-ouvertes.fr/hal-02385036 26 | 27 | 28 | ## Interventions orales 29 | 30 | * [Collatinus : Lemmatizer and morphological analyzer for Latin texts.](https://projet.biblissima.fr/fr/collatinus-lemmatizer-and-morphological-analyzer-latin-texts) 31 | Yves Ouvrard et Philippe Verkerk ; 32 | Digital Classics III: Re-thinking Text Analysis (Heidelberg 2017) 33 | 34 | 35 | * [Collatinus : Lemmatiser et analyser des textes latins](https://projet.biblissima.fr/fr/collatinus-lemmatiser-analyser-textes-latins) 36 | Yves Ouvrard et Philippe Verkerk ; 37 | Atelier "Lemmes" du consortium Cosme2 (Paris 2017) 38 | 39 | 40 | * Les Langues anciennes et L’ordinateur. 41 | Yves Ouvrard ; 42 | Autun, capitale des Langues Anciennes (Autun 2018) 43 | https://www.academia.edu/38497819/MERKENBREACK_V_GORSKY_MIEZE_P_LAMBERT_HUYGHE_U_dir_Autun_capitale_des_langues_anciennes_Actes_du_1er_rendez_vous_des_langues_anciennes_des_10_et_11_mars_2018_Autun_2019 44 | p. 91 (89 du pdf). 45 | 46 | * Collatinus and the LASLA-tagger. 47 | Philippe Verkerk et Yves Ouvrard ; 48 | Text encoding : Latinists looking for new synergies (Liège 2018) 49 | 50 | * Les développements de Collatinus pour l’analyse syntaxique, le latin médiéval et les fonctionnalités particulières du tagueur-LASLA. 51 | Yves Ouvrard et Philippe Verkerk ; 52 | Atelier 3 du groupe Lemmes de Cosme2 (IRHT Paris 2018) 53 | 54 | * Collatinus et Eulexis : Lemmatiser des textes Latins et Grecs. 55 | Table ronde “Les langues anciennes et les outils du numérique”, 56 | Philippe Verkerk ; 57 | Autun, capitale des Langues Anciennes (Autun 2019) 58 | 59 | * Collatinus: A New Tool for Latinists. 60 | Philippe Verkerk et Yves Ouvrard ; 61 | [First LiLa Workshop: Linguistic Resources & NLP Tools for Latin (Milan 2019)](https://lila-erc.eu/1st-lila-ws) 62 | 63 | * Installation, prise en main et utilisation de Collatinus. Lemmatiseur et 64 | analyseur morphologique de textes latins. 65 | Yves Ouvrard et Philippe Verkerk ; 66 | Journée d’initiation à la lemmatisation des textes médiévaux (groupe Lemmes de Cosme2 IRHT Paris 2019) 67 | 68 | * Présentation de Collatinus. 69 | Philippe Verkerk ; 70 | Synergy Collatinus_LASLA - SyntIA - Hyperbase (Liège 2021) 71 | 72 | 73 | ## Présentations par affiche 74 | 75 | Les Rendez-vous de l'histoire de Blois (Blois 2015) 76 | [Poster sur Collatinus 10.2](https://projet.biblissima.fr/fr/collatinus-lemmatiseur-analyseur-morphologique-textes-latins) 77 | présenté également lors de la 78 | Première journée d’études Humanités numériques à l’EPHE (EPHE, Paris 2015) 79 | 80 | 81 | 82 | 83 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Collatinus 11 2 | 3 | The currently availlable version is the version 11.2, from the "Medieval" branch. 4 | 5 | Sources of Collatinus software, the Latin lemmatizer, morphological analyzer and scansion tool. 6 | Sources of version 10 are available on [collatinus-10-src](https://github.com/biblissima/collatinus-10-src). 7 | 8 | **Collatinus is a free, open source and multi-OS software (Mac, Windows et Debian GNU/Linux), that is easy to install and use.** 9 | 10 | **Download page on the Biblissima website**: [http://outils.biblissima.fr/en/collatinus/](http://outils.biblissima.fr/en/collatinus/) (binaries available for Mac OS, GNU/Linux and Windows). 11 | 12 | Collatinus is both a **lemmatiser** and a **morphological analyser for Latin texts**: if a conjugated or declined form of a word is entered, it is capable of finding the correct root word to search for in the dictionary and then displaying its translation into another language, its different meanings, and any other information usually found in dictionaries. 13 | 14 | In practice, Collatinus will be useful mostly for Latin teachers and professors who can quickly generate a complete lexical aid for any text and distribute it to their students. Students often use Collatinus as a reference when reading Latin texts, as they develop their vocabulary and language skills. 15 | 16 | ## Main features 17 | 18 | * lemmatise a Latin word or a full Latin text 19 | * translate lemmas using the Latin dictionaries included in the application 20 | * display syllable quantities (long and short syllables) and inflection (declension and conjugation) 21 | 22 | ## Project History 23 | 24 | Originally, Collatinus was meant to produce printed documents, and it is still used for this purpose. Further improvements and adjustments were made when it became apparent that many people were using it for other purposes: 25 | 26 | 1. as a lexical and morphological reference when reading a Latin text disposer, 27 | 2. for lexical and stylistic searches, 28 | 3. to provide students with exercises based on Latin texts. 29 | 30 | 31 | ## How it Works 32 | 33 | Unlike the majority of lemmatisers, which use lists of inflected forms, Collatinus uses a lexicon containing the lemmas and all the necessary information for their inflection. The advantage to this approach is that Collatinus, with its 11,000 lemmas, is capable of recognising over half a million forms. Adding lemmas with spelling variants (such as medieval spellings, for example) would make it possible to recognise all of their inflected forms as well. 34 | 35 | Starting from a lemma and its associated flexional endings, Collatinus is also capable of displaying the corresponding inflection tables, which Latin learners may find useful. 36 | 37 | Finally, when syllable quantities are known for a given lemma, Collatinus can scan the word and even the entire text. When scanning a text, Collatinus applies the usual rules of elision and hiatus. 38 | 39 | ## Documentation 40 | The help pages of Collatinus are also available on the 41 | [web site of Biblissima](https://outils.biblissima.fr/fr/collatinus/aide/). 42 | 43 | The technical documentation collected with [Doxygen](https://www.doxygen.nl/index.html) 44 | can be found on the [web site of Biblissima](https://outils.biblissima.fr/fr/collatinus/doc/). 45 | Of course, any developer can collect it also from the sources. 46 | 47 | ## Licence 48 | 49 | Collatinus is developed and maintained by Yves Ouvrard and Philippe Verkerk. It is made available under the [GNU GPL v3](http://www.gnu.org/licenses/gpl.html) licence. 50 | -------------------------------------------------------------------------------- /bin/collatinus_en.qm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/biblissima/collatinus/560ef2d9afceb69157f9a950f9897f552f018d81/bin/collatinus_en.qm -------------------------------------------------------------------------------- /bin/data/CatLASLA.txt: -------------------------------------------------------------------------------- 1 | inv 2 | isaac 3 | uita,A1 4 | epulae,A1 5 | leda,A1 6 | roma,A1 7 | aeneas,A7 8 | cometes,A7 9 | cybele,A7 10 | dea,A1 11 | lupus,A2 12 | samus,A2 13 | liberi,A2 14 | deus,A2 15 | filius,A2 16 | perseus,A7 17 | delos,A7 18 | templum,A2 19 | arpinum,A2 20 | castra,A2 21 | virus,A2 22 | ilion,A7 23 | puer,A2 24 | ager,A2 25 | miles,A3 26 | honor,A3 27 | aer,A3 28 | tethys,A3 29 | opes,A3 30 | dos,A3 31 | corpus,A3 32 | ciuis,A3 33 | thales,A7 34 | poesis,A7 35 | manes,A3 36 | turris,A3 37 | uis,A3 38 | nauis,A3 39 | apis,A3 40 | mare,A3 41 | moenia,A3 42 | animal,A3 43 | mille,A3 44 | manus,A4 45 | acus,A4 46 | lacus,A4 47 | domus,A4 48 | cornu,A4 49 | res,A5 50 | abraham,C7 51 | jesus,C7 52 | doctus,C1 53 | deni,C1 54 | multus,C1 55 | nonus,C1 56 | deterior 57 | unus,C1 58 | alter,C1 59 | unusquisque 60 | aureus,C1 61 | meus,C1 62 | artios,C1 63 | duo,C1 64 | miser,C1 65 | pulcher,C1 66 | fortis,C4 67 | infans,C3 68 | acer,C2 69 | diues,C2 70 | plus,C2 71 | uetus,C5 72 | pronom 73 | prcum 74 | is 75 | idem 76 | hic 77 | ipse 78 | ille 79 | qui 80 | quicumque 81 | qualiscumque 82 | quantuscumque 83 | quidam 84 | quilibet 85 | quinam 86 | quiuis 87 | quis 88 | siquis 89 | quisnam 90 | quispiam 91 | quisquam 92 | quisque 93 | quisquis 94 | ego 95 | nos 96 | uos 97 | se 98 | tu 99 | uter 100 | uterque 101 | nemo 102 | plerique 103 | amo,B1 104 | do,B1 105 | moneo,B2 106 | licet,B2 107 | lego,B3 108 | fero,B3 109 | aio,B3 110 | dico,B3 111 | uolo,B3 112 | nolo,B3 113 | edo,B3 114 | capio,B5 115 | facio,B5 116 | audio,B4 117 | fio,B4 118 | sum,B6 119 | possum,B6 120 | prosum,B6 121 | imitor,B1 122 | uereor,B2 123 | sequor,B3 124 | patior,B5 125 | morior,B5 126 | potior,B4 127 | eo,B6 128 | adv,M 129 | adve,M 130 | advr,M 131 | fortiter,M 132 | acriter,M 133 | misere,M 134 | humiliter,M 135 | facile,M 136 | -------------------------------------------------------------------------------- /bin/data/abreviations.la: -------------------------------------------------------------------------------- 1 | ! abreviations.la 2 | !Latin 3 | ! Version 1 : 2018/08/13 4 | !This file is part of COLLATINUS and PRAELECTOR 5 | !COLLATINUS and PRAELECTOR are free software; you can 6 | !redistribute it and/or modify it under the terms of 7 | !the GNU General Public License as published by the Free 8 | !Software Foundation; either version 2 of the License, 9 | !or (at your option) any later version. 10 | ! 11 | !COLLATINUS is distributed in the hope that it will be useful, 12 | !but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | !MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | !GNU General Public License for more details. 15 | ! 16 | !You should have received a copy of the GNU General Public License 17 | !along with COLLATINUS; if not, write to the Free Software 18 | !Foundation, Inc., 59 Temple Place, Suite 3inv, Boston, MA 02111-1307 USA 19 | !© Philippe Verkerk, 2011 - 2018 20 | ! 21 | Agr 22 | Ap 23 | A 24 | K 25 | D 26 | F 27 | C 28 | Cn 29 | Kal 30 | L 31 | Mam 32 | M' 33 | M 34 | N 35 | Oct 36 | Opet 37 | Post 38 | Pro 39 | P 40 | Q 41 | Sert 42 | Ser 43 | Sex 44 | S 45 | St 46 | Ti 47 | T 48 | V 49 | Vol 50 | Vop 51 | Pl 52 | Cap 53 | Kalen 54 | -------------------------------------------------------------------------------- /bin/data/assimilations.la: -------------------------------------------------------------------------------- 1 | ! assimilations.la 2 | ! 3 | ādc:ācc 4 | ādf:āff 5 | ādg:āgg 6 | ādl:āll 7 | ādn:ānn 8 | ādp:āpp 9 | ādq:ācq 10 | ādr:ārr 11 | ādst:āst 12 | ādsc:āsc 13 | ādsp:āsp 14 | āds:āss 15 | ādt:ātt 16 | āps:ābs 17 | cōnb:cōmb 18 | cōnl:cōll 19 | cōnm:cōmm 20 | cōnp:cōmp 21 | cōnr:cōrr 22 | ēxs:ēx 23 | īnb:īmb 24 | īnl:īll 25 | īnm:īmm 26 | īnp:īmp 27 | īnr:īrr 28 | ōbc:ōcc 29 | ōbf:ōff 30 | ōbp:ōpp 31 | ōbt:ōpt 32 | ōps:ōbs 33 | sūbc:sūcc 34 | sūbf:sūff 35 | sūbg:sūgg 36 | sūbm:sūmm 37 | sūbp:sūpp 38 | sūpt:sūbt 39 | -------------------------------------------------------------------------------- /bin/data/collatinus_en.qm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/biblissima/collatinus/560ef2d9afceb69157f9a950f9897f552f018d81/bin/data/collatinus_en.qm -------------------------------------------------------------------------------- /bin/data/collatinus_fr.qm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/biblissima/collatinus/560ef2d9afceb69157f9a950f9897f552f018d81/bin/data/collatinus_fr.qm -------------------------------------------------------------------------------- /bin/data/contractions.la: -------------------------------------------------------------------------------- 1 | ! contractions.la 2 | ! 3 | aram:averam 4 | arant:averant 5 | aras:averas 6 | arat:averat 7 | arim:averim 8 | arimus:averimus 9 | arint:averint 10 | aris:averis 11 | arit:averit 12 | aritis:averitis 13 | aro:avero 14 | arunt:averunt 15 | assem:avissem 16 | assemus:avissemus 17 | assent:avissent 18 | asses:avisses 19 | asset:avisset 20 | assetis:avissetis 21 | !ast:a 22 | asti:avisti 23 | astis:avistis 24 | eram:everam 25 | eras:everas 26 | erat:everat 27 | eramus:everamus 28 | eratis:everatis 29 | erant:everant 30 | erim:everim 31 | eris:everis 32 | erit:everit 33 | erimus:everimus 34 | eritis:everitis 35 | erint:everint 36 | erunt:everunt 37 | esse:evisse 38 | esti:evisti 39 | estis:evistis 40 | !umst:um 41 | uom:uum 42 | !ust:us 43 | -------------------------------------------------------------------------------- /bin/data/dicos/NOTES.md: -------------------------------------------------------------------------------- 1 | Sous-dossier qui contiendra les dicos 2 | -------------------------------------------------------------------------------- /bin/data/irregs.la: -------------------------------------------------------------------------------- 1 | ! irregs.la 2 | ! 3 | !This file is part of COLLATINUS. 4 | !COLLATINUS is free software; you can redistribute it and/or modify 5 | !it under the terms of the GNU General Public License as published by 6 | !the Free Software Foundation; either version 2 of the License, or 7 | !(at your option) any later version. 8 | ! 9 | !COLLATINUS is distributed in the hope that it will be useful, 10 | !but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | !MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | !GNU General Public License for more details. 13 | ! 14 | !You should have received a copy of the GNU General Public License 15 | !along with COLLATINUS; if not, write to the Free Software 16 | !Foundation, Inc., 59 Temple Place, Suite 3inv, Boston, MA 02111-1307 USA 17 | ! (c) © Yves Ouvrard, 2011 - 2016 18 | !========================================================================= 19 | ! format :canon:forme avec quantités:liste de morphos entre virgules 20 | ! Les irréguliers exclusifs sont marqués d'un * 21 | ! 22 | !Aenĕădūm:Aeneades:10 23 | ălĭŭd*:alius:37-39 24 | āccēstĭs:accedo:143 25 | āmbō̆*:ambo:19,20,43-45 26 | āmbŏbŭs*:ambo:17,18,29,30,47,48 27 | bōbŭs*:bos:11,12 28 | būbŭs*:bos:11,12 29 | bŏŭm:bos:10 30 | cāelōs:caelum:9 31 | cĕlĕrī:celer:18,30,42 32 | cōmplūră:complures:43,45 33 | cōrdĭŭm:cor:10 34 | Dănăŭm:Danai:10 35 | dĕŭm:deus:10 36 | dīspĕrĭĕt:dispereo:135 37 | dĭūtīssĭmē:diu:412 38 | dĭūtĭŭs:diu:411 39 | dīvŏm:deus:10 40 | dīvŭm:deus:10 41 | !dūc*:duco:181 42 | ēssĕ*:edo:187 43 | ēxēssĕ*:exedo:187 44 | ēxĭēs:exeo:134 45 | ēxĭĕt:exeo:135 46 | !făc*:facio:181 47 | fērrĭs:fero:268 48 | ! Pourquoi fero, qui a un modèle, a-t-il un irrégulier ? 49 | fŏrĕm:sum:163 50 | fŏrĕs:sum:164 51 | fŏrĕt:sum:165 52 | fŏrēnt:sum:168 53 | Ĭēsūs:Iesus:1 54 | īpsŭd:ipse:37,39 55 | mēmēntō:memini:183 56 | mī:meus:2 57 | nōssĕ:nosco:188 58 | nōrās:nosco:146 59 | nōrī̆s:nosco:152,170 60 | nōstī:nosco:140 61 | nōstĭs:nosco:143 62 | ōssĭŭm:os:10 63 | Phrўgās:Phryx:9 64 | plūrĭŭm*:plus:22,34,46 65 | plūs*:multus:49,50,61,62,73,74,75 66 | prāetĕrĭĕt:praetereo:135 67 | prōbĕăt:prohibeo:159 68 | quāesĭmūs:quaeso:123 69 | quāesŭmūs:quaeso:123 70 | quīcquăm:quisquam:13,37,39 71 | !quīdvīs:quiuis:37,39 72 | rēquĭĕm:requies:3 73 | rūrī:rus:413 74 | sīquī:siqui:13 75 | tīgrĭm:tigris:3 76 | trānsĭēs:transeo:134 77 | trānsĭĕt:transeo:135 78 | vōlgūm:uulgus:10 79 | vŏlūcrŭm:uolucris:10 80 | ! respublica 81 | rēmpūblĭcăm*:respublica:3 82 | rĕīpūblĭcāe*:respublica:4,5 83 | rēpūblĭcā*:respublica:6 84 | rērūmpūblĭcārŭm*:respublica:10 85 | rēbūspūblĭcīs*:respublica:11,12 86 | ! jusjurandum 87 | jūrīsjūrāndī*:iusiurandum:4 88 | jūrījūrāndō*:iusiurandum:5 89 | jūrējūrāndō*:iusiurandum:6 90 | jūrājūrāndă*:iusiurandum:7-9 91 | jūrūmjūrāndōrŭm*:iusiurandum:10 92 | jūrĭbūsjūrāndīs*:iusiurandum:11,12 93 | ! ususfructus 94 | ūsŭmfrūctŭm*:ususfructus:3 95 | ūsūsfrūctūs*:ususfructus:4,7-9 96 | ūsŭīfrūctŭī*:ususfructus:5 97 | ūsūfrūctū*:ususfructus:6 98 | ūsŭŭmfrūctŭŭm*:ususfructus:10 99 | ūsĭbŭsfrūctĭbŭs*:ususfructus:11,12 100 | -------------------------------------------------------------------------------- /bin/data/lucretia.txt: -------------------------------------------------------------------------------- 1 | Lucretia 2 | 3 | forte potantibus his apud Sex. Tarquinium, ubi et 4 | Collatinus cenabat Tarquinius, Egeri filius, incidit de 5 | uxoribus mentio. suam quisque laudare miris modis; inde 6 | certamine accenso Collatinus negat uerbis opus esse; 7 | paucis id quidem horis posse sciri quantum ceteris 8 | praestet Lucretia sua. 'quin, si uigor iuuentae inest, 9 | conscendimus equos inuisimusque praesentes nostrarum 10 | ingenia ? id cuique spectatissimum sit quod necopinato 11 | uiri aduentu occurrerit oculis.' incaluerant uino; "age 12 | sane" omnes; citatis equis auolant Romam. quo cum 13 | primis se intendentibus tenebris peruenissent, pergunt 14 | inde Collatiam, ubi Lucretiam haudquaquam ut regias 15 | nurus, quas in conuiuio luxuque cum aequalibus uiderant 16 | tempus terentes sed nocte sera deditam lanae inter 17 | lucubrantes ancillas in medio aedium sedentem 18 | inueniunt. muliebris certaminis laus penes Lucretiam 19 | fuit. adueniens uir Tarquiniique excepti benigne; 20 | uictor maritus comiter inuitat regios iuuenes. ibi Sex. 21 | Tarquinium mala libido Lucretiae per uim stuprandae 22 | capit; cum forma tum spectata castitas incitat. et tum 23 | quidem ab nocturno iuuenali ludo in castra redeunt. 24 | paucis interiectis diebus Sex. Tarquinius inscio 25 | Collatino cum comite uno Collatiam uenit. ubi exceptus 26 | benigne ab ignaris consilii cum post cenam in hospitale 27 | cubiculum deductus esset, amore ardens, postquam satis 28 | tuta circa sopitique omnes uidebantur, stricto gladio 29 | ad dormientem Lucretiam uenit sinistraque manu mulieris 30 | pectore oppresso "tace, Lucretia" inquit; "Sex. 31 | Tarquinius sum; ferrum in manu est; moriere, si 32 | emiseris uocem." cum pauida ex somno mulier nullam 33 | opem, prope mortem imminentem uideret, tum Tarquinius 34 | fateri amorem, orare, miscere precibus minas, uersare 35 | in omnes partes muliebrem animum. ubi obstinatam 36 | uidebat et ne mortis quidem metu inclinari, addit ad 37 | metum dedecus: cum mortua iugulatum seruum nudum 38 | positurum ait, ut in sordido adulterio necata dicatur. 39 | quo terrore cum uicisset obstinatam pudicitiam uelut ui 40 | uictrix libido, profectusque inde Tarquinius ferox 41 | expugnato decore muliebri esset, Lucretia maesta tanto 42 | malo nuntium Romam eundem ad patrem Ardeamque ad uirum 43 | mittit, ut cum singulis fidelibus amicis ueniant; ita 44 | facto maturatoque opus esse; rem atrocem incidisse. 45 | Sp. Lucretius cum P. Valerio Volesi filio, Collatinus 46 | cum L. Iunio Bruto uenit, cum quo forte Romam rediens 47 | ab nuntio uxoris erat conuentus. Lucretiam sedentem 48 | maestam in cubiculo inueniunt. aduentu suorum lacrimae 49 | obortae, quaerentique uiro "satin salue ?" "minime" 50 | inquit; "quid enim salui est mulieri amissa pudicitia ? 51 | uestigia uiri alieni, Collatine, in lecto sunt tuo; 52 | ceterum corpus est tantum uiolatum, animus insons; mors 53 | testis erit. sed date dexteras fidemque haud impune." 54 | 55 | Liv., I, 58 56 | -------------------------------------------------------------------------------- /bin/data/parpos.txt: -------------------------------------------------------------------------------- 1 | ! parpos.txt 2 | ! 3 | !This file is part of COLLATINUS. 4 | !COLLATINUS is free software; you can redistribute it and/or modify 5 | !it under the terms of the GNU General Public License as published by 6 | !the Free Software Foundation; either version 2 of the License, or 7 | !(at your option) any later version. 8 | ! 9 | !COLLATINUS is distributed in the hope that it will be useful, 10 | !but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | !MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | !GNU General Public License for more details. 13 | ! 14 | !You should have received a copy of the GNU General Public License 15 | !along with COLLATINUS; if not, write to the Free Software 16 | !Foundation, Inc., 59 Temple Place, Suite 3inv, Boston, MA 02111-1307 USA 17 | ! (c) © Yves Ouvrard, 2011 - 2016 18 | ! 19 | ^di$;dī 20 | ^do$;dō 21 | ^no$;nō 22 | ^sto$;stō 23 | ^pro$;prō 24 | ^quo$;quō 25 | ! ramismes 26 | (^i([aāăeēĕiīĭoōŏuūŭ][^\W]);j\1 27 | (^u([aāăeēĕiīĭoōŏuūŭ]);v\1 28 | (^|[aāăeēĕoōŏ]|^in|^ad|^per)i([aāăeēĕiīĭoōŏuŭū]);\1j\2 29 | (^|[aāăeēĕiīĭoōŏ]|[io]n|ad|per)u([aāăeēĕiīĭoōŏuŭū]);\1v\2 30 | (j[uŭū])u([aaāăeēĕiīĭoōŏ]);\1v\2 31 | (^|[\\w]+r)u([aeiou]);\1v\2 32 | ^u[aāăeēĕiīĭoōŏ]+;v 33 | iv;īv 34 | ! DIPHTONGUES 35 | ! a[eēĕ];æ 36 | [aā]e;ǣ 37 | ! a[uūŭ];ů 38 | [aā]u;ů 39 | ! o[eēĕ];œ 40 | [oō]e;œ 41 | ! e[uūŭ];ø 42 | [eē]u;ø 43 | ! POSITION 44 | a([aāăēĕiīĭoōŏūŭǣœůø]);ă\1 45 | prǣ([aāăēĕiīĭoōŏūŭ]);præ\1 46 | e([aāăiīĭoōŏūŭǣœůø]);ĕ\1 47 | i([aāăeēĕiīĭoōŏuūŭǣœůø]);ĭ\1 48 | o([aāăēĕiīĭoōŏuūŭǣœůø]);ŏ\1 49 | ([^qQgG])u([eēĕiīĭ]);\1ŭ\2 50 | ([^qQ])u([aāăoōŏuūŭǣœůø]);\1ŭ\2 51 | y([aāăeēĕiīĭoōŏuūŭǣœůø]);ў\1 52 | a(h[aāăiīĭoōŏūŭǣœůø]);ă\1 53 | e(h[aāăoōŏūŭǣœůø]);ĕ\1 54 | i(h[aāăeēĕiīĭoōŏūŭǣœůø]);ĭ\1 55 | o(h[aāăiīĭoōŏūŭǣœůø]);ŏ\1 56 | u(h[aāăeēĕiīĭoōŏǣœůø]);ŭ\1 57 | a([klmnrs][lr]);ā\1 58 | e([klmnrs][lr]);ē\1 59 | i([klmnrs][lr]);ī\1 60 | o([klmnrs][lr]);ō\1 61 | u([klmnrs][lr]);ū\1 62 | y([klmnrs][lr]);ȳ\1 63 | [aă]([bcdfgklmnprst][bcdfgjkmnpqstvxz]);ā\1 64 | [eĕ]([bcdfgklmnprst][bcdfgjkmnpqstvxz]);ē\1 65 | [iĭ]([bcdfgklmnprst][bcdfgjkmnpqstvxz]);ī\1 66 | [oŏ]([bcdfgklmnprst][bcdfgjkmnpqstvxz]);ō\1 67 | [uŭ]([bcdfgklmnprst][bcdfgjkmnpqstvxz]);ū\1 68 | [yў]([bcdfgklmnprst][bcdfgjkmnpqstvxz]);ȳ\1 69 | a([jzx]);ā\1 70 | e([jzx]);ē\1 71 | i([jzx]);ī\1 72 | o([jzx]);ō\1 73 | u([jzx]);ū\1 74 | y([jzx]);ȳ\1 75 | ! e[eēĕ];ē 76 | ! VOYELLES COMMUNES 77 | [aă]([bcdfgpt][lr]);ā̆\1 78 | [eĕ]([bcdfgpt][lr]);ē̆\1 79 | [iĭ]([bcdfgpt][lr]);ī̆\1 80 | [oŏ]([bcdfgpt][lr]);ō̆\1 81 | [uŭ]([bcdfgpt][lr]);ū̆\1 82 | [yў]([bcdfgpt][lr]);ȳ̆\1 83 | ! reDIPHTONGUES 84 | ǣ;āe 85 | æ;ăe 86 | ů;āu 87 | œ;ōe 88 | ø;ēu 89 | [ēe][uŭū]s$;ēus 90 | -------------------------------------------------------------------------------- /bin/doc/anatomie.html: -------------------------------------------------------------------------------- 1 | 2 |

Collatinus 11 — guide

3 | 4 |

Précédent : index suivant : Pour débuter

5 | 6 |

Fenêtres, éditeurs et boutons

7 | 8 |

Voici une vue générale de l'interface de Collatinus :

9 | 10 |

Interface de Collatinus

11 | 12 |

Les onglets de la partie inférieure peuvent être 13 | déplacés et redimensionnés :

14 | 15 |

Lemmatisation détachée

16 | 17 |

Une description complète de l'utilisation des dictionnaires est donnée 18 | au chapitre dictionnaires.

19 | 20 |

Précédent : index suivant : Pour débuter

21 | -------------------------------------------------------------------------------- /bin/doc/anatomie.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/biblissima/collatinus/560ef2d9afceb69157f9a950f9897f552f018d81/bin/doc/anatomie.png -------------------------------------------------------------------------------- /bin/doc/avancee.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |

Collatinus 11 — guide

4 | 5 |

index précédent : Serveur suivant : Pour les programmeurs

6 | 7 |

Utilisation avancée

8 | 9 |
Pour faire son travail, Collatinus s'appuie sur une
 10 | collection de fichiers qui contiennent toutes les
 11 | connaissances nécessaires. À l'initialisation du
 12 | programme, ils sont tous lus, et les données mises
 13 | en listes et placées en mémoire vive.
 14 | 
15 | 16 |

Si on remarque une erreur ou une lacune dans ses 17 | résultats, et qu'on a des connaissances suffisantes en 18 | gestion et édition de fichiers, on peut commencer à les 19 | modifier. Il faut bien sûr prendre des précaution, 20 | notamment en prenant soin de faire une copie de 21 | sauvegarde avant toute intervention : on crée un 22 | répertoire dont on note bien le chemin, et on y copie 23 | les fichiers qu'on a l'intention de modifier. On peut 24 | ainsi, en cas d'échecs, les rétablir dans leur état 25 | initial.

26 | 27 |

Les fichiers les plus importants sont détaillés ci-dessous.

28 | 29 |

Le fichier morphos.la

30 | 31 |

C'est un simple fichier dans lequel sont toutes les 32 | morphologies possibles que peuvent prendre les formes 33 | latines. Ainsi pour désigner une morphologie, on donne 34 | le numéro de la ligne où elle se trouve. Par exemple, 35 | la morphologie 36 | vocatif masculin singulier participe présent actif est 37 | désignée par le nombre 190.

38 | 39 |

le fichier modeles.la

40 | 41 |

C'est de loin le plus important. Y sont placés tous les 42 | modèles de flexion.

43 | 44 |

Un modèle est un ensemble de lignes. Chaque modèle est séparé 45 | du précédent par une ligne vide.

46 | 47 |

Une ligne commençant par un point d'exclamation est un 48 | commentaire. Lors de sa lecture, Collatinus n'en tient 49 | pas compte.

50 | 51 |

Chaque ligne est bâtie sur le schéma clé:valeur 52 | Tout ce qui précède le premier caractère deux 53 | points est la clé, le reste est la valeur. 54 | La première clé doit être le nom du modèle. L'ordre 55 | dans lequel apparaissent les autres clés n'a pas 56 | d'importance, mais mieux vaut rester cohérent et garder 57 | la même disposition.

58 | 59 |

Les clés

60 | 61 | 89 | 90 | 91 |

Les variables

92 | 93 |

Comme les mêmes séries de désinences sont souvent utilisées de nombreuses fois par 94 | des modèles et des radicaux différents, on peut mettre ces séries en variables. Ainsi, 95 | pour le modèle uita. Au lieu d'écrire :

96 | 97 |
modele:uita
 98 | R:1:1,0
 99 | des:1-12:1:ă;ă;ăm;āe;āe;ā;āe;āe;ās;ārum;īs;īs
100 | 
101 | 102 |

On définit une variable de cette manière :

103 | 104 |
$<variable>:<valeurs>
105 | 
106 | 107 |

Par exemple, pour définir la variable uita :

108 | 109 |
$uita=ă;ă;ăm;āe;āe;ā;āe;āe;ās;ārum;īs;īs
110 | 
111 | 112 |

et la définition du modèle deviendra :

113 | 114 |
modele:uita
115 | R:1:1,0
116 | des:1-12:1:$uita
117 | 
118 | 119 |

La variable $uita peut être utilisée pour le participe parfait :

120 | 121 |
modele:amo
122 | (radicaux, autres désinences)
123 | des:315-326:2:$uita
124 | 
125 | 126 |

Le fichier lemmes.la

127 | 128 |

C'est un gros fichier qui donne tous les mots latins, leur modèle, 129 | leurs radicaux, et les indications morphologiques qui 130 | apparaîtront dans l'analyse.

131 | 132 |

Chaque lemme occupe une seule ligne. Six champs sont séparés par 133 | le caractère | : 134 |

  1. la forme canonique du lemme ; si le dictionnaire 135 | n'en donne pas toutes les quantités, on la réécrit 136 | entièrement mesurée après le signe =.
  2. 137 |
  3. son modèle, pris dans le fichier modeles.la ;
  4. 138 |
  5. s'il n'est pas défini par modeles.la, son radical de 139 | génitif, ou d'infectum pour les verbes ;
  6. 140 |
  7. s'il n'est pas défini par modeles.la, son radical de 141 | perfectum ;
  8. 142 |
  9. ses indications morphologiques
  10. 143 |
  11. le nombre d'occurrences du lemme dans les textes du LASLA
  12. 144 |
145 |

146 | 147 |

Exemple :

148 | 149 |
ablŭo=ā̆blŭo|lego|ā̆blŭ|ā̆blūt|is, ere, lui, lutum|25
150 | 
151 | 152 |

les irréguliers

153 | 154 |

On place dans le fichier irregs.la les formes 155 | irrégulières. On peut hésiter entre l'ajout d'une forme 156 | dans ce fichier ou la définition d'un nouveau modèle. 157 | Si plus de trois lemmes construisent une forme dite 158 | irrégulière de la même manière, mieux vaut créer un 159 | modèle. De même, si un lemme a plus de trois formes 160 | irrégulières, mieux vaut créer un modèle pour ce lemme.

161 | 162 |

Le format est simple :

163 | 164 |
<forme>:<lemme>:<morphos>
165 | 
166 | 167 |
    168 |
  1. la forme doit être mesurée. On lui ajoute un 169 | astérisque si c'est une forme irrégulière exclusive, 170 | c'est à dire si la forme régulière correspondante 171 | n'existe pas ;
  2. 172 |
  3. Le lemme, sans ses quantités ;
  4. 173 |
  5. La liste entre virgule des morphologies qui 174 | utilisent cette forme. On peut utiliser la syntaxe des 175 | intervalles de la clé des du fichier modeles.la.
  6. 176 |
177 | 178 | 179 |

Exemples :

180 | 181 |
ălĭud*:alius:37-39
182 | āccēstĭs:accedo:143
183 | āmbŏbŭs*:ambo:17,18,29,30,47,48
184 | 
185 | 186 |

les fichiers de traduction

187 | 188 |

Les fichiers de traductions sont tous nommées 189 | lemmes.??, les deux points d'interrogation étant deux 190 | caractères qui servent à désigner la langue cible. 191 | (fr=français, it=italien, etc.)

192 | 193 |

Leur format est extrêmement simple : 194 | <lemme>:<traduction>

    195 |
  1. lemme : le lemme sans quantités ;
  2. 196 |
  3. traduction : la traduction dans la langue cible.
  4. 197 |

198 | 199 |

les fichiers de contraction et d'assimilation

200 | 201 |

bin/data/assimilations.la et bin/data/contractions.la sont deux 202 | fichiers qui permettent de déclarer

203 | 204 | 213 | 214 | 215 |

index précédent : Serveur suivant : Pour les programmeurs

216 | -------------------------------------------------------------------------------- /bin/doc/capturedic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/biblissima/collatinus/560ef2d9afceb69157f9a950f9897f552f018d81/bin/doc/capturedic.png -------------------------------------------------------------------------------- /bin/doc/coloriser.html: -------------------------------------------------------------------------------- 1 | 2 |

Collatinus 11 — guide

3 | 4 |

index précédent : Lemmatiser suivant : Dictionnaires

5 | 6 |

Coloriser un texte

7 | 8 |

Pour identifier les mots d'un texte que les élèves 9 | sont sensés connaître, on peut charger en mémoire 10 | une liste de mots connus 11 | (menu Fichier / Lire une liste de mots connus). 12 | Lorsque l'on lemmatise le texte latin 13 | (contenu dans la fenêtre du haut), 14 | ce dernier sera modifié et 15 | les mots seront affichés avec des couleurs différentes. 16 | Par défaut, les mots connus des élèves seront en vert. 17 | Ceux reconnus par Collatinus seront en noir et 18 | ceux que Collatinus ne connaît pas seront en rouge. 19 | Ces couleurs peuvent être modifiées dans le fichier 20 | qui contient la liste de mots connus.

21 | 22 |

Nous fournissons un 23 | exemple de liste de mots connus 24 | (due à Jan Bart). 25 | Cette liste pourra être adaptée au niveau des élèves. 26 | Il s'agit essentiellement d'un fichier texte contenant 27 | un mot par ligne. 28 | Les mots donnés n'ont pas besoin d'être la forme canonique, 29 | car ils seront lemmatisés. En cas d'homonymie, 30 | tous les homonymes sont supposés connus.

31 | 32 |

Attention, une forme est supposée connue si son lemme l'est. 33 | Ce n'est pas nécessairement vrai au cours de l'apprentissage : 34 | un élève pourrait ne pas encore appris à construire 35 | le subjonctif imparfait d'un verbe. 36 | L'enseignant devra donc être attentif !

37 | 38 |

index précédent : Lemmatiser suivant : Dictionnaires

39 | -------------------------------------------------------------------------------- /bin/doc/debuter.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |

Collatinus 11 — guide

4 | 5 |

index précédent : Fenêtres, éditeurs et boutons suivant : lemmatiser et analyser

6 | 7 |

Pour débuter

8 | 9 |
    10 |
  1. Lancer Collatinus — En cliquant sur une icone, 11 | par le menu principal…
  2. 12 |
  3. Charger un texte latin Trois méthodes : 13 | 23 |
  4. Faire apparaître, dans la partie inférieure de 24 | l'application, l'onglet qui correspond à 25 | l'utilisation recherchée : lemmatisation, 26 | dictionnaire, scansion, flexion.
  5. 27 |
  6. Cliquer sur un mot du texte : dans le(s) onglet(s) 28 | visibles, le résultat apparaît.
  7. 29 |
  8. Pour effacer le résultat, on clique sur l'icone 30 | représentant un balai (image).
  9. 31 |
  10. Pour lemmatiser ou scander la totalité du texte, on 32 | clique sur l'icone (image) représentant des 33 | engrenages. 34 | Le raccourci Ctrl+L conduit au même résultat.
  11. 35 |
  12. Pour éditer les résultats dans un traitement de 36 | textes, on choisit l'option Fichier / Copier dans 37 | un traitement de textes ; 38 | on peut également utiliser le copier-coller habituel 39 | pour récupérer le contenu d'une fenêtre 40 | (sous Windows ou Mac, Ctrl-A, pour tout sélectionner 41 | puis Ctrl-CCtrl-V).
  13. 42 |
  14. Pour enregistrer les résultats au format pdf, on 43 | choisit l'option Fichier / exporter en pdf ;
  15. 44 |
  16. Pour imprimer les résultats, on choisit l'option 45 | Fichier / Imprimer, ou on clique sur l'icone (ici, 46 | l'icone imprimante) ;
  17. 47 |
48 | 49 | 50 |

index précédent : Fenêtres, éditeurs et boutons suivant : lemmatiser et analyser

51 | -------------------------------------------------------------------------------- /bin/doc/detach.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/biblissima/collatinus/560ef2d9afceb69157f9a950f9897f552f018d81/bin/doc/detach.png -------------------------------------------------------------------------------- /bin/doc/dictionnaires.html: -------------------------------------------------------------------------------- 1 | 2 |

Collatinus 11 — guide

3 | 4 |

index précédent : Lemmatiser et analyser suivant : Scander

5 | 6 |

Dictionnaires

7 | 8 |

Cette copie annotée de Collatinus montre comment piloter les dictionnaires :

9 | 10 |

Dictionnaire supplémentaire

11 | 12 |

Et voici un résumé des commandes :

13 | 14 |
    15 |
  1. Choix du dictionnaire dans un menu déroulant ;
  2. 16 |
  3. Sélection du mot à chercher soit en cliquant dans le texte latin, 17 | soit en saisissant le mot dans la ligne de saisie à gauche 18 | (dans ce dernier cas, on peut chercher la forme exacte, 19 | sans lemmatisation, en cliquant sur l'icone représentant 20 | une page unique) ;
  4. 21 |
  5. Feuilleter le dictionnaire (page précédente, page suivante, 22 | pour les dictionnaires en mode image ; 23 | articles précédent et suivant pour les dictionnaires numériques) ;
  6. 24 |
  7. Ajouter une fenêtre de dictionnaire (le même, ou un différent). 25 | Le même bouton permet de fermer le dictionnaire supplémentaire ;
  8. 26 |
  9. Demander l'affichage du même mot dans les deux dictionnaires, 27 | systématiquement (en activant le bouton sync+) ou 28 | ponctuellement (en appuyant sur un des boutons sync-> 29 | ou <-sync, selon la fenêtre active).
  10. 30 |
31 | 32 | 33 |

index précédent : Lemmatiser et analyser suivant : Scander

34 | -------------------------------------------------------------------------------- /bin/doc/doc.css: -------------------------------------------------------------------------------- 1 | @charset: "UTF-8"; 2 | body { 3 | background-color: white; 4 | margin: 10%; 5 | text-align: justify; 6 | } 7 | 8 | h1 { 9 | margin-top: 0.5em; 10 | } 11 | -------------------------------------------------------------------------------- /bin/doc/flechir.html: -------------------------------------------------------------------------------- 1 | 2 |

Collatinus 11 — guide

3 | 4 |

index précédent : Scander suivant : Tagger

5 | 6 |

Fléchir

7 | 8 |

Si l'onglet Flexion est visible, un clic sur une forme 9 | permet d'afficher les tableaux de flexion des lemmes 10 | qui peuvent donner cette forme. On peut aussi saisir 11 | une forme dans la ligne de saisie de l'onglet. Pour les 12 | lemmes à flexion riche, comme les verbes et les adjectifs, 13 | des liens permettent de montrer immédiatement la partie 14 | recherchée de la flexion. D'autres liens permettent de 15 | changer de lemme.

16 | 17 |

index précédent : Scander suivant : Tagger

18 | -------------------------------------------------------------------------------- /bin/doc/index.html: -------------------------------------------------------------------------------- 1 | 2 |

COLLATINUS 11

3 | 4 |

La version 11 de Collatinus fait tout ce que faisait la 5 | version 10, mais l'interface du programme a été 6 | retravaillée, et son code source a été révisé. Chacun 7 | des chapitres du menu suivant décrit en détail les 8 | différentes utilisations de Collatinus.

9 | 10 |

L'interface de Collatinus est intuitive, mais il est 11 | conseillé de commencer par le chapitre suivant, 12 | qui la présente avec des images annotées.

13 | 14 |
    15 |
  1. Fenêtre, éditeurs et boutons 16 | Une présentation de ce qu'on voit lorsqu'on a lancé 17 | Collatinus.
  2. 18 |
  3. Pour débuter Un guide pas à pas 19 | pour les premières utilisations.
  4. 20 |
  5. Lemmatiser et analyser 21 | Lemmatiser un texte latin, c'est à dire établir le 22 | lexique de tous les mots latins utilisés par le 23 | texte. On peut aussi obtenir l'analyse 24 | morphologique des formes, c'est à dire leurs cas, 25 | genre, nombre, degré, personne, etc.
  6. 26 |
  7. Dictionnaires On peut 27 | ouvrir jusqu'à deux dictionnaires, consultables 28 | en cliquant sur un mot du texte, ou en saisissant 29 | un ou plusieurs mots.
  8. 30 |
  9. Scander Afficher le mot/texte muni 31 | de toutes ses quantités. Toutes les solutions 32 | possibles sont données. On peut aussi accentuer 33 | les mots et/ou marquer la césure entre les syllabes.
  10. 34 |
  11. Fléchir Afficher la déclinaison 35 | d'un mot, la conjugaison d'un verbe.
  12. 36 |
  13. Tagger Utiliser un tagueur 37 | probabiliste pour obtenir la meilleure analyse 38 | de la phrase ou du texte.
  14. 39 |
  15. Serveur Interroger Collatinus depuis 40 | une autre application.
  16. 41 |
  17. Utilisation avancée Si on a 42 | pris le soin de faire des sauvegardes, on peut 43 | essayer de modifier les lexiques, ajouter des mots, 44 | modifier des traductions ou des modèles.
  18. 45 |
  19. Pour les programmeurs Le code 46 | source de l'application est disponible, et peut 47 | être adapté pour analyser une autre langue flexionnelle.
  20. 48 |
  21. Remerciements, licence.
  22. 49 |
50 | 51 | 52 |

Conformément à la licence de Collatinus, ses 53 | développeurs mettent régulièrement à jour son code 54 | source, présent sur ce dépôt Github

55 | -------------------------------------------------------------------------------- /bin/doc/lemmatiser.html: -------------------------------------------------------------------------------- 1 | 2 |

Collatinus 11 — guide

3 | 4 |

index précédent : Pour débuter suivant : Dictionnaires

5 | 6 |

Lemmatiser et analyser

7 | 8 |

Beaucoup plus qu'un mot français, un mot latin peut 9 | prendre de nombreuses apparences. Chacune de ces 10 | apparences est appelée forme.

11 | 12 |

Pour apprendre le latin, il faut donc savoir, quand on 13 | a lu une forme, la lemmatiser, c'est à dire savoir 14 | quel mot a pu donner cette forme, et souvent même, 15 | quels mots ont pu la donner.

16 | 17 |

Lemmatiser ne suffit pas. Il faut aussi savoir analyser 18 | une forme, c'est à dire la raison pour laquelle on a 19 | employé cette forme du mot (qu'on appelle alors 20 | lemme) plutôt qu'une autre. Attention, il s'agit là 21 | de l'analyse morphologique, qui ne suffit pas pour 22 | lire le latin. Il faut aussi connaître la syntaxe de 23 | la langue.

24 | 25 |

Collatinus essaie donc de lemmatiser les mots d'un 26 | texte, et aussi de donner leur analyse morphologique. 27 | En cliquant sur un mot du texte (fenêtre supérieure), 28 | on obtient sa lemmatisation dans la fenêtre du bas. 29 | Pour lemmatiser l'ensemble du texte, on peut cliquer 30 | sur l'icone représentant des engrenages, ou sur celle 31 | portant un α (pour forcer l'ordre alphabétique, 32 | sans tenir compte de l'option sélectionnée, cf. ci-dessous). 33 | Le raccourci Ctrl-L conduit au même résultat que 34 | les engrenages. 35 | La lemmatisation d'un texte permet aussi de le 36 | coloriser.

37 | 38 |

L'onglet de lemmatisation de l'application fournit de 39 | nombreuses options, données par cette image. Une option 40 | activée est en bleu. Un clic sur le bouton active ou 41 | désactive l'option.

42 | 43 |

Options de lemmatisation

44 | 45 |

De gauche à droite :

46 | 47 |
    48 |
  1. Une ligne de saisie, qui permet de lemmatiser tout ce qu'elle 49 | contient sans modifier le texte latin chargé dans la partie supérieure. 50 | On y place du texte, et on appuie sur la touche Entrée.
  2. 51 |
  3. Calepino : Si l'option est activée, les lemmes sont traduits dans 52 | toutes les langues cibles disponibles.
  4. 53 |
  5. Morpho : permet d'afficher toutes les analyses 54 | morphologiques possibles de la forme.
  6. 55 |
  7. ordre alpha : range les lemmes par ordre alphabétique si elle est 56 | activée, sinon dans l'ordre d'apparition dans le texte.
  8. 57 |
  9. avec formes : chaque lemmatisation est précédée de la forme telle 58 | qu'elle apparaît dans le texte.
  10. 59 |
  11. format html : permet une meilleure présentation visuelle, mais 60 | ralentit l'affichage des textes longs.
  12. 61 |
  13. majuscules : essaie de tenir compte des majuscules, et permet de 62 | faire la distinction entre noms propres et communs ou adjectifs. 63 | L'ambiguïté demeure lorsque la forme est en début de phrase.
  14. 64 |
  15. grouper échecs : Si l'option est activée, tous les mots dont 65 | la lemmatisation a échoué sont rassemblés à la fin 66 | des résultats. Sinon, ils sont à leur place dans le 67 | texte (ou dans l'ordre alphabétique), avec une mention d'échec.
  16. 68 |
69 | 70 | 71 |

index précédent : Pour débuter suivant : Dictionnaires

72 | -------------------------------------------------------------------------------- /bin/doc/optionslem.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/biblissima/collatinus/560ef2d9afceb69157f9a950f9897f552f018d81/bin/doc/optionslem.png -------------------------------------------------------------------------------- /bin/doc/programmeurs.html: -------------------------------------------------------------------------------- 1 | 2 |

Collatinus 11 — guide

3 | 4 |

index précédent : Utilisation avancée suivant : Remerciements, licence

5 | 6 |

Pour les programmeurs

7 | 8 |

Le code source de Collatinus est disponible, en accord 9 | avec les termes de la licence 10 | GPL 3. 11 | On peut donc étudier, modifier et réutiliser ce code 12 | source à condition de placer le résultat sous la même 13 | licence, ou sous une licence compatible.

14 | 15 |

Une documentation complète de la structure du code, des 16 | classes et des fonctions peut être obtenue en utilisant 17 | le générateur de documentation 18 | Doxygen.

19 | 20 |

Tout qui est spécifique à la langue latine a été placé 21 | de préférence dans les données, et il n'est pas 22 | impossible que Collatinus puisse alors servir pour une 23 | autre langue flexionnelle comme le grec ou le sanskrit.

24 | 25 |

index précédent : Utilisation avancée suivant : Remerciements, licence

26 | -------------------------------------------------------------------------------- /bin/doc/scander.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |

Collatinus 11 — guide

4 | 5 |

index précédent : Dictionnaires suivant : Fléchir

6 | 7 |

Scander

8 | 9 |

L'onglet de scansion permet de faire deux choses 10 | intimement liées : la scansion ou l'accentuation des mots. 11 | La scansion consiste à donner la quantité, longue ou brève, des syllabes, 12 | alors que l'accentuation indique la position de l'accent 13 | tonique (Latin tardif) dans le mot. 14 | L'accent tonique permet une lecture plus vivante du Latin. 15 | Il se place sur l'avant dernière syllabe si celle-ci 16 | est longue et remonte sur l'antépénultième sinon.

17 | 18 |

L'onglet de scansion est très simple à utiliser. 19 | Quand il est visible, on peut : 20 |

    21 |
  1. Cliquer sur un mot du texte pour en obtenir 22 |
    la scansion ou l'accentuation.
    23 | 
  2. 24 |
  3. Cliquer sur l'icone engrenages pour 25 | scander ou accentuer tout le texte.
  4. 26 |
  5. Saisir un texte dans la ligne de saisie 27 | et de frapper la touche Entrée.
  6. 28 |
29 |

30 | 31 |

Le bouton Accentuer (immédiatement à droite 32 | de la ligne de saisie, actif en bleu) permet de choisir 33 | si on souhaite scander ou accentuer un mot/texte.

34 | 35 |

La scansion est calculée à partir du lexique de 36 | Collatinus, qui donne les quantités. Le résultat est 37 | ensuite soumis à un ensemble de règles prosodiques. 38 | Enfin les élisions sont recherchées et les syllabes 39 | élidées mises entre crochets.

40 | 41 |

L'icone statistiques (un boulier) permet d'avoir 42 | des suggestions pour les hexamètres et pentamètres.

43 | 44 |

L'accentuation découle de la scansion des mots. 45 | Toutefois, une ambiguïté est possible lorsque 46 | l'avant-dernière syllabe est commune (ni longue, 47 | ni brève, ou les deux à la fois). Selon l'auteur, 48 | la période ou l'origine du texte, l'accent tonique 49 | peut alors tomber sur l'avant-dernière ou 50 | l'antépénultième syllabe. Les quatre boutons du centre 51 | déterminent le comportement du programme 52 | lorsque l'avant-dernière syllabe est commune 53 | (ce qui est assez rare, on peut donc les ignorer).

54 | 55 |

Lorsque l'accentuation des mots est active (bouton en bleu), 56 | on peut également marquer la césure entre les syllabes. 57 | Si on a lu le fichier “hyphen.la” (ou tout autre fichier 58 | construit sur ce modèle) dans le menu Fichier/Lire les césures, 59 | le programme sera en mesure de tenir compte 60 | des exceptions étymologiques (en présence d'un préfixe). 61 | Le fichier “hyphen.la” est dû à la persévérance de 62 | Frère Romain Marie de l'Abbaye Saint-Joseph de Flavigny-sur-Ozerain.

63 | 64 |

index précédent : Dictionnaires suivant : Fléchir

65 | -------------------------------------------------------------------------------- /bin/doc/tagger.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |

Collatinus 11 — guide

4 | 5 |

index précédent : Fléchir suivant : Serveur

6 | 7 |

Tagger

8 | 9 |
     Cette fonctionnalité est expérimentale et
10 |      il convient de l’utiliser avec prudence !
11 | 
12 | 13 |

Le but d’un tagueur (ou tagger) probabiliste est de proposer 14 | la meilleure analyse d’une phrase ou d’un texte, 15 | en tenant compte de façon simpliste du contexte. 16 | Attention ! Comme son nom l’indique, c’est un processus probabiliste, 17 | ce qui signifie qu’il peut se tromper. 18 | Ce qu’il considère comme la meilleure analyse 19 | peut être fausse. 20 | Un tagueur probabiliste ne remplace pas une analyse syntaxique 21 | et la compréhension d’un texte. Il ne peut qu’aider.

22 | 23 |

Dès que l’on clique sur un mot dans le texte, le programme 24 | analyse la phrase qui contient ce mot et propose les 25 | deux meilleures séquences de tags associées. Il indique 26 | aussi les probabilités qu’il leur attribue. Si ces 27 | probabilités sont voisines, la seconde possibilité doit 28 | être examinée également. Toujours est-il que seule la 29 | meilleure séquence est explicitée dans la suite. 30 | Le bouton tout afficher en haut à droite de l’onglet tagger 31 | permet d’afficher toutes les lemmatisations possibles 32 | (comme dans l’onglet Lexique et morphologie, mais sous 33 | une autre forme). Lorsqu’il est inactif, seule la lemmatisation 34 | choisie dans la meilleure solution du tagger est affichée.

35 | 36 |

Le bouton représentant des engrenages permet de traiter 37 | l’ensemble du texte, phrase par phrase. 38 | Si le texte est long, ça peut prendre un peu de temps.

39 | 40 |

Un tagueur probabiliste est un outil utilisé couramment 41 | en Traitement Automatique des Langues (TAL ou NLP, pour 42 | Natural Laguage Processing) pour lever les ambiguïtés. 43 | De telles ambiguïtés sont fréquentes dans toutes les 44 | langues. Le sens de la phrase nous éclaire dans nos choix. 45 | Mais un ordinateur n’a pas accès au sens…

46 | 47 |

Sans entrer dans les détails du fonctionnement d’un tagueur 48 | probabiliste, il associe des étiquettes (tag en anglais) 49 | aux formes, étiquettes révélatrices de la nature 50 | ou de la fonction du mot. À partir d’une phrase, vue comme 51 | une succession de formes, on peut construire un grand nombre 52 | de successions d’étiquettes. Reste à associer à chacune de ces 53 | séquences possibles une probabilité pour qu’elle soit la bonne. 54 | Un tagueur probabiliste repose sur une connaissance statistique 55 | de la langue et sur des hypothèses simplificatrices pour 56 | évaluer la probabilité à associer à une séquence de tags. 57 | La séquence avec la plus forte probabilité a des chances 58 | d’être la bonne. 59 | Avec les langues modernes (anglais, français…), ça marche 60 | plutôt bien avec des taux de réussite entre 90 et 99%. 61 | À notre connaissance, il n’est pas démontré que cela 62 | puisse donner de tels résultats avec le Latin.

63 | 64 |

La connaissance statistique de la langue est tirée de 65 | l’examen d’un corpus d’apprentissage. En l’occurrence, 66 | nous avons dépouillé le corpus des textes latins lemmatisés 67 | par le LASLA à l’université de Liège. Il compte plus 68 | de 1,5 million de mots lemmatisés et analysés à la main. 69 | Pour l’utilisation dans Collatinus, on en a tiré : 70 |

    71 |
  1. Le nombre d’occurrences de chaque lemme.
  2. 72 |
  3. La fréquence des différents cas (pour les formes 73 | déclinées) et modes (pour les verbes). 74 |
  4. 75 | 76 |
  5. Le nombre d’occurrences de chaque séquence de 3 tags.
  6. 77 |
78 |

79 | 80 |

Ces résultats sont utilisés pour évaluer les probabilités 81 | dont le tagueur a besoin.

82 | 83 |

index précédent : Fléchir suivant : Serveur

84 | -------------------------------------------------------------------------------- /collatinus.1.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/biblissima/collatinus/560ef2d9afceb69157f9a950f9897f552f018d81/collatinus.1.gz -------------------------------------------------------------------------------- /collatinus.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/biblissima/collatinus/560ef2d9afceb69157f9a950f9897f552f018d81/collatinus.icns -------------------------------------------------------------------------------- /collatinus.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/biblissima/collatinus/560ef2d9afceb69157f9a950f9897f552f018d81/collatinus.ico -------------------------------------------------------------------------------- /collatinus.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/biblissima/collatinus/560ef2d9afceb69157f9a950f9897f552f018d81/collatinus.jpg -------------------------------------------------------------------------------- /collatinus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/biblissima/collatinus/560ef2d9afceb69157f9a950f9897f552f018d81/collatinus.png -------------------------------------------------------------------------------- /collatinus.pro: -------------------------------------------------------------------------------- 1 | VERSION = "11.2" 2 | DEFINES += VERSION=\\\"$$VERSION\\\" 3 | 4 | TEMPLATE = app 5 | TARGET = collatinus 6 | INCLUDEPATH += . src 7 | DEPENDPATH += . 8 | 9 | qtHaveModule(printsupport): QT += printsupport 10 | QT += widgets 11 | QT += network 12 | QT += svg 13 | 14 | #QMAKE_CXXFLAGS += -Wall -Wextra -pedantic -fstack-protector-strong 15 | #QMAKE_CPPFLAGS += -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 16 | 17 | CONFIG += release_binary debug 18 | 19 | TRANSLATIONS = collatinus_fr.ts 20 | TRANSLATIONS += collatinus_en.ts 21 | 22 | unix:!macx:DESTDIR = bin 23 | OBJECTS_DIR= obj/ 24 | MOC_DIR = moc/ 25 | QMAKE_DISTCLEAN += $${DESTDIR}/collatinus 26 | 27 | # Input 28 | HEADERS += src/ch.h \ 29 | src/flexion.h \ 30 | src/irregs.h \ 31 | src/lemme.h \ 32 | src/dicos.h \ 33 | src/modele.h \ 34 | # src/flexfr.h \ 35 | src/mainwindow.h \ 36 | src/maj.h \ 37 | src/mot.h \ 38 | src/lasla.h \ 39 | src/tagueur.h \ 40 | src/scandeur.h \ 41 | src/lemCore.h \ 42 | src/lemmatiseur.h 43 | 44 | SOURCES += src/ch.cpp \ 45 | src/flexion.cpp \ 46 | # src/frequences.cpp \ 47 | src/irregs.cpp \ 48 | src/lemme.cpp \ 49 | src/dicos.cpp \ 50 | # src/flexfr.cpp \ 51 | src/main.cpp \ 52 | src/maj.cpp \ 53 | src/mainwindow.cpp \ 54 | src/modele.cpp \ 55 | src/scandeur.cpp \ 56 | src/mot.cpp \ 57 | src/lasla.cpp \ 58 | src/tagueur.cpp \ 59 | src/lemCore.cpp \ 60 | src/lemmatiseur.cpp 61 | 62 | RESOURCES += collatinus.qrc 63 | RC_ICONS = res/collatinus.ico 64 | 65 | macx:{ 66 | TARGET = Collatinus_$${VERSION} 67 | #note mac os x, fair un $ qmake -spec macx-g++ 68 | #CONFIG += x86 ppc 69 | QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.8 70 | ICON = collatinus.icns 71 | #QMAKE_MAC_SDK = /Developer/SDKs/MacOSX10.4u.sdk 72 | 73 | #QMAKE_POST_LINK=strip Collatinus.app/Contents/MacOS/collatinus 74 | 75 | # install into app bundle 76 | # à changer en ressources 77 | data.path = $${TARGET}.app/Contents/MacOS/data 78 | data.files = bin/data/* 79 | # deploy.depends = install_documentation 80 | deploy.depends += install 81 | # documentation.path = Collatinus_11.app/Contents/MacOS/doc/ 82 | # documentation.files = doc/*.html doc/*.css 83 | # ajouter un cible qui fait macdeploy Collatinus.app 84 | deploy.commands = macdeployqt $${TARGET}.app 85 | # dmg.depends = deploy 86 | # dmg.commands = ./MacOS/Collatinus.sh 87 | # INSTALLS += documentation 88 | INSTALLS += data 89 | QMAKE_EXTRA_TARGETS += deploy 90 | # QMAKE_EXTRA_TARGETS += dmg 91 | } 92 | -------------------------------------------------------------------------------- /collatinus.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | res/abacus.svg 4 | res/collatinus.css 5 | res/collatinus.svg 6 | res/copie.svg 7 | res/dezoom.svg 8 | res/dicolem.svg 9 | res/dicolitt.svg 10 | res/document-new.svg 11 | res/document-open.svg 12 | res/edit-alpha.svg 13 | res/edit-clear.svg 14 | res/edit-find.svg 15 | res/gear.svg 16 | res/help-browser.svg 17 | res/pdf.svg 18 | res/poignee.svg 19 | res/power.svg 20 | res/print.svg 21 | res/syntaxe.svg 22 | res/zoom.svg 23 | res/csv.svg 24 | 25 | 26 | -------------------------------------------------------------------------------- /doc-usr/Exemple_liste.txt.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/biblissima/collatinus/560ef2d9afceb69157f9a950f9897f552f018d81/doc-usr/Exemple_liste.txt.zip -------------------------------------------------------------------------------- /doc-usr/Makefile: -------------------------------------------------------------------------------- 1 | e=" " 2 | dest=../bin/doc/ 3 | 4 | but: 5 | rm -r $(dest) 6 | mkdir $(dest) 7 | echo $e > $(dest)index.html; markdown index.md >> $(dest)index.html 8 | echo $e > $(dest)anatomie.html; markdown anatomie.md >> $(dest)anatomie.html 9 | echo $e > $(dest)debuter.html; markdown debuter.md >> $(dest)debuter.html 10 | echo $e > $(dest)lemmatiser.html; markdown lemmatiser.md >> $(dest)lemmatiser.html 11 | echo $e > $(dest)coloriser.html; markdown coloriser.md >> $(dest)coloriser.html 12 | echo $e > $(dest)dictionnaires.html; markdown dictionnaires.md >> $(dest)dictionnaires.html 13 | echo $e > $(dest)scander.html; markdown scander.md >> $(dest)scander.html 14 | echo $e > $(dest)flechir.html; markdown flechir.md >> $(dest)flechir.html 15 | echo $e > $(dest)tagger.html; markdown tagger.md >> $(dest)tagger.html 16 | echo $e > $(dest)server.html; markdown server.md >> $(dest)server.html 17 | echo $e > $(dest)avancee.html; markdown avancee.md >> $(dest)avancee.html 18 | echo $e > $(dest)programmeurs.html; markdown programmeurs.md >> $(dest)programmeurs.html 19 | echo $e > $(dest)licence.html; markdown licence.md >> $(dest)licence.html 20 | cp doc.css ../bin/doc/ 21 | cp *.png ../bin/doc/ 22 | 23 | clean: 24 | echo suppression de la documentation 25 | rm -r $(dest) 26 | 27 | test: 28 | $(BROWSER) ../bin/doc/index.html 29 | 30 | -------------------------------------------------------------------------------- /doc-usr/anatomie.md: -------------------------------------------------------------------------------- 1 | *Collatinus 11 -- guide* 2 | 3 | Précédent : [index](index.html) suivant : [Pour débuter](debuter.html) 4 | 5 | Fenêtres, éditeurs et boutons 6 | ============================= 7 | 8 | Voici une vue générale de l'interface de Collatinus : 9 | 10 | ![Interface de Collatinus](anatomie.png "L'interface de Collatinus") 11 | 12 | Les onglets de la partie inférieure peuvent être 13 | déplacés et redimensionnés : 14 | 15 | ![Lemmatisation détachée](detach.png "La partie lemmatisation a été détachée") 16 | 17 | Une description complète de l'utilisation des dictionnaires est donnée 18 | au chapitre [dictionnaires](dictionnaires.html). 19 | 20 | Précédent : [index](index.html) suivant : [Pour débuter](debuter.html) 21 | -------------------------------------------------------------------------------- /doc-usr/anatomie.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/biblissima/collatinus/560ef2d9afceb69157f9a950f9897f552f018d81/doc-usr/anatomie.png -------------------------------------------------------------------------------- /doc-usr/avancee.md: -------------------------------------------------------------------------------- 1 | *Collatinus 11 -- guide* 2 | 3 | [index](index.html) précédent : [Serveur](server.html) suivant : [Pour les programmeurs](programmeurs.html) 4 | 5 | Utilisation avancée 6 | =================== 7 | 8 | Pour faire son travail, Collatinus s'appuie sur une 9 | collection de fichiers qui contiennent toutes les 10 | connaissances nécessaires. À l'initialisation du 11 | programme, ils sont tous lus, et les données mises 12 | en listes et placées en mémoire vive. 13 | 14 | Si on remarque une erreur ou une lacune dans les 15 | résultats, et qu'on a des connaissances suffisantes en 16 | gestion et édition de fichiers, on peut commencer à les 17 | modifier. Il faut bien sûr prendre des précautions, 18 | notamment **en prenant soin de faire une copie de 19 | sauvegarde avant toute intervention** : on crée un 20 | répertoire dont on note bien le chemin, et on y copie 21 | les fichiers qu'on a l'intention de modifier. On peut 22 | ainsi, en cas d'échecs, les rétablir dans leur état 23 | initial. 24 | 25 | Les fichiers les plus importants sont détaillés ci-dessous. 26 | 27 | ## Le fichier morphos.la 28 | C'est un simple fichier dans lequel sont toutes les 29 | morphologies possibles que peuvent prendre les formes 30 | latines. Ainsi pour désigner une morphologie, on donne 31 | le numéro de la ligne où elle se trouve. Par exemple, 32 | la morphologie 33 | _vocatif masculin singulier participe présent actif_ est 34 | désignée par le nombre _190_. 35 | 36 | ## le fichier modeles.la 37 | C'est de loin le plus important. Y sont placés tous les 38 | modèles de flexion. 39 | 40 | Un modèle est un ensemble de lignes. Chaque modèle est séparé 41 | du précédent par une ligne vide. 42 | 43 | Une ligne commençant par un point d'exclamation est un 44 | commentaire. Lors de sa lecture, Collatinus n'en tient 45 | pas compte. 46 | 47 | Chaque ligne est bâtie sur le schéma **clé:valeur** 48 | Tout ce qui précède _le premier caractère **deux 49 | points**_ est la clé, le reste est la valeur. 50 | La première clé doit être le nom du modèle. L'ordre 51 | dans lequel apparaissent les autres clés n'a pas 52 | d'importance, mais mieux vaut rester cohérent et garder 53 | la même disposition. 54 | 55 | ### Les clés 56 | 57 | * modèle:nom-du-modèle Exemple : **modele:uita** 58 | * Liste des radicaux : 59 | R:\:\,\ 60 | * n1 : numéro du radical 61 | * n2 : nombre de caractères à ôter de la forme canonique 62 | * ch : chaîne à ajouter à la chaîne obtenue pour avoir le radical. S'il n'y a aucune chaîne à ajouter, la valeur est 0. exemple pour uita : **R:1:1:0**, ce qui signifie que pour le radical 1, on enlève un caractère à *uita*, ce qui donne *uit*, et on n'ajoute rien. 63 | * désinences : 64 | des:\:\:\ 65 | * intervale : liste de n° de morphologies séparées 66 | par des virgules, ou intervalle de numéros 67 | \-\. Les deux méthodes peuvent 68 | voisiner dans un intervalle. 69 | * num : numéro du radical utilisé par ces désinences. 70 | * listeDes : liste des désiences. On peut ne donner qu'une fois une désinence qui se répète en fin de liste. 71 | 72 | ### Les variables 73 | Comme les mêmes séries de désinences sont souvent utilisées de nombreuses fois par 74 | des modèles et des radicaux différents, on peut mettre ces séries en variables. Ainsi, 75 | pour le modèle uita. Au lieu d'écrire : 76 | 77 | modele:uita 78 | R:1:1,0 79 | des:1-12:1:ă;ă;ăm;āe;āe;ā;āe;āe;ās;ārum;īs;īs 80 | 81 | On définit une variable de cette manière : 82 | 83 | $: 84 | 85 | Par exemple, pour définir la variable uita : 86 | 87 | $uita=ă;ă;ăm;āe;āe;ā;āe;āe;ās;ārum;īs;īs 88 | 89 | et la définition du modèle deviendra : 90 | 91 | modele:uita 92 | R:1:1,0 93 | des:1-12:1:$uita 94 | 95 | La variable $uita peut être utilisée pour le participe parfait : 96 | 97 | modele:amo 98 | (radicaux, autres désinences) 99 | des:315-326:2:$uita 100 | 101 | ## Le fichier lemmes.la 102 | C'est un gros fichier qui donne tous les mots latins, leur modèle, 103 | leurs radicaux, et les indications morphologiques qui 104 | apparaîtront dans l'analyse. 105 | 106 | Chaque lemme occupe une seule ligne. Cinq champs sont séparés par 107 | le caractère **|** : 108 | 1. la forme canonique du lemme ; si le dictionnaire 109 | n'en donne pas toutes les quantités, on la réécrit 110 | entièrement mesurée après le signe **=**. 111 | 2. son modèle, pris dans le fichier modeles.la ; 112 | 3. s'il n'est pas défini par modeles.la, son radical de 113 | génitif, ou d'infectum pour les verbes ; 114 | 4. s'il n'est pas défini par modeles.la, son radical de 115 | perfectum ; 116 | 5. ses indications morphologiques 117 | 118 | Exemple : 119 | 120 | ablŭo=ā̆blŭo|lego|ā̆blŭ|ā̆blūt|is, ere, lui, lutum 121 | 122 | ## les irréguliers 123 | On place dans le fichier irregs.la les formes 124 | irrégulières. On peut hésiter entre l'ajout d'une forme 125 | dans ce fichier ou la définition d'un nouveau modèle. 126 | Si plus de trois lemmes construisent une forme dite 127 | irrégulière de la même manière, mieux vaut créer un 128 | modèle. De même, si un lemme a plus de trois formes 129 | irrégulières, mieux vaut créer un modèle pour ce lemme. 130 | 131 | Le format est simple : 132 | 133 | :: 134 | 135 | 1. la forme doit être mesurée. On lui ajoute un 136 | astérisque si c'est une forme irrégulière exclusive, 137 | c'est à dire si la forme régulière correspondante 138 | n'existe pas ; 139 | 2. Le lemme, sans ses quantités ; 140 | 3. La liste entre virgule des morphologies qui 141 | utilisent cette forme. On peut utiliser la syntaxe des 142 | intervalles de la clé **des** du fichier modeles.la. 143 | 144 | Exemples : 145 | ălĭud*:alius:37-39 146 | āccēstĭs:accedo:143 147 | āmbŏbŭs*:ambo:17,18,29,30,47,48 148 | 149 | ## les fichiers de traduction 150 | Les fichiers de traductions sont tous nommées 151 | lemmes.??, les deux points d'interrogation étant deux 152 | caractères qui servent à désigner la langue cible. 153 | (fr=français, it=italien, etc.) 154 | 155 | Leur format est extrêmement simple : 156 | : 157 | 1. **lemme** : le lemme sans quantités ; 158 | 2. **traduction** : la traduction dans la langue cible. 159 | 160 | 161 | ## les fichiers de contraction et d'assimilation 162 | 163 | bin/data/assimilations.la et bin/data/contractions.la sont deux 164 | fichiers qui permettent de déclarer 165 | 166 | * Les assimilations : la forme _affert_ n'est pas reconnue, mais 167 | une règle d'assimilation permet de remplacer _-aff-_ 168 | par _-adf-_, et d'analyser aussi la forme 169 | _adfert_, qui est reconnue. 170 | * Les contractions : la forme _amassem_ n'est pas reconnue, mais une 171 | règle de contraction permet de remplacer _-assem_ par 172 | _-auissem_, ce qui donne _amauissem_, qui est reconnu. 173 | 174 | [index](index.html) précédent : [Serveur](server.html) suivant : [Pour les programmeurs](programmeurs.html) 175 | -------------------------------------------------------------------------------- /doc-usr/capturedic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/biblissima/collatinus/560ef2d9afceb69157f9a950f9897f552f018d81/doc-usr/capturedic.png -------------------------------------------------------------------------------- /doc-usr/coloriser.md: -------------------------------------------------------------------------------- 1 | *Collatinus 11 -- guide* 2 | 3 | [index](index.html) précédent : [Lemmatiser](lemmatiser.html) suivant : [Dictionnaires](dictionnaires.html) 4 | 5 | Coloriser un texte 6 | ====================== 7 | 8 | Pour identifier les mots d'un texte que les élèves 9 | sont sensés connaître, on peut charger en mémoire 10 | une liste de mots connus 11 | (menu Fichier / Lire une liste de mots connus). 12 | Lorsque l'on lemmatise le texte latin 13 | (contenu dans la fenêtre du haut), 14 | ce dernier sera modifié et 15 | les mots seront affichés avec des couleurs différentes. 16 | Par défaut, les mots connus des élèves seront en vert. 17 | Ceux reconnus par Collatinus seront en noir et 18 | ceux que Collatinus ne connaît pas seront en rouge. 19 | Ces couleurs peuvent être modifiées dans le fichier 20 | qui contient la liste de mots connus. 21 | 22 | Nous fournissons un 23 | [exemple de liste de mots connus](Exemple_liste.txt.zip) 24 | (due à Jan Bart). 25 | Cette liste pourra être adaptée au niveau des élèves. 26 | Il s'agit essentiellement d'un fichier texte contenant 27 | un mot par ligne. 28 | Les mots donnés n'ont pas besoin d'être la forme canonique, 29 | car ils seront lemmatisés. En cas d'homonymie, 30 | tous les homonymes sont supposés connus. 31 | 32 | Attention, une forme est supposée connue si son lemme l'est. 33 | Ce n'est pas nécessairement vrai au cours de l'apprentissage : 34 | un élève pourrait ne pas encore avoir appris à construire 35 | le subjonctif imparfait d'un verbe. 36 | L'enseignant devra donc être attentif ! 37 | 38 | [index](index.html) précédent : [Lemmatiser](lemmatiser.html) suivant : [Dictionnaires](dictionnaires.html) 39 | -------------------------------------------------------------------------------- /doc-usr/debuter.md: -------------------------------------------------------------------------------- 1 | *Collatinus 11 -- guide* 2 | 3 | [index](index.html) précédent : [Fenêtres, éditeurs et boutons](anatomie.html) suivant : [lemmatiser et analyser](lemmatiser.html) 4 | 5 | Pour débuter 6 | ============ 7 | 8 | 1. **Lancer Collatinus** -- En cliquant sur une icone, 9 | par le menu principal... 10 | 1. **Charger un texte latin** Trois méthodes : 11 | a. Soit en choisissant, dans le menu _Fichier_ 12 | l'option _Ouvrir_, et en sélectionnant un fichier; 13 | b. Soit avec le raccourci **Ctrl+O** (pour Mac, 14 | on remplacera **Ctrl** par **Cmd**), 15 | qui ouvre le même dialogue ; 16 | c. soit en collant dans la partie supérieure de 17 | l'application le contenu du presse papier rempli 18 | avec la partie sélectionnée d'un texte latin. La 19 | manière de faire un copier-coller dépend du 20 | système (Linux, Macintosh, Windows, etc.) ; 21 | 1. Faire apparaître, dans la partie inférieure de 22 | l'application, l'onglet qui correspond à 23 | l'utilisation recherchée : lemmatisation, 24 | dictionnaire, scansion, flexion. 25 | 1. Cliquer sur un mot du texte : dans le(s) onglet(s) 26 | visibles, le résultat apparaît. 27 | 1. **Pour effacer le résultat**, on clique sur l'icone 28 | représentant un balai (image). 29 | 1. **Pour lemmatiser ou scander la totalité du texte**, on 30 | clique sur l'icone (image) représentant des 31 | engrenages. 32 | Le raccourci **Ctrl+L** conduit au même résultat. 33 | 1. **Pour éditer les résultats dans un traitement de 34 | textes**, on choisit l'option Fichier / Copier dans 35 | un traitement de textes ; 36 | on peut également utiliser le copier-coller habituel 37 | pour récupérer le contenu d'une fenêtre 38 | (sous Windows ou Mac, **Ctrl-A**, pour tout sélectionner 39 | puis **Ctrl-C** ... **Ctrl-V**). 40 | 1. **Pour enregistrer les résultats au format pdf**, on 41 | choisit l'option Fichier / exporter en pdf ; 42 | 1. **Pour imprimer** les résultats, on choisit l'option 43 | Fichier / Imprimer, ou on clique sur l'icone (ici, 44 | l'icone imprimante) ; 45 | 46 | [index](index.html) précédent : [Fenêtres, éditeurs et boutons](anatomie.html) suivant : [lemmatiser et analyser](lemmatiser.html) 47 | -------------------------------------------------------------------------------- /doc-usr/detach.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/biblissima/collatinus/560ef2d9afceb69157f9a950f9897f552f018d81/doc-usr/detach.png -------------------------------------------------------------------------------- /doc-usr/dictionnaires.md: -------------------------------------------------------------------------------- 1 | *Collatinus 11 -- guide* 2 | 3 | [index](index.html) précédent : [Lemmatiser et analyser](lemmatiser.html) suivant : [Scander](scander.html) 4 | 5 | Dictionnaires 6 | ============= 7 | 8 | Cette copie annotée de Collatinus montre comment piloter les dictionnaires : 9 | 10 | ![Dictionnaire supplémentaire](capturedic.png "Les deux dictionnaires") 11 | 12 | Et voici un résumé des commandes : 13 | 14 | 1. Choix du dictionnaire dans un menu déroulant ; 15 | 2. Sélection du mot à chercher soit en cliquant dans le texte latin, 16 | soit en saisissant le mot dans la ligne de saisie à gauche 17 | (dans ce dernier cas, on peut chercher la forme exacte, 18 | sans lemmatisation, en cliquant sur l'icone représentant 19 | une page unique) ; 20 | 3. Feuilleter le dictionnaire (page précédente, page suivante, 21 | pour les dictionnaires en mode image ; 22 | articles précédent et suivant pour les dictionnaires numériques) ; 23 | 4. Ajouter une fenêtre de dictionnaire (le même, ou un différent). 24 | Le même bouton permet de fermer le dictionnaire supplémentaire ; 25 | 5. Demander l'affichage du même mot dans les deux dictionnaires, 26 | systématiquement (en activant le bouton **sync+**) ou 27 | ponctuellement (en appuyant sur un des boutons **sync->** 28 | ou **<-sync**, selon la fenêtre active). 29 | 30 | [index](index.html) précédent : [Lemmatiser et analyser](lemmatiser.html) suivant : [Scander](scander.html) 31 | -------------------------------------------------------------------------------- /doc-usr/doc.css: -------------------------------------------------------------------------------- 1 | @charset: "UTF-8"; 2 | body { 3 | background-color: white; 4 | margin: 10%; 5 | text-align: justify; 6 | } 7 | 8 | h1 { 9 | margin-top: 0.5em; 10 | } 11 | -------------------------------------------------------------------------------- /doc-usr/flechir.md: -------------------------------------------------------------------------------- 1 | *Collatinus 11 -- guide* 2 | 3 | [index](index.html) précédent : [Scander](scander.html) suivant : [Tagger](tagger.html) 4 | 5 | Fléchir 6 | ======= 7 | 8 | Si l'onglet _Flexion_ est visible, un clic sur une forme 9 | permet d'afficher les tableaux de flexion des lemmes 10 | qui peuvent donner cette forme. On peut aussi saisir 11 | une forme dans la ligne de saisie de l'onglet. Pour les 12 | lemmes à flexion riche, comme les verbes et les adjectifs, 13 | des liens permettent de montrer immédiatement la partie 14 | recherchée de la flexion. D'autres liens permettent de 15 | changer de lemme. 16 | 17 | [index](index.html) précédent : [Scander](scander.html) suivant : [Tagger](tagger.html) 18 | -------------------------------------------------------------------------------- /doc-usr/index.md: -------------------------------------------------------------------------------- 1 | COLLATINUS 11 2 | ============= 3 | 4 | La version 11 de Collatinus fait tout ce que faisait la 5 | version 10, mais l'interface du programme a été 6 | retravaillée, et son code source a été révisé. Chacun 7 | des chapitres du menu suivant décrit en détail les 8 | différentes utilisations de Collatinus. 9 | 10 | L'interface de Collatinus est intuitive, mais il est 11 | conseillé de commencer par le [chapitre suivant](anatomie.html), 12 | qui la présente avec des images annotées. 13 | 14 | 1. **[Fenêtre, éditeurs et boutons](anatomie.html)** 15 | Une présentation de ce qu'on voit lorsqu'on a lancé 16 | Collatinus. 17 | 1. **[Pour débuter](debuter.html)** Un guide pas à pas 18 | pour les premières utilisations. 19 | 1. **[Lemmatiser et analyser](lemmatiser.html)** 20 | Lemmatiser un texte latin, c'est à dire établir le 21 | lexique de tous les mots latins utilisés par le 22 | texte. On peut aussi obtenir l'*analyse 23 | morphologique* des formes, c'est à dire leurs cas, 24 | genre, nombre, degré, personne, etc. 25 | 1. **[Dictionnaires](dictionnaires.html)** On peut 26 | ouvrir jusqu'à deux dictionnaires, consultables 27 | en cliquant sur un mot du texte, ou en saisissant 28 | un ou plusieurs mots. 29 | 1. **[Scander](scander.html)** Afficher le mot/texte muni 30 | de toutes ses quantités. Toutes les solutions 31 | possibles sont données. On peut aussi accentuer 32 | les mots et/ou marquer la césure entre les syllabes. 33 | 1. **[Fléchir](flechir.html)** Afficher la déclinaison 34 | d'un mot, la conjugaison d'un verbe. 35 | 1. **[Tagger](tagger.html)** Utiliser un tagueur 36 | probabiliste pour obtenir la *meilleure* analyse 37 | de la phrase ou du texte. 38 | 1. **[Serveur](server.html)** Interroger Collatinus depuis 39 | une autre application. 40 | 1. **[Utilisation avancée](avancee.html)** Si on a 41 | pris le soin de faire des sauvegardes, on peut 42 | essayer de modifier les lexiques, ajouter des mots, 43 | modifier des traductions ou des modèles. 44 | 1. **[Pour les programmeurs](programmeurs.html)** Le code 45 | source de l'application est disponible, et peut 46 | être adapté pour analyser une autre langue flexionnelle. 47 | 1. **[Remerciements, licence](licence.html)**. 48 | 49 | Conformément à la licence de Collatinus, ses 50 | développeurs mettent régulièrement à jour son code 51 | source, présent sur ce [dépôt Github](https://github.com/biblissima/collatinus) 52 | 53 | -------------------------------------------------------------------------------- /doc-usr/lemmatiser.md: -------------------------------------------------------------------------------- 1 | *Collatinus 11 -- guide* 2 | 3 | [index](index.html) précédent : [Pour débuter](debuter.html) suivant : [Dictionnaires](dictionnaires.html) 4 | 5 | Lemmatiser et analyser 6 | ====================== 7 | 8 | Beaucoup plus qu'un mot français, un mot latin peut 9 | prendre de nombreuses apparences. Chacune de ces 10 | apparences est appelée _forme_. 11 | 12 | Pour apprendre le latin, il faut donc savoir, quand on 13 | a lu une forme, la _lemmatiser_, c'est à dire savoir 14 | quel mot a pu donner cette forme, et souvent même, 15 | quels mots ont pu la donner. 16 | 17 | Lemmatiser ne suffit pas. Il faut aussi savoir _analyser_ 18 | une forme, c'est à dire la raison pour laquelle on a 19 | employé cette forme du mot (qu'on appelle alors 20 | _lemme_) plutôt qu'une autre. Attention, il s'agit là 21 | de l'analyse _morphologique_, qui ne suffit pas pour 22 | lire le latin. Il faut aussi connaître la _syntaxe_ de 23 | la langue. 24 | 25 | Collatinus essaie donc de lemmatiser les mots d'un 26 | texte, et aussi de donner leur analyse morphologique. 27 | En cliquant sur un mot du texte (fenêtre supérieure), 28 | on obtient sa lemmatisation dans la fenêtre du bas. 29 | Pour lemmatiser l'ensemble du texte, on peut cliquer 30 | sur l'icone représentant des engrenages, ou sur celle 31 | portant un α (pour forcer l'ordre alphabétique, 32 | sans tenir compte de l'option sélectionnée, cf. ci-dessous). 33 | Le raccourci **Ctrl-L** conduit au même résultat que 34 | les engrenages. 35 | La lemmatisation d'un texte permet aussi de le 36 | [coloriser](coloriser.html). 37 | 38 | L'onglet de lemmatisation de l'application fournit de 39 | nombreuses options, données par cette image. Une option 40 | activée est en bleu. Un clic sur le bouton active ou 41 | désactive l'option. 42 | 43 | ![Options de lemmatisation](optionslem.png "Options de lemmatisation") 44 | 45 | De gauche à droite : 46 | 47 | 1. **Une ligne de saisie**, qui permet de lemmatiser tout ce qu'elle 48 | contient sans modifier le texte latin chargé dans la partie supérieure. 49 | On y place du texte, et on appuie sur la touche **Entrée**. 50 | 2. **Calepino** : Si l'option est activée, les lemmes sont traduits dans 51 | toutes les langues cibles disponibles. 52 | 3. **Morpho** : permet d'afficher toutes les analyses 53 | morphologiques possibles de la forme. 54 | 4. **ordre alpha** : range les lemmes par ordre alphabétique si elle est 55 | activée, sinon dans l'ordre d'apparition dans le texte. 56 | 5. **avec formes** : chaque lemmatisation est précédée de la forme telle 57 | qu'elle apparaît dans le texte. 58 | 6. **format html** : permet une meilleure présentation visuelle, mais 59 | ralentit l'affichage des textes longs. 60 | 7. **majuscules** : essaie de tenir compte des majuscules, et permet de 61 | faire la distinction entre noms propres et communs ou adjectifs. 62 | L'ambiguïté demeure lorsque la forme est en début de phrase. 63 | 8. **grouper échecs** : Si l'option est activée, tous les mots dont 64 | la lemmatisation a échoué sont rassemblés à la fin 65 | des résultats. Sinon, ils sont à leur place dans le 66 | texte (ou dans l'ordre alphabétique), avec une mention d'échec. 67 | 68 | [index](index.html) précédent : [Pour débuter](debuter.html) suivant : [Dictionnaires](dictionnaires.html) 69 | -------------------------------------------------------------------------------- /doc-usr/optionslem.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/biblissima/collatinus/560ef2d9afceb69157f9a950f9897f552f018d81/doc-usr/optionslem.png -------------------------------------------------------------------------------- /doc-usr/programmeurs.md: -------------------------------------------------------------------------------- 1 | *Collatinus 11 -- guide* 2 | 3 | [index](index.html) précédent : [Utilisation avancée](avancee.html) suivant : [Remerciements, licence](licence.html) 4 | 5 | Pour les programmeurs 6 | ===================== 7 | 8 | Le code source de Collatinus est disponible, en accord 9 | avec les termes de la licence 10 | **[GPL 3](http://www.gnu.org/licenses/gpl-3.0.fr.html)**. 11 | On peut donc étudier, modifier et réutiliser ce code 12 | source à condition de placer le résultat sous la même 13 | licence, ou sous une licence compatible. 14 | 15 | Une documentation complète de la structure du code, des 16 | classes et des fonctions peut être obtenue en utilisant 17 | le générateur de documentation 18 | [Doxygen](http://www.stack.nl/~dimitri/doxygen/). 19 | 20 | Tout qui est spécifique à la langue latine a été placé 21 | de préférence dans les données, et il n'est pas 22 | impossible que Collatinus puisse alors servir pour une 23 | autre langue flexionnelle comme le grec ou le sanskrit. 24 | 25 | [index](index.html) précédent : [Utilisation avancée](avancee.html) suivant : [Remerciements, licence](licence.html) 26 | -------------------------------------------------------------------------------- /doc-usr/scander.md: -------------------------------------------------------------------------------- 1 | *Collatinus 11 -- guide* 2 | 3 | [index](index.html) précédent : [Dictionnaires](dictionnaires.html) suivant : [Fléchir](flechir.html) 4 | 5 | Scander 6 | ======= 7 | 8 | L'onglet de scansion permet de faire deux choses 9 | intimement liées : la **scansion** ou l'**accentuation** des mots. 10 | La scansion consiste à donner la quantité, longue ou brève, des syllabes, 11 | alors que l'accentuation indique la position de l'accent 12 | tonique (Latin tardif) dans le mot. 13 | L'accent tonique permet une lecture _plus vivante_ du Latin. 14 | Il se place sur l'avant dernière syllabe si celle-ci 15 | est longue et remonte sur l'antépénultième sinon. 16 | 17 | L'onglet de scansion est très simple à utiliser. 18 | Quand il est visible, on peut : 19 | 1. Cliquer sur un mot du texte pour en obtenir 20 | la scansion ou l'accentuation. 21 | 1. Cliquer sur l'icone _engrenages_ pour 22 | scander ou accentuer tout le texte. 23 | 1. Saisir un texte dans la ligne de saisie 24 | et de frapper la touche **Entrée**. 25 | 26 | Le bouton _Accentuer_ (immédiatement à droite 27 | de la ligne de saisie, actif en bleu) permet de choisir 28 | si on souhaite scander ou accentuer un mot/texte. 29 | 30 | La **scansion** est calculée à partir du lexique de 31 | Collatinus, qui donne les quantités. Le résultat est 32 | ensuite soumis à un ensemble de règles prosodiques. 33 | Enfin les élisions sont recherchées et les syllabes 34 | élidées mises entre crochets. 35 | 36 | L'icone _statistiques_ (un boulier) permet d'avoir 37 | des suggestions pour les hexamètres et pentamètres. 38 | 39 | L'**accentuation** découle de la scansion des mots. 40 | Toutefois, une ambiguïté est possible lorsque 41 | l'avant-dernière syllabe est commune (ni longue, 42 | ni brève, ou les deux à la fois). Selon l'auteur, 43 | la période ou l'origine du texte, l'accent tonique 44 | peut alors tomber sur l'avant-dernière ou 45 | l'antépénultième syllabe. Les quatre boutons du centre 46 | déterminent le comportement du programme 47 | lorsque l'avant-dernière syllabe est commune 48 | (ce qui est assez rare, on peut donc les ignorer). 49 | 50 | Lorsque l'accentuation des mots est active (bouton en bleu), 51 | on peut également marquer la césure entre les syllabes. 52 | Si on a lu le fichier "hyphen.la" (ou tout autre fichier 53 | construit sur ce modèle) dans le menu _Fichier/Lire les césures_, 54 | le programme sera en mesure de tenir compte 55 | des _exceptions étymologiques_ (en présence d'un préfixe). 56 | Le fichier "hyphen.la" est dû à la persévérance de 57 | Frère Romain Marie de l'Abbaye Saint-Joseph de Flavigny-sur-Ozerain. 58 | 59 | [index](index.html) précédent : [Dictionnaires](dictionnaires.html) suivant : [Fléchir](flechir.html) 60 | -------------------------------------------------------------------------------- /doc-usr/server.md: -------------------------------------------------------------------------------- 1 | *Collatinus 11 -- guide* 2 | 3 | [index](index.html) précédent : [Tagueur](tagger.html) suivant : [Utilisation avancée](avancee.html) 4 | 5 | Serveur 6 | ======= 7 | 8 | Cette fonctionnalité est nouvelle et 9 | s’adresse plutôt aux utilisateurs expérimentés. 10 | 11 | 12 | Le serveur de Collatinus permet à d’autres programmes 13 | d’interroger Collatinus et de récupérer ses réponses. 14 | On l’active et le désactive dans le menu _Extra/Serveur_. 15 | Il faut ensuite laisser Collatinus tourner (éventuellement 16 | en arrière plan) pour qu’il puisse répondre aux requêtes. 17 | 18 | Pour les amateurs de commandes en ligne, Collatinus est 19 | fourni avec un petit utilitaire Client\_C11 qui peut servir 20 | d’intermédiaire. Sous Windows, Client\_C11.exe est placé 21 | à côté de l’exécutable Collatinus\_11.exe. Sous MacOS, 22 | il est enfoui au cœur de Collatinus\_11.app à côté de 23 | l’exécutable (Collatinus\_11.app/Contents/MacOS/Client\_C11). 24 | La syntaxe ressemble à celle d'Unix. Par exemple : 25 | 26 | ./Client_C11 -lfr arma 27 | 28 | donnera les lemmatisations possibles de “arma” avec les 29 | traductions en français. Le résultat de l’interrogation 30 | est également placé dans le presse-papier pour en permettre 31 | l’utilisation dans un traitement de texte. 32 | 33 | Dans LibreOffice, j’ai écrit des macros qui permettent 34 | d’interroger Collatinus sans quitter le tratement de texte. 35 | Ça doit être possible aussi sous msOffice. 36 | 37 | ## Syntaxe de la requête 38 | 39 | La syntaxe est '[cmd] [texte]' ou '[cmd] -f nom\_de\_fichier'. 40 | Éventuellement complétée par '-o nom\_de\_fichier\_de\_sortie'. 41 | 42 | Contrairement à l'usage Unix, on ne peut pas combiner plusieurs commandes. 43 | Si on veut obtenir, par exemple, la scansion et la lemmatisation d'un texte, 44 | il faudra envoyer deux requêtes distinctes. 45 | 46 | Par défaut (sans cmd), on obtient la scansion du texte. 47 | 48 | Les commandes possibles sont : 49 | - -s : Scansion du texte (-s1 : avec recherche des mètres). 50 | - -a : Accentuation du texte (avec options -a0..-a15). 51 | - -l : Lemmatisation du texte (avec options -l0..-l16). 52 | - -h : Lemmatisation du texte en HTML (mêmes options que -l) 53 | - -S, -A, -L, -H : Les mêmes avec Majuscules pertinentes. 54 | - -t : Langue cible pour les traductions (par exemple -tfr, -tde). 55 | - -C : Majuscules pertinentes. 56 | - -c : Majuscules non-pertinentes. 57 | - -? : Affichage de l'aide. 58 | 59 | Avec l'option '-f nom\_de\_fichier', c'est le contenu du fichier qui est traité. 60 | Comme le fichier est ouvert dans Collatinus, il vaut probablement mieux 61 | donner le chemin complet du fichier. Par exemple : 62 | 63 | /Users/Philippe/Documents/Virgile/Eneide1.txt 64 | 65 | Avec l'option '-o nom\_de\_fichier\_de\_sortie', le résultat de l'opération est stocké 66 | dans le fichier. Comme pour -f, il vaut mieux donner le chemin complet. 67 | 68 | ## Détails des commandes 69 | 70 | Attention, les commandes sans texte (-c, -C et -t) modifient les paramètres 71 | correspondants de l'application. L'affichage de l'aide n'affecte en rien l'application. 72 | Si un texte suit ces commandes, il est ignoré. 73 | - La langue cible : on peut changer la langue dans laquelle sont données les traductions 74 | en spécifiant l'intitulé de la langue en deux caractères. 75 | * Par exemple -tfr permet d'obtenir les traductions en français. 76 | Dans l'application, la langue-cible est également modifiée. 77 | * La commande nue, -t, ou avec un complément inconnu, -txx, donne la liste 78 | des langues disponibles (et ne modifie pas la langue dans l'application). 79 | - Majuscules pertinentes : on peut décider si Aeneas est équivalent à aeneas ou pas. 80 | En début de phrase ou de vers, la majuscule initiale n'est pas considérée 81 | comme pertinente. 82 | * -C ou -c1 : les majuscules sont respectées. 83 | * -c : les majuscules sont ignorées. 84 | 85 | Les commandes avec texte modifient temporairement les paramètres de l'application, 86 | mais les rétablissent à la fin du traitement. 87 | Les commandes -s, -a, -l et -h ont leur contrepartie en majuscule (-S, -A, -L et -H) 88 | qui considèreront que les majuscules sont pertinentes. 89 | - Scansion du texte : avec les commandes -s et -S, le texte est seulement scandé ; 90 | alors que les commandes -s1 et -S1 cherchent également les schémas métriques 91 | et font des statistiques. 92 | Attention, avec l'option 1, la réponse est en HTML avec des balises de mise en forme. 93 | - Accentuation du texte : les commandes -a et -A peuvent être suivies d'un ou deux 94 | chiffres qui définissent les options d'accentuation. 95 | Les options de groupes différents s'ajoutent (OU binaire). 96 | * Le premier groupe d'option détermine le comportement à adopter si la pénultième 97 | voyelle est commune. Ces options occupent les deux bits de poids faibles : 98 | * -a0 est équivalent à -s et retourne donc le texte scandé. 99 | Par exemple : ./Client_C11 -a0 tenebrae ==> tĕnē̆brāe 100 | * -a1 considère qu'une voyelle commune en pénultième position est accentuée. 101 | Par exemple : ./Client_C11 -a1 tenebrae ==> tenébræ (paroxyton) 102 | * -a2 considère qu'une voyelle commune en pénultième position n'est pas accentuée 103 | Par exemple : ./Client_C11 -a2 tenebrae ==> ténebræ (proparoxyton) 104 | * -a3 n'accentue pas les mots dont la pénultième est commune. 105 | * Le troisième bit (de valeur 4) permet la syllabisation des mots. 106 | Il est inactif si les deux premiers bits sont nuls. 107 | * -a5 ==> teˌnéˌbræ 108 | * -a6 ==> téˌneˌbræ 109 | * -a7 ==> teˌneˌbræ 110 | * Le quatrième bit (de valeur 8) introduit "l'exception illius" : 111 | Le latin ecclésiastique considère en effet les voyelles communes comme brèves, 112 | sauf dans le cas des génitifs en -ī̆ŭs, dont le plus fréquent est illius. 113 | La "bonne option" pour le latin ecclésiastique serait donc -a10 qui donnera : 114 | ténebræ (proparoxyton) mais illíus (paroxyton). 115 | - Lemmatisation du texte : les commandes -l, -L, -h et -H retournent l'ensemble des 116 | lemmes du texte. -L et -H considèrent les majuscules pertinentes. 117 | Les commandes -l et -L retournent l'ensemble des lemmes en texte simple, 118 | alors que -h et -H donne une réponse en HTML avec des balises de mise en forme. 119 | Ces commandes peuvent être suivies d'une option numérique de 0 à 16 et 120 | de la langue dans laquelle seront données les traductions sur deux lettres. 121 | Attention, l'ordre est imposé : la langue, si elle est donnée, vient en dernier. 122 | L'option numérique peut être omise (0 est alors la valeur par défaut). 123 | Tout comme la langue, auquel cas c'est la langue choisie dans l'appli qui 124 | est prise par défaut. Pour connaître la liste des langues disponibles, 125 | on utilisera la commande -t (voir ci-dessus). 126 | Comme pour les options de l'accentuation, les options de la lemmatisation s'ajoutent. 127 | * Bit de poids faible (de valeur 1) : détermine l'ordre des lemmes 128 | * -l0 : les lemmes sont donnés dans l'ordre du texte. 129 | * -l1 : les lemmes sont donnés dans l'ordre alphabétique. 130 | * Deuxième bit (de valeur 2) : les formes du texte 131 | * -l2 : affiche les formes du texte, avant d'en donner la lemmatisation. 132 | * -l3 : les formes du texte sont rangées en ordre alphabétique et lemmatisées. 133 | * Troisième bit (de valeur 4) : l'analyse morphologique 134 | * -l4 : associe à chaque lemmatisation les différentes analyses possibles. 135 | * -l5..7 : combinaison avec les options précédentes. 136 | * Quatrième bit (de valeur 8) : regroupe les formes non-reconnues à la fin 137 | * -l8..15 : combinaison avec les options précédentes. 138 | * -l16 est la dernière option numérique possible et n'est pas combinable : 139 | elle évalue la fréquence des lemmes dans le texte. 140 | 141 | 142 | [index](index.html) précédent : [Tagueur](tagger.html) suivant : [Utilisation avancée](avancee.html) 143 | -------------------------------------------------------------------------------- /doc-usr/tagger.md: -------------------------------------------------------------------------------- 1 | *Collatinus 11 -- guide* 2 | 3 | [index](index.html) précédent : [Fléchir](flechir.html) suivant : [Serveur](server.html) 4 | 5 | Tagger 6 | ====== 7 | 8 | Cette fonctionnalité est expérimentale et 9 | il convient de l’utiliser avec prudence ! 10 | 11 | Le but d’un tagueur (ou tagger) probabiliste est de proposer 12 | la _meilleure_ analyse d’une phrase ou d’un texte, 13 | en tenant compte de façon simpliste du contexte. 14 | **Attention !** Comme son nom l’indique, c’est un processus _probabiliste_, 15 | ce qui signifie qu’il peut se tromper. 16 | Ce qu’il considère comme la _meilleure_ analyse 17 | peut être **fausse**. 18 | Un tagueur probabiliste ne remplace pas une analyse syntaxique 19 | et la compréhension d’un texte. Il ne peut qu’aider. 20 | 21 | Dès que l’on clique sur un mot dans le texte, le programme 22 | analyse la phrase qui contient ce mot et propose les 23 | deux meilleures séquences de tags associées. Il indique 24 | aussi les probabilités qu’il leur attribue. Si ces 25 | probabilités sont voisines, la seconde possibilité doit 26 | être examinée également. Toujours est-il que seule la 27 | meilleure séquence est explicitée dans la suite. 28 | Le bouton _tout afficher_ en haut à droite de l’onglet tagger 29 | permet d’afficher toutes les lemmatisations possibles 30 | (comme dans l’onglet _Lexique et morphologie_, mais sous 31 | une autre forme). Lorsqu’il est inactif, seule la lemmatisation 32 | choisie dans la _meilleure solution_ du tagger est affichée. 33 | 34 | Le bouton représentant des _engrenages_ permet de traiter 35 | l’ensemble du texte, phrase par phrase. 36 | Si le texte est long, ça peut prendre un peu de temps. 37 | 38 | Un tagueur probabiliste est un outil utilisé couramment 39 | en Traitement Automatique des Langues (TAL ou NLP, pour 40 | Natural Laguage Processing) pour lever les ambiguïtés. 41 | De telles ambiguïtés sont fréquentes dans toutes les 42 | langues. Le sens de la phrase nous éclaire dans nos choix. 43 | Mais un ordinateur n’a pas accès au sens… 44 | 45 | Sans entrer dans les détails du fonctionnement d’un tagueur 46 | probabiliste, il associe des étiquettes (tag en anglais) 47 | aux formes, étiquettes révélatrices de la nature 48 | ou de la fonction du mot. À partir d’une phrase, vue comme 49 | une succession de formes, on peut construire un grand nombre 50 | de successions d’étiquettes. Reste à associer à chacune de ces 51 | séquences possibles une probabilité pour qu’elle soit la bonne. 52 | Un tagueur probabiliste repose sur une connaissance statistique 53 | de la langue et sur des hypothèses simplificatrices pour 54 | évaluer la probabilité à associer à une séquence de tags. 55 | La séquence avec la plus forte probabilité a des chances 56 | d’être la bonne. 57 | Avec les langues modernes (anglais, français…), ça marche 58 | plutôt bien avec des taux de réussite entre 90 et 99%. 59 | À notre connaissance, il n’est pas démontré que cela 60 | puisse donner de tels résultats avec le Latin. 61 | 62 | La connaissance statistique de la langue est tirée de 63 | l’examen d’un corpus d’apprentissage. En l’occurrence, 64 | nous avons dépouillé le corpus des textes latins lemmatisés 65 | par le LASLA à l’université de Liège. Il compte plus 66 | de 1,5 million de mots lemmatisés et analysés à la main. 67 | Pour l’utilisation dans Collatinus, on en a tiré : 68 | 1. Le nombre d’occurrences de chaque lemme. 69 | 1. La fréquence des différents cas (pour les formes 70 | déclinées) et modes (pour les verbes). 71 | 1. Le nombre d’occurrences de chaque séquence de 3 tags. 72 | 73 | Ces résultats sont utilisés pour évaluer les probabilités 74 | dont le tagueur a besoin. 75 | 76 | [index](index.html) précédent : [Fléchir](flechir.html) suivant : [Serveur](server.html) 77 | -------------------------------------------------------------------------------- /make_dmg4mac/Fond_dmg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/biblissima/collatinus/560ef2d9afceb69157f9a950f9897f552f018d81/make_dmg4mac/Fond_dmg.png -------------------------------------------------------------------------------- /make_dmg4mac/Notes.md: -------------------------------------------------------------------------------- 1 | An example of "command" file to build the dmg for Collatinus_11. 2 | Taken from : 3 | http://asmaloney.com/2013/07/howto/packaging-a-mac-os-x-application-using-a-dmg/ 4 | 5 | Philippe, avril 2017. 6 | -------------------------------------------------------------------------------- /make_dmg4mac/Pack_Collatinus.command: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # by Andy Maloney 4 | # http://asmaloney.com/2013/07/howto/packaging-a-mac-os-x-application-using-a-dmg/ 5 | 6 | # Modifié pour Collatinus_11.app le 26 avril 2017 par Philippe. 7 | # Suppose que Collatinus_11.app se trouve dans le 8 | # répertoire PARENT de celui où est cet exécutable. 9 | # Le numéro de version se change quelques lignes plus bas. 10 | # L’original prévoyait une compression de l’exécutable que j’ai commentée. 11 | 12 | # Attention ! TextEdit a tendance à remplacer les guillemets doubles " 13 | # par les équivalents typographiques “” qui ne sont pas compris. 14 | # Un cmd-Z au bon moment rétablit le ". 15 | 16 | # make sure we are in the correct dir when we double-click a .command file 17 | dir=${0%/*} 18 | if [ -d "$dir" ]; then 19 | cd "$dir" 20 | fi 21 | 22 | # set up your app name, version number, and background image file name 23 | APP_NAME="Collatinus_11" 24 | VERSION="11.beta" 25 | DMG_BACKGROUND_IMG="Fond_dmg.png" 26 | 27 | # you should not need to change these 28 | APP_EXE="${APP_NAME}.app/Contents/MacOS/${APP_NAME}" 29 | 30 | VOL_NAME="Collatinus ${VERSION}" # volume name will be "SuperCoolApp 1.0.0" 31 | DMG_TMP="${VOL_NAME}-temp.dmg" 32 | DMG_FINAL="${VOL_NAME}.dmg" # final DMG name will be "SuperCoolApp 1.0.0.dmg" 33 | STAGING_DIR="./Install" # we copy all our stuff into this dir 34 | 35 | # Check the background image DPI and convert it if it isn't 72x72 36 | _BACKGROUND_IMAGE_DPI_H=`sips -g dpiHeight ${DMG_BACKGROUND_IMG} | grep -Eo '[0-9]+\.[0-9]+'` 37 | _BACKGROUND_IMAGE_DPI_W=`sips -g dpiWidth ${DMG_BACKGROUND_IMG} | grep -Eo '[0-9]+\.[0-9]+'` 38 | 39 | if [ $(echo " $_BACKGROUND_IMAGE_DPI_H != 72.0 " | bc) -eq 1 -o $(echo " $_BACKGROUND_IMAGE_DPI_W != 72.0 " | bc) -eq 1 ]; then 40 | echo "WARNING: The background image's DPI is not 72. This will result in distorted backgrounds on Mac OS X 10.7+." 41 | echo " I will convert it to 72 DPI for you." 42 | 43 | _DMG_BACKGROUND_TMP="${DMG_BACKGROUND_IMG%.*}"_dpifix."${DMG_BACKGROUND_IMG##*.}" 44 | 45 | sips -s dpiWidth 72 -s dpiHeight 72 ${DMG_BACKGROUND_IMG} --out ${_DMG_BACKGROUND_TMP} 46 | 47 | DMG_BACKGROUND_IMG="${_DMG_BACKGROUND_TMP}" 48 | fi 49 | 50 | # clear out any old data 51 | rm -rf "${STAGING_DIR}" "${DMG_TMP}" "${DMG_FINAL}" 52 | 53 | # copy over the stuff we want in the final disk image to our staging dir 54 | mkdir -p "${STAGING_DIR}" 55 | cp -rpf "../${APP_NAME}.app" "${STAGING_DIR}" 56 | # Assumes that the application is in the parent folder 57 | # ... cp anything else you want in the DMG - documentation, etc. 58 | 59 | pushd "${STAGING_DIR}" 60 | 61 | # strip the executable 62 | #echo "Stripping ${APP_EXE}..." 63 | #strip -u -r "${APP_EXE}" 64 | 65 | # compress the executable if we have upx in PATH 66 | # UPX: http://upx.sourceforge.net/ 67 | #if hash upx 2>/dev/null; then 68 | # echo "Compressing (UPX) ${APP_EXE}..." 69 | # upx -9 "${APP_EXE}" 70 | #fi 71 | 72 | # ... perform any other stripping/compressing of libs and executables 73 | 74 | popd 75 | 76 | # figure out how big our DMG needs to be 77 | # assumes our contents are at least 1M! 78 | SIZE=`du -sh "${STAGING_DIR}" | sed 's/\([0-9\.]*\)M\(.*\)/\1/'` 79 | SIZE=`echo "${SIZE} + 1.0" | bc | awk '{print int($1+0.5)}'` 80 | 81 | if [ $? -ne 0 ]; then 82 | echo "Error: Cannot compute size of staging dir" 83 | exit 84 | fi 85 | 86 | # create the temp DMG file 87 | hdiutil create -srcfolder "${STAGING_DIR}" -volname "${VOL_NAME}" -fs HFS+ \ 88 | -fsargs "-c c=64,a=16,e=16" -format UDRW -size ${SIZE}M "${DMG_TMP}" 89 | 90 | echo "Created DMG: ${DMG_TMP}" 91 | 92 | # mount it and save the device 93 | DEVICE=$(hdiutil attach -readwrite -noverify "${DMG_TMP}" | \ 94 | egrep '^/dev/' | sed 1q | awk '{print $1}') 95 | 96 | sleep 2 97 | 98 | # add a link to the Applications dir 99 | echo "Add link to /Applications" 100 | pushd /Volumes/"${VOL_NAME}" 101 | ln -s /Applications 102 | popd 103 | 104 | # add a background image 105 | mkdir /Volumes/"${VOL_NAME}"/.background 106 | cp "${DMG_BACKGROUND_IMG}" /Volumes/"${VOL_NAME}"/.background/ 107 | 108 | # tell the Finder to resize the window, set the background, 109 | # change the icon size, place the icons in the right position, etc. 110 | echo ' 111 | tell application "Finder" 112 | tell disk "'${VOL_NAME}'" 113 | open 114 | set current view of container window to icon view 115 | set toolbar visible of container window to false 116 | set statusbar visible of container window to false 117 | set the bounds of container window to {400, 100, 927, 490} 118 | set viewOptions to the icon view options of container window 119 | set arrangement of viewOptions to not arranged 120 | set icon size of viewOptions to 72 121 | set background picture of viewOptions to file ".background:'${DMG_BACKGROUND_IMG}'" 122 | set position of item "'${APP_NAME}'.app" of container window to {60, 205} 123 | set position of item "Applications" of container window to {360, 305} 124 | close 125 | open 126 | update without registering applications 127 | delay 2 128 | end tell 129 | end tell 130 | ' | osascript 131 | 132 | sync 133 | 134 | # unmount it 135 | hdiutil detach "${DEVICE}" 136 | 137 | # now make the final image a compressed disk image 138 | echo "Creating compressed image" 139 | hdiutil convert "${DMG_TMP}" -format UDZO -imagekey zlib-level=9 -o "${DMG_FINAL}" 140 | 141 | # clean up 142 | rm -rf "${DMG_TMP}" 143 | rm -rf "${STAGING_DIR}" 144 | 145 | echo 'Done.' 146 | 147 | exit -------------------------------------------------------------------------------- /res/abacus.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 19 | 21 | 39 | 41 | 42 | 44 | image/svg+xml 45 | 47 | 48 | 49 | 50 | 51 | 56 | 63 | 64 | 65 | -------------------------------------------------------------------------------- /res/collatinus.css: -------------------------------------------------------------------------------- 1 | QMainWindow::separator { 2 | background-color: lightgray; 3 | border: 1px dashed black; 4 | width: 4px; 5 | border-radius: 3px; 6 | } 7 | 8 | QMainWindow::separator:horizontal { 9 | image: url(:res/poignee.svg); 10 | } 11 | 12 | QMainWindow::separator:hover { 13 | background: red; 14 | } 15 | 16 | QDockWidget::title { 17 | text-align: center; 18 | padding-left: 5px; 19 | } 20 | 21 | QToolButton:checked { 22 | color: blue; 23 | font-weight: bold; 24 | } 25 | 26 | -------------------------------------------------------------------------------- /res/collatinus.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 42 | 43 | -------------------------------------------------------------------------------- /res/copie.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 18 | 20 | 27 | 32 | 33 | 40 | 45 | 46 | 53 | 58 | 59 | 66 | 71 | 72 | 79 | 84 | 85 | 92 | 97 | 98 | 105 | 110 | 111 | 118 | 123 | 124 | 125 | 144 | 146 | 147 | 149 | image/svg+xml 150 | 152 | 153 | 154 | 155 | 160 | 169 | 178 | 184 | 185 | 186 | -------------------------------------------------------------------------------- /res/csv.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /res/dezoom.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 18 | 20 | 39 | 41 | 42 | 44 | image/svg+xml 45 | 47 | 48 | 49 | 50 | 51 | 55 | A 67 | 68 | 69 | -------------------------------------------------------------------------------- /res/dicolem.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 19 | 21 | 39 | 41 | 42 | 44 | image/svg+xml 45 | 47 | 48 | 49 | 50 | 51 | 56 | 129 | 130 | 131 | -------------------------------------------------------------------------------- /res/dicolitt.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 19 | 21 | 39 | 41 | 42 | 44 | image/svg+xml 45 | 47 | 48 | 49 | 50 | 51 | 56 | 79 | 80 | 81 | -------------------------------------------------------------------------------- /res/license.txt: -------------------------------------------------------------------------------- 1 | # the following are icons comming with this project are part of the Tango 2 | # desktop project http://tango.freedesktop.org/ or derivate from it, and are 3 | # release to the public domain. 4 | 5 | document-new.svg 6 | document-open.svg 7 | edit-clear.svg 8 | edit-find-replace.svg 9 | edit-find.svg 10 | folder-open.svg 11 | folder-saved-search.svg 12 | help-browser.svg 13 | print.svg 14 | system-search.svg 15 | 16 | # this icon is derivative from the Noun Project 17 | # (http://www.thenounproject.com/) 18 | # and is in public domain 19 | 20 | power.svg 21 | 22 | # those last 10 have been created for the project 23 | # and are under GPL3. 24 | abacus.svg 25 | collatinus.svg 26 | copie.svg 27 | dezoom.svg 28 | dicolem.svg 29 | dicolitt.svg 30 | edit-alpha.svg 31 | gear.svg 32 | syntaxe.svg 33 | zoom.svg 34 | 35 | -------------------------------------------------------------------------------- /res/poignee.svg: -------------------------------------------------------------------------------- 1 | 2 | 17 | 19 | 20 | 22 | image/svg+xml 23 | 25 | 26 | 27 | 28 | 30 | 50 | 55 | 60 | 65 | 70 | 75 | 80 | 81 | -------------------------------------------------------------------------------- /res/power.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | image/svg+xml 46 | 51 | 56 | -------------------------------------------------------------------------------- /res/zoom.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 18 | 20 | 39 | 41 | 42 | 44 | image/svg+xml 45 | 47 | 48 | 49 | 50 | 51 | 55 | A 67 | 68 | 69 | -------------------------------------------------------------------------------- /src/ch.h: -------------------------------------------------------------------------------- 1 | /* ch.h */ 2 | 3 | #ifndef CH_H 4 | #define CH_H 5 | 6 | #include 7 | #include 8 | #include 9 | 10 | namespace Ch 11 | { 12 | /* Je passe à une liste d'abréviations contenue dans un fichier. 13 | QStringList const abrev = QStringList() 14 | <<"Agr"<<"Ap"<<"A"<<"K"<<"D"<<"F"<<"C" 15 | <<"Cn"<<"Kal"<<"L"<<"Mam"<<"M\""<<"M"<<"N"<<"Oct" 16 | <<"Opet"<<"Post"<<"Pro"<<"P"<<"Q"<<"Sert" 17 | <<"Ser"<<"Sex"<<"S"<<"St"<<"Ti"<<"T"<<"V" 18 | <<"Vol"<<"Vop"<<"Pl"; 19 | // Liste des abréviations prise dans Praelector le 11/11/2016 20 | */ 21 | QStringList ajoute(QString mot, QStringList liste); 22 | void allonge(QString *f); 23 | QString atone(const QString a, bool bdc = false); 24 | QString communes(QString g); 25 | void deQuant(QString *c); 26 | QString const consonnes = "bcdfgjklmnpqrstvxz"; 27 | void genStrNum(const QString s, QString *ch, int *n); 28 | QString deramise(QString r); 29 | QString deAccent(QString c); 30 | void elide(QString *mp); 31 | const QRegExp reAlphas("(\\w+)"); 32 | const QRegExp reEspace("\\s+"); 33 | const QRegExp reLettres("\\w"); 34 | const QRegExp rePonct("([\\.?!;:])"); 35 | // const QRegExp rePonct("([\\.?!;:]|$$)"); 36 | bool sort_i(const QString &a, const QString &b); 37 | bool inv_sort_i(const QString &a, const QString &b); 38 | QString versPC(QString k); 39 | QString versPedeCerto(QString k); 40 | QString const voyelles = "āăēĕīĭōŏūŭȳўĀĂĒĔĪĬŌŎŪŬȲЎ"; 41 | 42 | //QChar const separSyll = 0x02CC; 43 | //QChar const separSyll = 0x00AD; 44 | QChar const separSyll = 0x00B7; 45 | QString transforme(QString k); 46 | QString accentue(QString l); 47 | QString ajoutSuff(QString fq, QString suffixe, QString l_etym, int accent); 48 | } 49 | #endif 50 | -------------------------------------------------------------------------------- /src/client_main.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | 6 | class QTcpSocket; 7 | 8 | int main(int argc, char *argv[]) 9 | { 10 | QCoreApplication a(argc, argv); 11 | QString req = ""; 12 | if (argc > 1) 13 | { 14 | int i = 1; 15 | while (i < argc) 16 | { 17 | QString suite(argv[i]); 18 | req += " " + suite; 19 | i++; 20 | } 21 | } 22 | else req = "-?"; // pour afficher l'aide. 23 | 24 | QTcpSocket * tcpSocket = new QTcpSocket(); 25 | tcpSocket->abort(); 26 | tcpSocket->connectToHost(QHostAddress::LocalHost, 5555); 27 | QByteArray ba = req.toUtf8(); 28 | tcpSocket->write(ba); 29 | tcpSocket->waitForBytesWritten(); 30 | tcpSocket->waitForReadyRead(); 31 | ba = tcpSocket->readAll(); 32 | tcpSocket->disconnectFromHost(); 33 | tcpSocket->close(); 34 | QString rep(ba); 35 | std::cout << rep.toStdString(); 36 | 37 | a.quit(); 38 | } 39 | 40 | -------------------------------------------------------------------------------- /src/dicos.h: -------------------------------------------------------------------------------- 1 | /* dicos.h 2 | * 3 | * This file is part of COLLATINUS. 4 | * 5 | * COLLATINUS is free software; you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation; either version 2 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * COLLATINVS is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with COLLATINUS; if not, write to the Free Software 17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | * 19 | * © Yves Ouvrard, 2009 - 2016 20 | */ 21 | 22 | #ifndef LEWIS_H 23 | #define LEWIS_H 24 | 25 | #include 26 | 27 | typedef QPair pairL; 28 | typedef struct 29 | { 30 | QString article; 31 | qint64 pos; 32 | qint64 taille; 33 | } llew; 34 | // typedef QList llew; 35 | 36 | class Dictionnaire : public QObject 37 | { 38 | Q_OBJECT 39 | 40 | private: 41 | QString auteur; 42 | QString chData; // chemin complet du fichier djvu ou xml 43 | QString chopNum(const QString c); 44 | QString cond_jv; 45 | // Pour pouvoir lire l'index de dicos en Tchèque, par exemple, 46 | // je dois pouvoir modifier l'ordre alphabétique. 47 | QString alphabet; 48 | // Dans le fichier cfg, la variable "alphabet" donne 49 | // toutes les "lettres" utilisées, séparées par un point ".". 50 | QStringList caracteres; // En Tchèque, le digraphe "ch" est entre le h et le i. 51 | QList indices; 52 | // Les caractères ont dû être ordonnés, mais en conservant leur indice 53 | // dans l'ordre alphabétique. 54 | int compChaines(QString s1, QString s2); 55 | int nbCar; 56 | // Une fonction pour comparer deux chaines en tenant compte 57 | // de l'ordre alphabétique donné par alphabet. 58 | int debut; 59 | bool djvu; 60 | QString echelle; // échelle pour l'extraction d'une image d'un djvu 61 | QStringList idxDjvu; 62 | QString idxJv; // chemin de l'index jv 63 | bool ji; 64 | bool JI; 65 | bool jv; 66 | QStringList _liens; 67 | QString ligneLiens; 68 | QString linPrec(QTextStream *s, qint64 pos); 69 | QString n; // nom 70 | int pdj; 71 | QString prec; // pages précédente et suivante 72 | // QString readLineBack (QFile *f, int fois=1); 73 | QString repertoire; 74 | QString suiv; 75 | // qint64 tailleprec; 76 | QString url; 77 | bool xml; 78 | bool xsl; 79 | 80 | public: 81 | Dictionnaire(QString cfg, QObject *parent = 0); 82 | QString entree_pos(qint64 pos, qint64 taille); 83 | bool estXml(); 84 | QString indexIu(); 85 | QString indexJv(); 86 | bool lis_index_djvu(); 87 | QStringList liens(); // renvoie liens 88 | QString nom(); 89 | int noPageDjvu(); 90 | QString page(QStringList req, 91 | int no = 0); // lien si la requête vient d'un hyperlien djvu 92 | QString pageDjvu(int p); 93 | QString pageDjvu(QStringList req, 94 | int no = 0); // surcharge avec calcul des no de page 95 | QString pageXml(QStringList lReq); 96 | QString pgPrec(); 97 | QString pgSuiv(); 98 | QString ramise(QString f); 99 | void vide_index(); 100 | void vide_ligneLiens(); 101 | }; 102 | 103 | class ListeDic : public QObject 104 | { 105 | Q_OBJECT 106 | 107 | private: 108 | QMultiMap liste; 109 | Dictionnaire *currens = NULL; 110 | Dictionnaire *currens2 = NULL; 111 | 112 | public: 113 | Dictionnaire *dictionnaire_par_nom(QString nom); 114 | void ajoute(Dictionnaire *d); 115 | void change_courant(QString nom); 116 | Dictionnaire *courant(); 117 | void change_courant2(QString nom); 118 | Dictionnaire *courant2(); 119 | // page renvoie le code html de la page 120 | // du dictionnaire courant 121 | // correspondant au lemme l. 122 | }; 123 | // Revoir cette classe ListeDic : elle ne devrait pas contenir les dicos 124 | // courants 125 | 126 | #endif 127 | -------------------------------------------------------------------------------- /src/flexion.h: -------------------------------------------------------------------------------- 1 | /* flexion.h 2 | * 3 | * This file is part of COLLATINUS. 4 | * 5 | * COLLATINUS is free software; you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation; either version 2 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * COLLATINVS is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with COLLATINUS; if not, write to the Free Software 17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | * 19 | * © Yves Ouvrard, 2009 - 2016 20 | */ 21 | 22 | #ifndef FLEXION_H 23 | #define FLEXION_H 24 | 25 | #include 26 | #include 27 | 28 | #include 29 | #include 30 | #include 31 | 32 | #include "lemCore.h" 33 | #include "lemme.h" 34 | 35 | #define OMIS 1 36 | #define PARENTH 3 37 | 38 | class Flexion : public QObject 39 | { 40 | Q_OBJECT 41 | 42 | private: 43 | Lemme *_lemme; 44 | LemCore *_lemmatiseur; 45 | // constantes de table html : 46 | QString const static entete; 47 | QString const static lina; 48 | QString const static linb; 49 | QString const static linc; 50 | QString const static queue; 51 | // constantes d'affichage désinence 52 | int const static omis = OMIS; 53 | int const static parenth = PARENTH; 54 | // menu 55 | QString menuLem; 56 | // construction des tableaux par pos 57 | QString tabNom(); 58 | QString tabPron(); 59 | QString tabAdj(); 60 | QString tabAdv(); 61 | QString tabV(); 62 | 63 | public: 64 | Flexion(QObject *parent = 0); 65 | // QStringList const static cas; 66 | QString static entreParenth(QString e); 67 | QStringList const static genres; 68 | QStringList const static nombres; 69 | QStringList const static temps; 70 | QString forme(int m, bool label = false); 71 | QString static gras(QString g); 72 | QStringList menu(); 73 | void setLemme(Lemme *l); 74 | void setMenu(QStringList m); 75 | QString tableau(Lemme *l); 76 | QString tableaux(MapLem *ml); 77 | QString tableaux(MapLem ml); 78 | }; 79 | 80 | #endif 81 | -------------------------------------------------------------------------------- /src/irregs.cpp: -------------------------------------------------------------------------------- 1 | /* irregs.cpp 2 | * 3 | * This file is part of COLLATINUS. 4 | * 5 | * COLLATINUS is free software; you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation; either version 2 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * COLLATINVS is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with COLLATINUS; if not, write to the Free Software 17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | * 19 | * © Yves Ouvrard, 2009 - 2016 20 | */ 21 | 22 | // TODO 23 | // déclinaison interne : jusjurandum, respublica, unusquisque 24 | // autre cas : paterfamilias 25 | // génération des irréguliers 26 | // 27 | 28 | #include "irregs.h" 29 | 30 | /** 31 | * \fn Irreg::Irreg (QString l, QObject *parent) 32 | * \brief Constructeur de la classe Irreg. l est la 33 | * clé du lemme dans la map des lemmes du 34 | * lemmatiseur (classe Lemmat) représenté par 35 | * le paramètre *parent. 36 | */ 37 | Irreg::Irreg(QString l, QObject* parent) 38 | { 39 | if (parent != 0) _lemmat = qobject_cast(parent); 40 | QStringList ecl = l.split(':'); 41 | _grq = ecl.at(0); 42 | if (_grq.endsWith("*")) 43 | { 44 | _grq.chop(1); 45 | _exclusif = true; 46 | } 47 | else 48 | _exclusif = false; 49 | _gr = Ch::atone(_grq); 50 | _lemme = _lemmat->lemme(ecl.at(1)); 51 | _morphos = Modele::listeI(ecl.at(2)); 52 | } 53 | 54 | /** 55 | * \fn bool Irreg::exclusif () 56 | * \brief True si le lemmes est exclusif, c'est à dire 57 | * si la forme régulière calculée par le modèle 58 | * est inusitée, et remplace par la forme irrégulière. 59 | */ 60 | bool Irreg::exclusif() { return _exclusif; } 61 | /** 62 | * \fn QString Irreg::gr () 63 | * \brief Graphie ramiste sans diacritique. 64 | */ 65 | QString Irreg::gr() { return _gr; } 66 | /** 67 | * \fn QString Irreg::grq () 68 | * \brief Graphie ramiset avec diacritiques. 69 | */ 70 | QString Irreg::grq() { return _grq; } 71 | /** 72 | * \fn Lemme* Irreg::lemme () 73 | * \brief Le lemme de l'irrégulier. 74 | */ 75 | Lemme* Irreg::lemme() { return _lemme; } 76 | /** 77 | * \fn QList Irreg::morphos () 78 | * \brief liste des numéros de morphos 79 | * que peut prendre l'irrégulier, en 80 | * tenant compte des quantités. 81 | */ 82 | QList Irreg::morphos() { return _morphos; } 83 | -------------------------------------------------------------------------------- /src/irregs.h: -------------------------------------------------------------------------------- 1 | /* irregs.h 2 | * 3 | * This file is part of COLLATINUS. 4 | * 5 | * COLLATINUS is free software; you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation; either version 2 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * COLLATINVS is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with COLLATINUS; if not, write to the Free Software 17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | * 19 | * © Yves Ouvrard, 2009 - 2016 20 | */ 21 | 22 | #ifndef IRREGS_H 23 | #define IRREGS_H 24 | 25 | #include 26 | #include 27 | #include 28 | 29 | #include "lemCore.h" 30 | #include "ch.h" 31 | #include "lemme.h" 32 | #include "modele.h" 33 | 34 | #include 35 | 36 | class LemCore; 37 | class Lemme; 38 | 39 | class Irreg : public QObject 40 | { 41 | Q_OBJECT 42 | 43 | private: 44 | bool _exclusif; 45 | QString _gr; 46 | QString _grq; 47 | LemCore* _lemmat; 48 | Lemme* _lemme; 49 | QList _morphos; 50 | 51 | public: 52 | Irreg(QString l, QObject* parent = 0); 53 | bool exclusif(); 54 | QString gr(); 55 | QString grq(); 56 | Lemme* lemme(); 57 | QList morphos(); 58 | }; 59 | 60 | #endif 61 | -------------------------------------------------------------------------------- /src/lasla.cpp: -------------------------------------------------------------------------------- 1 | /* lasla.cpp 2 | * 3 | * This file is part of COLLATINUS. 4 | * 5 | * COLLATINUS is free software; you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation; either version 2 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * COLLATINVS is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with COLLATINUS; if not, write to the Free Software 17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | * 19 | * © Yves Ouvrard, 2009 - 2016 20 | */ 21 | 22 | #include "lasla.h" 23 | 24 | /** 25 | * @brief Lasla::Lasla 26 | * @param parent : pointeur vers le parent. 27 | * @param l : pointeur vers un lemmatiseur. 28 | * @param resDir : chemin complet du répertoire de données. 29 | * 30 | * Ce module utilise le lemmatiseur de Collatinus. 31 | * Il a pour fonction spécifique de donner la lemmatisation 32 | * et le code en 9 d'une forme. 33 | * Il ne sert donc que pour les 34 | * applications avec une coloration LASLA. 35 | * 36 | * Si le lemmatiseur est déjà créé par ailleurs, 37 | * il suffit de passer le pointeur en question. 38 | * Si le pointeur n'est pas donné, 39 | * le lemmatiseur sera créé ici. 40 | * Si l'application envisagée utilise plusieurs modules 41 | * intermédiaires (tagueur, scandeur...), 42 | * il vaut mieux créer un seul lemmatiseur commun. 43 | * 44 | * Pour déterminer la catégorie LASLA à un lemme, 45 | * le programme utilise le modèle qui lui est associé. 46 | * Le fichier CatLASLA donne les correspondances. 47 | * Si la correspondances n'est pas trouvée, le code 48 | * en 9 commencera par "k9" en guise de catégorie 49 | * et sous-catégorie. 50 | */ 51 | Lasla::Lasla(QObject *parent, LemCore *l, QString resDir) : QObject(parent) 52 | { 53 | if (l==0) 54 | { 55 | _lemCore = new LemCore(this, resDir); 56 | // Je crée le lemmatiseur... 57 | _lemCore->setExtension(true); 58 | // ... et charge l'extension du lexique. 59 | _lemCore->setCible("k9,fr"); 60 | } 61 | else _lemCore = l; 62 | if (resDir == "") 63 | _resDir = qApp->applicationDirPath() + "/data/"; 64 | else if (resDir.endsWith("/")) _resDir = resDir; 65 | else _resDir = resDir + "/"; 66 | lisCat(); 67 | } 68 | 69 | // Lecture des correspondances entre les modèles de Collatinus 70 | // et les catégories et sous-catégories du LASLA. 71 | void Lasla::lisCat() 72 | { 73 | QStringList lignes = _lemCore->lignesFichier(_resDir + "CatLASLA.txt"); 74 | foreach (QString lin, lignes) 75 | { 76 | if (lin.contains(",")) _catLasla.insert(lin.section(",",0,0),lin.section(",",1,1)); 77 | } 78 | } 79 | 80 | /** 81 | * @brief Lasla::k9 82 | * @param m : une forme 83 | * @return le résultat de la lemmatisation avec le code en 9. 84 | * 85 | * Le résultat se présente comme une chaine de type CSV. 86 | * Chaque ligne est une des possibilité d'analyse et 87 | * est composée de quatre champs séparés par une virgule. 88 | * Le premier champ donne la forme et le deuxième la clef du lemme, 89 | * tous les deux sans quantité. 90 | * Le 3e champ reste vide, il est fait pour contenir l'indice 91 | * d'homonymie du LASLA. Ici, l'éventuel indice est collé 92 | * au lemme, sous la forme d'un chiffre. 93 | * Le lemme de Collatinus est en minuscule (sauf l'initiale), 94 | * ce qui le distingue des lemmes du LASLA, toujours en majuscules. 95 | * Le 4e champ done l'analyse sous la forme d'un code en 9. 96 | */ 97 | QString Lasla::k9(QString m) 98 | { 99 | // qDebug() << m; 100 | QStringList res; 101 | QString cibAct = _lemCore->cible(); 102 | _lemCore->setCible("k9,fr"); 103 | MapLem mm = _lemCore->lemmatiseM(m); 104 | if (mm.isEmpty()) return "\n"; 105 | // Il faut répondre quelque chose, sinon j'attends 30 secondes ! 106 | foreach (Lemme *l, mm.keys()) 107 | { 108 | QString clef = l->cle() + ", ,"; 109 | foreach (SLem s, mm.value(l)) 110 | { 111 | QString code9 = _lemCore->morpho(s.morpho); 112 | QString forme = Ch::atone(s.grq); 113 | if (!s.sufq.isEmpty()) forme += "<" + Ch::atone(s.sufq) +">,"; 114 | else forme += ","; 115 | if (_catLasla.contains(l->modele()->gr())) code9.replace("k9",_catLasla[l->modele()->gr()]); 116 | // qDebug() << clef << s.morpho << code9 << _catLasla[l->modele()->gr()]; 117 | res << forme + clef + code9; 118 | } 119 | } 120 | 121 | _lemCore->setCible(cibAct); 122 | return res.join("\n"); 123 | } 124 | 125 | 126 | -------------------------------------------------------------------------------- /src/lasla.h: -------------------------------------------------------------------------------- 1 | /* lasla.h 2 | * 3 | * This file is part of COLLATINUS. 4 | * 5 | * COLLATINUS is free software; you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation; either version 2 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * COLLATINVS is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with COLLATINUS; if not, write to the Free Software 17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | * 19 | * © Yves Ouvrard, 2009 - 2016 20 | */ 21 | 22 | #ifndef LASLA_H 23 | #define LASLA_H 24 | 25 | #include "lemCore.h" 26 | #include "lemme.h" 27 | #include "ch.h" 28 | 29 | 30 | class Lasla : public QObject 31 | { 32 | // Q_OBJECT 33 | 34 | public: 35 | Lasla(QObject *parent = 0, LemCore *l=0, QString resDir=""); 36 | // Créateur de la classe 37 | QString k9(QString m); 38 | // Code en 9 pour le LASLA 39 | 40 | private: 41 | LemCore * _lemCore; 42 | QString _resDir; 43 | QMap _catLasla; 44 | // Les correspondances entre les modèles de Collatinus 45 | // et les catégories du LASLA 46 | void lisCat(); 47 | // Pour la lecture du fichier. 48 | }; 49 | 50 | #endif // LASLA_H 51 | -------------------------------------------------------------------------------- /src/lemCore.h: -------------------------------------------------------------------------------- 1 | /* lemCore.h 2 | * 3 | * This file is part of COLLATINUS. 4 | * 5 | * COLLATINUS is free software; you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation; either version 2 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * COLLATINVS is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with COLLATINUS; if not, write to the Free Software 17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | * 19 | * © Yves Ouvrard, 2009 - 2016 20 | */ 21 | 22 | #ifndef LEMCORE_H 23 | #define LEMCORE_H 24 | 25 | #include 26 | #include 27 | #include 28 | #include 29 | #include 30 | #include 31 | #include 32 | #include 33 | #include 34 | 35 | #include "ch.h" 36 | #include "irregs.h" 37 | #include "lemme.h" 38 | #include "modele.h" 39 | 40 | class Irreg; 41 | class Lemme; 42 | class Radical; 43 | class Desinence; 44 | 45 | typedef struct 46 | { 47 | QString grq; 48 | int morpho; 49 | QString sufq; 50 | } SLem; 51 | 52 | typedef QMap > MapLem; 53 | 54 | typedef QPair Reglep; 55 | 56 | class LemCore : public QObject 57 | { 58 | Q_OBJECT 59 | 60 | private: 61 | // fonction d'initialisation 62 | void ajAssims(); 63 | void ajAbrev(); 64 | QStringList abr; 65 | // Pour avoir une liste d'abréviation éditable... 66 | void ajContractions(); 67 | int aRomano(QString f); 68 | void lisIrreguliers(); 69 | void lisFichierLexique(QString filepath); 70 | void lisLexique(); 71 | void lisExtension(); 72 | void lisModeles(); 73 | void lisMorphos(QString lang); 74 | void lisTraductions(bool base, bool extension); 75 | // variables et utils 76 | QMap assims; 77 | QMap assimsq; 78 | QMap _contractions; 79 | QMultiMap _desinences; 80 | QString decontracte(QString d); 81 | QMultiMap _irregs; 82 | QMap _cibles; 83 | QMap _lemmes; 84 | QMap _modeles; 85 | QMap _morphos; 86 | QMap _cas; 87 | QMap _genres; 88 | QMap _nombres; 89 | QMap _temps; 90 | QMap _modes; 91 | QMap _voix; 92 | QMap _motsClefs; 93 | // Les morphos doivent pouvoir être données en anglais ! 94 | QMultiMap _radicaux; 95 | QMap _variables; 96 | 97 | bool _extension; // = false; 98 | QString _cible; // langue courante, 2 caractères ou plus 99 | 100 | QMap _tagOcc; // Nombre d'occurrences du tag. 101 | QMap _tagTot; // Nombre total en fonction du premier caractère du tag. 102 | QMap _trigram; // Nombre d'occurrences des séquences de 3 tags. 103 | void lisTags(bool tout = false); 104 | 105 | QString _resDir; // Le chemin du répertoire de ressources 106 | bool _extLoaded; // = true après chargement de l'extension 107 | // Lorsque j'ai chargé l'extension, je dois pouvoir ignorer les analyses qui en viennent. 108 | bool _nbrLoaded; // Si les nombres ont été chargés, je dois les effacer avant de les charger à nouveau. 109 | 110 | public: 111 | LemCore(QObject *parent = 0, QString resDir=""); 112 | bool estAbr(QString m); 113 | // Pour remplacer Ch::abrev.contains(m) avec la liste des abréviations chargées. 114 | void ajDesinence(Desinence *d); 115 | void ajModele(Modele *m); 116 | void ajRadicaux(Lemme *l); 117 | QString assim(QString a); 118 | QString assimq(QString a); 119 | QMap cibles(); 120 | QString desassim(QString a); 121 | QString desassimq(QString a); 122 | static QString deramise(QString r); 123 | static bool estRomain(QString f); 124 | bool inv(Lemme *l, const MapLem ml); 125 | MapLem lemmatise(QString f); // lemmatise une forme 126 | // lemmatiseM lemmatise une forme en contexte 127 | //MapLem lemmatiseM(QString f, bool debPhr = true); 128 | MapLem lemmatiseM(QString f, bool debPhr = true, int etape =0); 129 | Lemme *lemme(QString l); 130 | // lemmes(ml) renvoie la liste des graphies des lemmes 131 | QStringList lemmes(MapLem ml); 132 | QStringList lignesFichier(QString nf); 133 | // Lit les lignes d'un fichier. Est devenu public. 134 | Modele *modele(QString m); 135 | QString morpho(int i); 136 | // QStringList suffixes; 137 | QMap suffixes; 138 | QString variable(QString v); 139 | // Lire un fichier de césures étymologiques (non-phonétiques) 140 | void lireHyphen (QString fichierHyphen); 141 | 142 | // Pour l'internationalisation 143 | QString cas(int i); 144 | QString genre(int i); 145 | QString nombre(int i); 146 | QString temps(int i); 147 | QString modes(int i); 148 | QString voix(int i); 149 | QString motsClefs(int i); 150 | 151 | void setCible(QString c); 152 | QString cible(); 153 | bool optExtension(); 154 | 155 | 156 | // QString tagPhrase(QString phr); 157 | QString tag(Lemme *l, int m); 158 | int fraction(QString listTags); 159 | int tagOcc(QString t); 160 | int trigram(QString seq); 161 | 162 | public slots: 163 | void setExtension(bool e); 164 | }; 165 | 166 | #endif // LEMCORE_H 167 | -------------------------------------------------------------------------------- /src/lemmatiseur.h: -------------------------------------------------------------------------------- 1 | /* lemmatiseur.h 2 | * 3 | * This file is part of COLLATINUS. 4 | * 5 | * COLLATINUS is free software; you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation; either version 2 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * COLLATINVS is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with COLLATINUS; if not, write to the Free Software 17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | * 19 | * © Yves Ouvrard, 2009 - 2016 20 | */ 21 | 22 | #ifndef LEMMATISEUR_H 23 | #define LEMMATISEUR_H 24 | 25 | #include 26 | #include 27 | 28 | #include 29 | 30 | #include "ch.h" 31 | #include "lemCore.h" 32 | 33 | class Lemmatiseur : public QObject 34 | { 35 | Q_OBJECT 36 | public: 37 | Lemmatiseur(QObject *parent = 0, LemCore *l=0, QString cible="", QString resDir=""); 38 | // Créateur de la classe 39 | QStringList frequences(QString txt); 40 | QStringList lemmatiseF(QString f, bool deb); 41 | QString lemmatiseFichier(QString f, bool alpha = false, 42 | bool cumVocibus = false, bool cumMorpho = false, 43 | bool nreconnu = true); 44 | // lemmatiseT lemmatise un texte 45 | QString lemmatiseT(QString &t); 46 | QString lemmatiseT(QString &t, bool alpha, bool cumVocibus = false, 47 | bool cumMorpho = false, bool nreconnu = false); 48 | 49 | void verbaOut(QString fichier); // Connaître l'usage des mots connus 50 | void verbaCognita(QString fichier, bool vb=false); // Coloriser le texte avec les mots connus 51 | 52 | // accesseurs d'options 53 | bool optAlpha(); 54 | bool optHtml(); 55 | bool optFormeT(); 56 | bool optMajPert(); 57 | bool optMorpho(); 58 | bool optNonRec(); 59 | QString cible(); 60 | 61 | public slots : 62 | // modificateurs d'options 63 | void setAlpha(bool a); 64 | void setCible(QString c); 65 | void setHtml(bool h); 66 | void setFormeT(bool f); 67 | void setMajPert(bool mp); 68 | void setMorpho(bool m); 69 | void setNonRec(bool n); 70 | 71 | private: 72 | LemCore * _lemCore; 73 | QString _resDir; 74 | QHash _hLem; 75 | QStringList _couleurs; 76 | // options 77 | bool _alpha; 78 | bool _formeT; 79 | bool _html; 80 | bool _majPert; 81 | bool _morpho; 82 | bool _nonRec; 83 | QString _cible; // langue courante, 2 caractères ou plus 84 | 85 | }; 86 | 87 | #endif // LEMMATISEUR_H 88 | -------------------------------------------------------------------------------- /src/lemme.h: -------------------------------------------------------------------------------- 1 | /* lemme.h 2 | * 3 | * This file is part of COLLATINUS. 4 | * 5 | * COLLATINUS is free software; you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation; either version 2 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * COLLATINVS is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with COLLATINUS; if not, write to the Free Software 17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | * 19 | * © Yves Ouvrard, 2009 - 2016 20 | */ 21 | 22 | #ifndef LEMME_H 23 | #define LEMME_H 24 | 25 | #include 26 | #include 27 | #include 28 | #include 29 | #include 30 | 31 | #include "irregs.h" 32 | #include "lemCore.h" 33 | #include "modele.h" 34 | #include "ch.h" 35 | 36 | class Irreg; 37 | class LemCore; 38 | class Lemme; 39 | class Modele; 40 | 41 | class Radical : public QObject 42 | { 43 | private: 44 | QString _gr; 45 | QString _grq; 46 | Lemme* _lemme; 47 | int _numero; 48 | 49 | public: 50 | Radical(QString g, int n, QObject* parent); 51 | QString gr(); 52 | QString grq() const; 53 | Lemme* lemme(); 54 | Modele* modele(); 55 | int numRad(); 56 | }; 57 | 58 | class Lemme : public QObject 59 | { 60 | Q_OBJECT 61 | private: 62 | QString _cle; 63 | QString _gr; 64 | QString _grd; 65 | QString _grq; 66 | QString _grModele; 67 | QString _hyphen; // Pour les césures étymologies 68 | QString _indMorph; 69 | QList _irregs; 70 | Modele* _modele; 71 | int _nh; 72 | LemCore* _lemmatiseur; 73 | QList _morphosIrrExcl; 74 | int _nbOcc; // Nombre d'occurrences du lemme dans les textes du LASLA 75 | int _origin; // lemmes ou lem_ext 76 | QString _pos; 77 | QMap > _radicaux; 78 | QString _renvoi; 79 | QMap _traduction; 80 | 81 | public: 82 | Lemme(const QString linea, const int origin, QObject* parent); 83 | void ajIrreg(Irreg* irr); 84 | void ajNombre(int n); 85 | void ajRadical(int i, Radical* r); 86 | void ajTrad(QString t, QString l); 87 | QString ambrogio(); 88 | QString cle(); 89 | QList clesR(); 90 | bool estIrregExcl(int nm); 91 | QString genre(); 92 | QString getHyphen (); // Accesseurs pour les césures étymologiques 93 | QString gr(); 94 | QString grq(); 95 | QString grModele(); 96 | QString humain(bool html = false, QString l = "fr", bool nbr = false); 97 | QString indMorph(); 98 | QString irreg(int i, bool* excl); 99 | Modele* modele(); 100 | int nbOcc() const; // Retourne le nombre d'occurrences du lemme 101 | void clearOcc(); // Efface " " " 102 | int nh(); 103 | int origin(); 104 | QString static oteNh(QString g, int& nh); 105 | QString pos(); 106 | QList radical(int r); 107 | bool renvoi(); 108 | void setHyphen (QString h); 109 | QString traduction(QString l); 110 | inline bool operator<(const Lemme &l) const; 111 | }; 112 | 113 | #endif 114 | -------------------------------------------------------------------------------- /src/main.cpp: -------------------------------------------------------------------------------- 1 | /* main.cpp 2 | * 3 | * This file is part of COLLATINUS. 4 | * 5 | * COLLATINUS is free software; you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation; either version 2 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * COLLATINVS is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with COLLATINUS; if not, write to the Free Software 17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | * 19 | * © Yves Ouvrard, 2009 - 2016 20 | */ 21 | 22 | /** 23 | * \file main.cpp 24 | * \brief main 25 | * \author Yves Ouvrard 26 | * \version 11 27 | * \date 2016 28 | * 29 | * main 30 | */ 31 | 32 | #include 33 | 34 | #include "mainwindow.h" 35 | 36 | /** 37 | * \fn main (int argc, char *argv[]) 38 | * \brief fonction principale de l'application. 39 | */ 40 | int main(int argc, char *argv[]) 41 | { 42 | QApplication app(argc, argv); 43 | MainWindow mainWin; 44 | mainWin.show(); 45 | return app.exec(); 46 | } 47 | -------------------------------------------------------------------------------- /src/mainwindow.h: -------------------------------------------------------------------------------- 1 | /* mainwindow.h 2 | * 3 | * This file is part of COLLATINUS. 4 | * 5 | * COLLATINUS is free software; you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation; either version 2 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * COLLATINVS is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with COLLATINUS; if not, write to the Free Software 17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | * 19 | * © Yves Ouvrard, 2009 - 2016 20 | */ 21 | 22 | #ifndef MAINWINDOW_H 23 | #define MAINWINDOW_H 24 | 25 | #include 26 | #include 27 | #include 28 | #include 29 | #include 30 | #include 31 | 32 | #include "flexion.h" 33 | #include "lemCore.h" 34 | #include "dicos.h" 35 | #include "ch.h" 36 | #include "lasla.h" 37 | #include "tagueur.h" 38 | #include "scandeur.h" 39 | #include "lemmatiseur.h" 40 | #include "maj.h" 41 | 42 | QT_BEGIN_NAMESPACE 43 | class QAction; 44 | class QMenu; 45 | class QTextBrowser; 46 | class QTextEdit; 47 | QT_END_NAMESPACE 48 | 49 | class MainWindow; 50 | 51 | class EditLatin : public QTextEdit 52 | { 53 | Q_OBJECT 54 | 55 | private: 56 | MainWindow *mainwindow; 57 | 58 | protected: 59 | void mouseReleaseEvent(QMouseEvent *e); 60 | 61 | public: 62 | EditLatin(QWidget *parent); 63 | bool event(QEvent *event); 64 | }; 65 | 66 | class MainWindow : public QMainWindow 67 | { 68 | Q_OBJECT 69 | 70 | public: 71 | MainWindow(); 72 | // docks 73 | QDockWidget *dockLem; 74 | QDockWidget *dockDic; 75 | QDockWidget *dockScand; 76 | QDockWidget *dockFlex; 77 | QDockWidget *dockTag; 78 | // et second dictionnaire 79 | QWidget *wDic; 80 | // cœur 81 | LemCore *_lemCore; 82 | Flexion *flechisseur; 83 | // modules divers 84 | Lasla *lasla; 85 | Tagueur *tagueur; 86 | Scandeur *scandeur; 87 | Lemmatiseur *_lemmatiseur; 88 | // widgets d'édition et d'affichage 89 | EditLatin *editLatin; 90 | QTextEdit *textEditLem; 91 | QTextEdit *textEditScand; 92 | QTextBrowser *textBrowserDic; 93 | QTextBrowser *textBrowserW; 94 | QTextBrowser *textBrowserFlex; 95 | QTextBrowser *textBrowserTag; 96 | QTextEdit *editeurRes(); 97 | QLineEdit *lineEditLem; 98 | QLineEdit *lineEditDic; 99 | QLineEdit *lineEditDicW; 100 | QLineEdit *lineEditFlex; 101 | QLineEdit *lineEditScand; 102 | // cases à cocher pour la copie 103 | QCheckBox *cbTexteLatin; 104 | QCheckBox *cbLemmatisation; 105 | QCheckBox *cbScansion; 106 | // contrôle des options 107 | QCheckBox *cbAlpha; 108 | QCheckBox *cbHtml; 109 | QCheckBox *cbMajPert; 110 | QCheckBox *cbMorpho; 111 | bool html(); 112 | QAction *syncAct; 113 | QAction *calepAct; 114 | QAction *majPertAct; 115 | // L'option de majuscule pertinente doit être accessible depuis EditLatin. 116 | QStringList lemsDic; 117 | int lireOptionsAccent(); 118 | // Pour le serveur 119 | QString startServer (); 120 | QString stopServer (); 121 | 122 | QString lem2csv(QString texte); 123 | 124 | void tagger(QString t, int p); // Je voudrais créer dans MainWindow l'interface du tagger. 125 | 126 | 127 | private slots: 128 | void afficheLemsDic(bool litt = false, 129 | bool prim = true); // ligne de saisie 130 | void afficheLemsDicLitt(); // relais pour le précédent 131 | void afficheLemsDicW(); // ligne de saisie 132 | void afficheLemsDicLittW(); // relais pour le précédent 133 | void afficheLien(QUrl url); 134 | void afficheLienW(QUrl url); 135 | void alpha(); 136 | void apropos(); 137 | void auxilium(); 138 | void changeGlossarium(QString nomDic); 139 | void changeGlossariumW(QString nomDic); 140 | void changePageDjvu(int p, bool prim = true); 141 | void clicAnte(); 142 | void clicAnteW(); 143 | void clicPost(); 144 | void clicPostW(); 145 | void closeEvent(QCloseEvent *event); 146 | void copie(); 147 | void dialogueCopie(); 148 | void effaceRes(); 149 | void exportPdf(); 150 | void exportCsv(); 151 | void flechisLigne(); 152 | void imprimer(); 153 | void langueInterface(); 154 | void lancer(); 155 | void lemmatiseLigne(); 156 | void lemmatiseTxt(); 157 | void majDic(); 158 | void majLex(); 159 | void montreWDic(bool visible); 160 | void nouveau(); 161 | void ouvrir(); 162 | void police(); 163 | void readSettings(); 164 | void recherche(); 165 | void rechercheBis(); 166 | void scandeLigne(); 167 | void scandeTxt(); 168 | void setCible(); 169 | void setHtml(bool h); 170 | void stat(); 171 | void syncDW(); 172 | void syncWD(); 173 | // Slots d'accentuation 174 | void setAccent(bool b); 175 | void lireFichierHyphen(); 176 | void oteDiacritiques(); 177 | // Slots du serveur 178 | void lancerServeur(bool run=false); 179 | void connexion (); 180 | void exec (); 181 | // Restauration des docks 182 | void dockRestore (); 183 | void verbaCognita(bool vb=false); 184 | void verbaOut(); 185 | 186 | public slots: 187 | void afficheLemsDic(QStringList ll, int no = 0); 188 | void afficheLemsDicW(QStringList ll, int no = 0); 189 | 190 | private: 191 | // initialisation 192 | void createActions(); 193 | void createCibles(); // menu des langues cibles 194 | void createConnections(); 195 | void createDicos(bool prim = true); 196 | void createMenus(); 197 | void createToolBars(); 198 | void createStatusBar(); 199 | void createDockWindows(); 200 | void createDicWindow(); // second dictionnaire 201 | void setLangue(); 202 | 203 | QMenu *fileMenu; 204 | QMenu *editMenu; 205 | QMenu *viewMenu; 206 | QMenu *lFrEngMenu; 207 | QMenu *lexMenu; 208 | QMenu *optMenu; 209 | QMenu *extraMenu; 210 | QMenu *helpMenu; 211 | 212 | QToolBar *toolBar; 213 | 214 | // bascules de lemmatisation 215 | QAction *alphaAct; 216 | QAction *alphaOptAct; 217 | QAction *formeTAct; 218 | QAction *htmlAct; 219 | QAction *morphoAct; 220 | QAction *nonRecAct; 221 | // bascule d'accentuation 222 | QAction *accentAct; 223 | // et options 224 | QActionGroup *optionsAccent; 225 | QAction *longueAct; 226 | QAction *breveAct; 227 | QAction *ambigueAct; 228 | QAction *illiusAct; 229 | QAction *hyphenAct; 230 | QAction *lireHyphenAct; 231 | QAction *actionVerba_cognita; 232 | QAction *verba_cognita_out; 233 | // Nom du répertoire du fichier hyphen.la 234 | QString repHyphen; 235 | QString ficHyphen; 236 | QString repVerba; 237 | // Bascule du serveur 238 | QAction *serverAct; 239 | // Restauration des docks 240 | QAction *dockRestoreAct; 241 | 242 | // bascules du tagger 243 | QAction *affToutAct; 244 | 245 | // Pour le serveur 246 | QTcpServer * serveur; 247 | QTcpSocket * soquette; 248 | 249 | // actions et groupes d'actions 250 | QAction *aproposAct; 251 | QAction *auxAct; 252 | QAction *balaiAct; 253 | QAction *copieAct; 254 | QAction *deZoomAct; 255 | QAction *dicAct; 256 | QAction *dicActW; 257 | QAction *dicLittAct; 258 | QAction *dicLittActW; 259 | QAction *enAct; 260 | QAction *exportAct; 261 | QAction *exportCsvAct; 262 | QAction *fontAct; 263 | QAction *findAct; 264 | QAction *frAct; 265 | QActionGroup *grCibles; 266 | QAction *lancAct; 267 | QAction *majDicAct; 268 | QAction *majLexAct; 269 | QAction *nouvAct; 270 | QAction *oteAAct; 271 | QAction *ouvrirAct; 272 | QAction *printAct; 273 | QAction *quitAct; 274 | QAction *reFindAct; 275 | QAction *statAct; 276 | QAction *syncDWAct; 277 | QAction *syncWDAct; 278 | QAction *visibleWAct; 279 | QAction *extensionWAct; 280 | QAction *zoomAct; 281 | // QAction *undoAct; 282 | // widgets, variables et fonctions du dock dictionnaires 283 | QComboBox *comboGlossaria; 284 | QPushButton *anteButton; 285 | QLabel *labelLewis; 286 | QPushButton *postButton; 287 | ListeDic listeD; 288 | QStringList ldic; 289 | // les mêmes, pour le widget dictionnaires 290 | QComboBox *comboGlossariaW; 291 | QPushButton *anteButtonW; 292 | QLabel *labelLewisW; 293 | QPushButton *postButtonW; 294 | // widgets des docks 295 | QWidget *dockWidgetLem; 296 | QWidget *dockWidgetDic; 297 | QWidget *dockWidgetScand; 298 | QWidget *dockWidgetFlex; 299 | QWidget *dockWidgetTag; 300 | bool dockVisible(QDockWidget *d); 301 | // fonctions et variables diverses 302 | void charger(QString f); 303 | QFont font; 304 | QString nfAb; // nom du fichier à charger 305 | QString nfAd; // nom du fichier de sortie 306 | bool precaution(); // autorise ou non la fermeture du fichier chargé 307 | QString rech; // dernière chaîne recherchée 308 | QString repertoire; 309 | // traductions 310 | QString langueI; 311 | QTranslator *translator; 312 | bool alerte(); 313 | }; 314 | 315 | #endif 316 | -------------------------------------------------------------------------------- /src/maj.h: -------------------------------------------------------------------------------- 1 | /* maj.h 2 | * 3 | * This file is part of COLLATINUS. 4 | * 5 | * COLLATINUS is free software; you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation; either version 2 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * COLLATINVS is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with COLLATINUS; if not, write to the Free Software 17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | * 19 | * © Yves Ouvrard, 2009 - 2016 20 | */ 21 | 22 | #ifndef MAJ_H 23 | #define MAJ_H 24 | 25 | 26 | #include 27 | #include 28 | #include 29 | #include 30 | #include 31 | #include 32 | #include 33 | 34 | #include 35 | #include 36 | #include 37 | 38 | #include 39 | 40 | class Maj : public QDialog 41 | { 42 | Q_OBJECT 43 | 44 | private: 45 | bool installe( 46 | QString nfcol); // décompresse nfcol et l'installe dans data/dicos/ 47 | bool djvu2col(QString nfdjvu); 48 | // Fonction pour générer un .col à partir d'un djvu dans data/dicos/ 49 | bool lem2col(QString nfLem); 50 | // Fonction pour générer un .col à partir d'un fichier lemmes.* ou lem_ext.* 51 | QLabel *label; 52 | QStringList listeF; // liste des fichiers téléchargés 53 | bool _dico; // Mise à jour des dicos ou des lexiques (si faux) 54 | 55 | private slots: 56 | void selectionne(); // lance un dialogue de sélection de fichier 57 | 58 | public: 59 | Maj(bool dic = true, QDialog *parent = 0); 60 | void setFont(QFont font); 61 | }; 62 | 63 | #endif 64 | -------------------------------------------------------------------------------- /src/modele.h: -------------------------------------------------------------------------------- 1 | /* modele.h 2 | * 3 | * This file is part of COLLATINUS. 4 | * 5 | * COLLATINUS is free software; you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation; either version 2 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * COLLATINVS is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with COLLATINUS; if not, write to the Free Software 17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | * 19 | * © Yves Ouvrard, 2009 - 2016 20 | */ 21 | 22 | #ifndef MODELE_H 23 | #define MODELE_H 24 | 25 | #include 26 | #include 27 | #include 28 | #include 29 | #include 30 | 31 | #include 32 | 33 | #include "ch.h" 34 | #include "lemCore.h" 35 | 36 | class LemCore; 37 | class Modele; 38 | 39 | class Desinence : public QObject 40 | { 41 | Q_OBJECT 42 | private: 43 | QString _gr; 44 | QString _grq; 45 | int _morpho; 46 | Modele *_modele; 47 | int _numR; 48 | int _rarete; 49 | 50 | public: 51 | Desinence(QString d, int morph, int nr, Modele *parent = 0); 52 | QString gr(); 53 | QString grq(); 54 | int rarete(); 55 | Modele *modele(); 56 | int morphoNum(); 57 | int numRad(); 58 | void setModele(Modele *m); 59 | }; 60 | 61 | class Modele : public QObject 62 | { 63 | Q_OBJECT 64 | private: 65 | QList _absents; 66 | QStringList static const cles; 67 | QMultiMap _desinences; 68 | QMap _genRadicaux; 69 | QString _gr; 70 | QString _grq; 71 | LemCore *_lemmatiseur; 72 | Modele *_pere; 73 | QChar _pos; 74 | QString _suf; 75 | 76 | public: 77 | Modele(QStringList ll, LemCore *parent = 0); 78 | bool absent(int a); 79 | QList absents(); 80 | QList clesR(); 81 | Desinence *clone(Desinence *d); 82 | bool deja(int m); 83 | QList desinences(int d); 84 | QList desinences(); 85 | bool estUn(QString m); 86 | QString genRadical(int r); 87 | QString gr(); 88 | QString grq(); 89 | static QList listeI(QString l); 90 | QList morphos(); 91 | QChar pos(); 92 | }; 93 | 94 | #endif 95 | -------------------------------------------------------------------------------- /src/mot.cpp: -------------------------------------------------------------------------------- 1 | /* mot.cpp 2 | * 3 | * This file is part of COLLATINUS. 4 | * 5 | * COLLATINUS is free software; you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation; either version 2 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * COLLATINVS is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with COLLATINUS; if not, write to the Free Software 17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | * 19 | * © Yves Ouvrard, 2009 - 2016 20 | */ 21 | 22 | #include "mot.h" 23 | 24 | Mot::Mot(QString forme, int rang, bool debVers, QObject *parent) 25 | { 26 | // qDebug() << forme; 27 | _forme = forme; 28 | _rang = rang; 29 | _lemCore = qobject_cast(parent); 30 | _probas.clear(); 31 | _tagEncl = ""; 32 | if (forme.isEmpty()) 33 | { 34 | _tags << "snt"; 35 | _probas["snt"] = 1; 36 | } 37 | else 38 | { 39 | _mapLem = _lemCore->lemmatiseM(forme, (rang == 0) || debVers); 40 | QString enclitique = ""; 41 | // échecs 42 | if (_mapLem.empty()) 43 | { 44 | // Je ne sais pas encore quoi faire. 45 | } 46 | else foreach (Lemme *l, _mapLem.keys()) 47 | { 48 | QString lem = l->humain(true, _lemCore->cible(), true); 49 | int nb = l->nbOcc(); 50 | foreach (SLem m, _mapLem.value(l)) 51 | { 52 | QString lt = _lemCore->tag(l, m.morpho); // Maintenant, c'est une liste de tags. 53 | // qDebug() << lem << lt; 54 | // Pour les analyses, je garde la liste de tags. 55 | long fr = nb * _lemCore->fraction(lt); 56 | _lemmes.append(lem); 57 | _tags.append(lt); 58 | _nbOcc.append(fr); 59 | // qDebug() << forme << lem << nb << lt << t << fr; 60 | if (m.sufq.isEmpty()) 61 | { 62 | if (m.morpho == 416) _morphos.append(m.grq); 63 | else _morphos.append(m.grq + " " + _lemCore->morpho(m.morpho)); 64 | } 65 | else 66 | { 67 | if (m.morpho == 416) _morphos.append(m.grq + " + " + m.sufq); 68 | else _morphos.append(m.grq + " + " + m.sufq + " " + _lemCore->morpho(m.morpho)); 69 | enclitique = m.sufq; 70 | } 71 | while (lt.size() > 2) 72 | { 73 | QString t = lt.mid(0,3); 74 | lt = lt.mid(4); 75 | fr = nb * _lemCore->fraction(t); 76 | _probas[t] += fr; 77 | } 78 | } 79 | } 80 | // if (Ch::abrev.contains(forme)) 81 | if (_lemCore->estAbr(forme)) 82 | { 83 | // C'est un nom à n'importe quel cas ! 84 | _probas.clear(); 85 | // _tags.clear(); 86 | QString pseudo = "n%1"; 87 | for (int i = 1; i < 7; i++) 88 | { 89 | QString t = pseudo.arg(i)+"1"; 90 | // _tags.append(t); 91 | _probas[t] = _lemCore->tagOcc(t); 92 | } 93 | } 94 | // J'ai construit les listes de lemmes, morphos, tags et nombres d'occurrences. 95 | // J'ai aussi une QMap qui associe les tags aux probas, que je dois normaliser. 96 | long total = 0; 97 | foreach (QString t, _probas.keys()) total += _probas[t]; 98 | if (total == 0) 99 | { 100 | total = 1; 101 | //qDebug() << forme << " : toutes les probas sont nulles !"; 102 | } 103 | _maxProb = ""; 104 | long prMax = -1; 105 | foreach (QString t, _probas.keys()) 106 | { 107 | _bestOf[t] = 0.; // Je prépare une liste des tags 108 | // qDebug() << t << _probas[t]; 109 | long pr = _probas[t] * 1024 /total; 110 | if (prMax < pr) 111 | { 112 | prMax = pr; 113 | _maxProb = t; 114 | } 115 | if (pr == 0) pr++; 116 | _probas[t] = pr; 117 | } 118 | 119 | if ((enclitique == "quĕ") || (enclitique == "vĕ")) _tagEncl = "ce "; 120 | else if (enclitique == "nĕ") _tagEncl = "de "; 121 | else if (enclitique == "st") _tagEncl = "v11"; 122 | if (forme.endsWith("cum")) 123 | { 124 | bool encl = (forme == "mecum") || (forme == "tecum") || (forme == "secum"); 125 | encl = encl || (forme == "nobiscum") || (forme == "vobiscum") || (forme == "quibuscum"); 126 | encl = encl || (forme == "quacum") || (forme == "quocum") || (forme == "quicum"); 127 | if (encl) 128 | { 129 | // qDebug() << forme << " avec enclitique"; 130 | _tagEncl = "re "; 131 | if (_tags.isEmpty()) 132 | { 133 | _tags.append("p61"); 134 | _probas.insert("p61",1024); 135 | _lemmes.append(forme); 136 | _morphos.append("..."); 137 | _nbOcc.append(1); 138 | } 139 | else if (_probas.size() == 1) 140 | { 141 | if (!_probas.keys().contains("p61")) 142 | { 143 | _tags[0]="p61"; 144 | _probas.clear(); 145 | _probas.insert("p61",1024); 146 | } 147 | } 148 | else qDebug() << "Erreur sur " << forme << " : " << _tags; 149 | } 150 | } 151 | } 152 | // qDebug() << forme << _tags.size() << _tags; 153 | } 154 | 155 | QString Mot::choisir(QString t, int np, bool tout) 156 | { 157 | // qDebug() << _forme << t << np << tout << _tags.isEmpty() << _tags.size(); 158 | QString choix = ""; 159 | int valeur = -1; 160 | for (int i=0; i < _tags.size(); i++) 161 | if ((_tags[i].contains(t)) && (valeur < _nbOcc[i])) 162 | { 163 | // _tags peut être une liste de tags, alors que t est un tag. 164 | choix = _lemmes[i] + " — " + _morphos[i]; 165 | valeur = _nbOcc[i]; 166 | } 167 | if (!choix.isEmpty()) 168 | { 169 | choix.prepend("
\n—> "); 170 | choix.append("\n"); 171 | } 172 | if (tout || choix.isEmpty()) 173 | { 174 | choix.append("
    \n"); 175 | for (int i=0; i < _tags.size(); i++) 176 | { 177 | QString format = "%1 : %2 ; "; 178 | QString lg = "
  • " + _lemmes[i] + " — " + _morphos[i] + " ("; 179 | QString lt = _tags[i]; 180 | // qDebug() << lg << lt; 181 | if (lt.size() > 2) 182 | { 183 | while (lt.size() > 2) 184 | { 185 | QString t = lt.mid(0,3); 186 | lt = lt.mid(4); 187 | lg.append(format.arg(t).arg(_bestOf[t])); 188 | } 189 | lg.chop(3); 190 | lg.append(")
  • \n"); 191 | } 192 | else lg.append(" ? )\n"); 193 | choix.append(lg); 194 | } 195 | choix.append("
\n"); 196 | } 197 | QString ajout; 198 | if (t == _maxProb) ajout = t; 199 | else ajout = t + " (" + _maxProb + ")"; 200 | QString debut = "
  • "; 201 | choix.prepend(debut.arg(np).arg(_rang) + _forme + " " + ajout); 202 | choix.append("
  • "); 203 | return choix; 204 | } 205 | 206 | QString Mot::tagEncl() 207 | { 208 | return _tagEncl; 209 | } 210 | 211 | bool Mot::inconnu() 212 | { 213 | return _tags.isEmpty(); 214 | } 215 | 216 | QStringList Mot::tags() 217 | { 218 | QStringList ret = _probas.keys(); 219 | return ret; 220 | } 221 | 222 | long Mot::proba(QString t) 223 | { 224 | if (_probas.contains(t)) 225 | return _probas[t]; 226 | return 0; 227 | } 228 | 229 | QString Mot::forme() 230 | { 231 | return _forme; 232 | } 233 | 234 | void Mot::setBestOf(QString t, double pr) 235 | { 236 | // qDebug() << t << pr; 237 | if (_bestOf.keys().contains(t)) 238 | { 239 | if (pr > _bestOf[t]) _bestOf[t] = pr; 240 | } 241 | else qDebug() << "tag non trouvé pour" << _forme << t << pr; 242 | // _bestOf[t] = pr; 243 | } 244 | -------------------------------------------------------------------------------- /src/mot.h: -------------------------------------------------------------------------------- 1 | /* mot.h 2 | * 3 | * This file is part of COLLATINUS. 4 | * 5 | * COLLATINUS is free software; you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation; either version 2 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * COLLATINVS is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with COLLATINUS; if not, write to the Free Software 17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | * 19 | * © Yves Ouvrard, 2009 - 2016 20 | */ 21 | 22 | #ifndef MOT_H 23 | #define MOT_H 24 | 25 | #include 26 | #include 27 | #include 28 | #include 29 | 30 | #include "lemCore.h" 31 | #include "lemme.h" 32 | #include "ch.h" 33 | 34 | class Mot : public QObject 35 | { 36 | Q_OBJECT 37 | public: 38 | Mot(QString forme, int rang, bool debVers, QObject *parent = 0); 39 | QString choisir(QString t = "", int np = 0, bool tout = true); 40 | long proba(QString t); 41 | QStringList tags(); 42 | QString forme(); 43 | QString tagEncl(); 44 | bool inconnu(); 45 | void setBestOf(QString t, double pr); 46 | double bestOf(QString t); 47 | 48 | private: 49 | LemCore* _lemCore; 50 | QString _forme; 51 | int _rang; 52 | QString _tagEncl; 53 | MapLem _mapLem; 54 | QStringList _lemmes; 55 | QStringList _morphos; 56 | QStringList _tags; 57 | QList _nbOcc; 58 | QMap _probas; 59 | QString _maxProb; 60 | QMap _bestOf; 61 | }; 62 | 63 | #endif // MOT_H 64 | -------------------------------------------------------------------------------- /src/scandeur.h: -------------------------------------------------------------------------------- 1 | /* scandeur.h 2 | * 3 | * This file is part of COLLATINUS. 4 | * 5 | * COLLATINUS is free software; you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation; either version 2 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * COLLATINVS is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with COLLATINUS; if not, write to the Free Software 17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | * 19 | * © Yves Ouvrard, 2009 - 2016 20 | */ 21 | 22 | #ifndef SCANDEUR 23 | #define SCANDEUR 24 | 25 | #include 26 | 27 | #include "ch.h" 28 | #include "lemCore.h" 29 | 30 | class Scandeur : public QObject 31 | { 32 | public: 33 | Scandeur(QObject *parent = 0, LemCore *l=0, QString resDir=""); 34 | // Pour scander, un texte. 35 | QString parPos(QString f); 36 | QString scandeTxt(QString texte, int accent = 0, bool stats = false, bool majAut = false); 37 | 38 | private: 39 | LemCore * _lemCore; 40 | QString _resDir; 41 | QList _reglesp; 42 | void lisParPos(); 43 | QStringList cherchePieds(int nbr, QString ligne, int i, bool pentam); 44 | QStringList formeq(QString forme, bool *nonTrouve, bool debPhr, 45 | int accent = 0); 46 | }; 47 | 48 | #endif // SCANDEUR 49 | 50 | -------------------------------------------------------------------------------- /src/src-saucisson.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/biblissima/collatinus/560ef2d9afceb69157f9a950f9897f552f018d81/src/src-saucisson.txt -------------------------------------------------------------------------------- /src/tagueur.h: -------------------------------------------------------------------------------- 1 | /* tagueur.h 2 | * 3 | * This file is part of COLLATINUS. 4 | * 5 | * COLLATINUS is free software; you can redistribute it and/or modify 6 | * it under the terms of the GNU General Public License as published by 7 | * the Free Software Foundation; either version 2 of the License, or 8 | * (at your option) any later version. 9 | * 10 | * COLLATINVS is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | * GNU General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with COLLATINUS; if not, write to the Free Software 17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 | * 19 | * © Yves Ouvrard, 2009 - 2016 20 | */ 21 | 22 | #ifndef TAGUEUR_H 23 | #define TAGUEUR_H 24 | 25 | #include "lemCore.h" 26 | #include "mot.h" 27 | #include "ch.h" 28 | 29 | class Tagueur : public QObject 30 | { 31 | public: 32 | Tagueur(QObject *parent = 0, LemCore *l=0, QString cible = "", QString resDir=""); 33 | // Pour le tagger 34 | QString tagTexte(QString t, int p, bool affTout = true, bool majPert = true, bool affHTML = true); 35 | 36 | private: 37 | LemCore * _lemCore; 38 | QString _resDir; 39 | }; 40 | 41 | #endif // TAGUEUR_H 42 | --------------------------------------------------------------------------------