├── .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 |
11 |
12 | Les onglets de la partie inférieure peuvent être
13 | déplacés et redimensionnés :
14 |
15 |
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 |
62 | modèle:nom-du-modèle Exemple : modele:uita
63 | Liste des radicaux :
64 | R:<n1>:<n2>,<ch>
65 |
66 |
67 | n1 : numéro du radical
68 | n2 : nombre de caractères à ôter de la forme canonique
69 | ch : chaîne à ajouter à la chaîne obtenue pour avoir le radical.
70 | S'il n'y a aucune chaîne à ajouter, la valeur est 0.
71 | exemple pour uita : R:1:1:0 ,
72 | ce qui signifie que pour le radical 1, on enlève un caractère
73 | à uita , ce qui donne uit , et on n'ajoute rien.
74 |
75 |
76 | désinences :
77 | des:<intervalle>:<num>:<listeDes>
78 |
79 |
80 | intervale : liste de n° de morphologies séparées
81 | par des virgules, ou intervalle de numéros
82 | <premier>–<dernier>. Les deux méthodes peuvent
83 | voisiner dans un intervalle.
84 | num : numéro du radical utilisé par ces désinences.
85 | listeDes : liste des désiences. On peut ne donner qu'une fois une désinence qui se répète en fin de liste.
86 |
87 |
88 |
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 |
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 = .
137 | son modèle, pris dans le fichier modeles.la ;
138 | s'il n'est pas défini par modeles.la, son radical de
139 | génitif, ou d'infectum pour les verbes ;
140 | s'il n'est pas défini par modeles.la, son radical de
141 | perfectum ;
142 | ses indications morphologiques
143 | le nombre d'occurrences du lemme dans les textes du LASLA
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 | 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 ;
172 | Le lemme, sans ses quantités ;
173 | 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.
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 | lemme : le lemme sans quantités ;
196 | traduction : la traduction dans la langue cible.
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 |
205 | Les assimilations : la forme affert n'est pas reconnue, mais
206 | une règle d'assimilation permet de remplacer -aff-
207 | par -adf- , et d'analyser aussi la forme
208 | adfert , qui est reconnue.
209 | Les contractions : la forme amassem n'est pas reconnue, mais une
210 | règle de contraction permet de remplacer -assem par
211 | -auissem , ce qui donne amauissem , qui est reconnu.
212 |
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 | Lancer Collatinus — En cliquant sur une icone,
11 | par le menu principal…
12 | Charger un texte latin Trois méthodes :
13 | Soit en choisissant, dans le menu Fichier
14 | l'option Ouvrir , et en sélectionnant un fichier;
15 | Soit avec le raccourci Ctrl+O (pour Mac,
16 | on remplacera Ctrl par Cmd ),
17 | qui ouvre le même dialogue ;
18 | Soit en collant dans la partie supérieure de
19 | l'application le contenu du presse papier rempli
20 | avec la partie sélectionnée d'un texte latin. La
21 | manière de faire un copier-coller dépend du
22 | système (Linux, Macintosh, Windows, etc.) ;
23 | 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.
27 | Cliquer sur un mot du texte : dans le(s) onglet(s)
28 | visibles, le résultat apparaît.
29 | Pour effacer le résultat , on clique sur l'icone
30 | représentant un balai (image).
31 | 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.
35 | 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-C … Ctrl-V ).
42 | Pour enregistrer les résultats au format pdf , on
43 | choisit l'option Fichier / exporter en pdf ;
44 | Pour imprimer les résultats, on choisit l'option
45 | Fichier / Imprimer, ou on clique sur l'icone (ici,
46 | l'icone imprimante) ;
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 |
11 |
12 | Et voici un résumé des commandes :
13 |
14 |
15 | Choix du dictionnaire dans un menu déroulant ;
16 | 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) ;
21 | 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) ;
24 | 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 ;
26 | 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).
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 | Fenêtre, éditeurs et boutons
16 | Une présentation de ce qu'on voit lorsqu'on a lancé
17 | Collatinus.
18 | Pour débuter Un guide pas à pas
19 | pour les premières utilisations.
20 | 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.
26 | 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.
30 | 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.
34 | Fléchir Afficher la déclinaison
35 | d'un mot, la conjugaison d'un verbe.
36 | Tagger Utiliser un tagueur
37 | probabiliste pour obtenir la meilleure analyse
38 | de la phrase ou du texte.
39 | Serveur Interroger Collatinus depuis
40 | une autre application.
41 | 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.
45 | Pour les programmeurs Le code
46 | source de l'application est disponible, et peut
47 | être adapté pour analyser une autre langue flexionnelle.
48 | Remerciements, licence .
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 |
44 |
45 | De gauche à droite :
46 |
47 |
48 | 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 .
51 | Calepino : Si l'option est activée, les lemmes sont traduits dans
52 | toutes les langues cibles disponibles.
53 | Morpho : permet d'afficher toutes les analyses
54 | morphologiques possibles de la forme.
55 | ordre alpha : range les lemmes par ordre alphabétique si elle est
56 | activée, sinon dans l'ordre d'apparition dans le texte.
57 | avec formes : chaque lemmatisation est précédée de la forme telle
58 | qu'elle apparaît dans le texte.
59 | format html : permet une meilleure présentation visuelle, mais
60 | ralentit l'affichage des textes longs.
61 | 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.
64 | 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.
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 | Cliquer sur un mot du texte pour en obtenir
22 | la scansion ou l'accentuation.
23 |
24 | Cliquer sur l'icone engrenages pour
25 | scander ou accentuer tout le texte.
26 | Saisir un texte dans la ligne de saisie
27 | et de frapper la touche Entrée .
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 | Le nombre d’occurrences de chaque lemme.
72 | La fréquence des différents cas (pour les formes
73 | déclinées ) et modes (pour les verbes ).
74 |
75 |
76 | Le nombre d’occurrences de chaque séquence de 3 tags.
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 | 
11 |
12 | Les onglets de la partie inférieure peuvent être
13 | déplacés et redimensionnés :
14 |
15 | 
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 | 
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 | 
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 |
--------------------------------------------------------------------------------