Collatinus 11 — guide
index précédent : Tagueur suivant : Utilisation avancée
Cette fonctionnalité est nouvelle et
s’adresse plutôt aux utilisateurs expérimentés.
Le serveur de Collatinus permet à d’autres programmes d’interroger Collatinus et de récupérer ses réponses. On l’active et le désactive dans le menu Extra/Serveur. Il faut ensuite laisser Collatinus tourner (éventuellement en arrière plan) pour qu’il puisse répondre aux requêtes.
Pour les amateurs de commandes en ligne, Collatinus est fourni avec un petit utilitaire Client_C11 qui peut servir d’intermédiaire. Sous Windows, Client_C11.exe est placé à côté de l’exécutable Collatinus_11.exe. Sous MacOS, il est enfoui au cœur de Collatinus_11.1.app à côté de l’exécutable (Collatinus_11.1.app/Contents/MacOS/Client_C11). La syntaxe ressemble à celle d'Unix. Par exemple :
./Client_C11 -lfr arma
donnera les lemmatisations possibles de “arma” avec les traductions en français. Le résultat de l’interrogation est également placé dans le presse-papier pour en permettre l’utilisation dans un traitement de texte.
Dans LibreOffice, j’ai écrit des macros qui permettent d’interroger Collatinus sans quitter le tratement de texte. Sans être spécialiste, je donne néanmoins le code de mes macros LibreOffice à titre d'exemple au bas de cette page. J'ai également associé des raccourcis clavier pour accéder facilement à ces macros. Ça doit être possible aussi sous msOffice.
La syntaxe est ‘[cmd] [texte]’ ou ‘[cmd] -f nom_de_fichier’. Éventuellement complétée par ‘-o nom_de_fichier_de_sortie’.
Contrairement à l'usage Unix, on ne peut pas combiner plusieurs commandes. Si on veut obtenir, par exemple, la scansion et la lemmatisation d'un texte, il faudra envoyer deux requêtes distinctes.
Par défaut (sans cmd), on obtient la scansion du texte.
Les commandes possibles sont :
Avec l'option ‘-f nom_de_fichier’, c'est le contenu du fichier qui est traité. Comme le fichier est ouvert dans Collatinus, il vaut probablement mieux donner le chemin complet du fichier. Par exemple :
/Users/Philippe/Documents/Virgile/Eneide1.txt
Avec l'option ‘-o nom_de_fichier_de_sortie’, le résultat de l'opération est stocké dans le fichier. Comme pour -f, il vaut mieux donner le chemin complet.
Attention, les commandes (-c, -C et -t) modifient les paramètres correspondants de l'application. Si un texte suit les commandes qui n'en utilise pas (-c, -C et -?), il est ignoré. L'affichage de l'aide n'affecte en rien l'application.
Remarque sur les langues : la langue-cible (pour les traductions) est donnée, en général, sur deux lettres. Toutefois, en dehors du Français (fr) et de l'Anglais (en) qui ont presque toutes les traductions, les lexiques sont aujourd'hui limités (environ 11 000 traductions). Par défaut, si la traduction dans la langue choisie n'existe pas, Collatinus donne la traduction française. On peut changer ce comportement en spécifiant plusieurs langues : par exemple, -tde.en.fr ou -L3de.en.fr donnera la traduction en Allemand si elle existe, sinon il cherchera la traduction en Anglais avant de se rabattre, si nécessaire, sur la traduction française. En bref, la langue peut être spécifiée sur 2, 5 ou 8 caractères. Le séparateur (le "." dans l'exemple ci-dessus) est ignoré.
Les commandes avec texte modifient temporairement les paramètres de l'application, mais les rétablissent à la fin du traitement. Les commandes -s, -a, -l et -h ont leur contrepartie en majuscule (-S, -A, -L et -H) qui considèreront que les majuscules sont pertinentes.
* -a0 est équivalent à -s et retourne donc le texte scandé.
Par exemple : ./Client_C11 -a0 tenebrae ==> tĕnē̆brāe
* -a1 considère qu'une voyelle commune en pénultième position est accentuée.
Par exemple : ./Client_C11 -a1 tenebrae ==> tenébræ (paroxyton)
* -a2 considère qu'une voyelle commune en pénultième position n'est pas accentuée
Par exemple : ./Client_C11 -a2 tenebrae ==> ténebræ (proparoxyton)
* -a3 n'accentue pas les mots dont la pénultième est commune.
-E -f /Users/Philippe/Documents/Virgile/Eneide1.txt -o /Users/Philippe/Documents/Virgile/Eneide1_lem.csv
Contrairement à l'export en CSV que l'on trouve dans les menus de Collatinus, on n'a pas d'options possibles ici. Les formes sont données dans l'ordre du texte et les analyses morpho-syntaxiques ne sont pas données.
-P3 -f /Users/Philippe/Documents/Virgile/Eneide1.txt -o /Users/Philippe/Documents/Virgile/Eneide1_tag.csv
Les options sont codées sur 2 bits qui s'ajoutent. Si l'option n'est pas spécifiée, la valeur 0 est prise par défaut.
QTcpSocket * tcpSocket = new QTcpSocket();
tcpSocket->abort();
tcpSocket->connectToHost(QHostAddress::LocalHost, 5555);
QByteArray ba = req.toUtf8();
tcpSocket->write(ba);
tcpSocket->waitForBytesWritten();
tcpSocket->waitForReadyRead();
ba = tcpSocket->readAll();
tcpSocket->disconnectFromHost();
tcpSocket->close();
QString rep(ba);
std::cout << rep.toStdString();
//---- Transmet la requete au demon sur le serveur
function interroge($requete) {
$sk = fsockopen("localhost", 5555, $errnum, $errstr, 30);
if (!$sk) {
return "erreur $errnum $errstr";
}
$avant = array('æ','Æ','œ','Œ','̀','́','à','á','è','é','ì','í','ò','ó','ù','ú','À','Á','È','É','Ì','Í','Ò','Ó','Ù','Ú');
$apres = array('ae','Ae','oe','Oe','','','a','a','e','e','i','i','o','o','u','u','A','A','E','E','I','I','O','O','U','U');
$requete = str_replace($avant, $apres, $requete);
$avant = array('̄','̆','ā','ă','ē','ĕ','ī','ĭ','ō','ŏ','ū','ŭ','Ā','Ă','Ē','Ĕ','Ī','Ĭ','Ō','Ŏ','Ū','Ŭ');
$apres = array('','','a','a','e','e','i','i','o','o','u','u','A','A','E','E','I','I','O','O','U','U');
$requete = str_replace($avant, $apres, $requete);
// Remplacement de caractères exotiques par leur équivalent ASCII
fwrite($sk, $requete);
$dati = "";
while (!feof($sk)) {
$dati .= fgets($sk, 1024);
}
fclose($sk);
return $dati;
}
On peut créer des macros en allant dans le menu Outils/Macros/Éditer les macros de LibreOffice en ayant ouvert un document Texte. On arrive alors dans un monde inconnu où on va créer un nouveau module et y coller le code ci-dessous.
Remarque : ce code appelle Client_C11 et il faut lui donner l'adresse complète de celui-ci. Je donne en commentaire une suggestion pour les utilisateur de windows, mais je n'ai pas testé. D'autre part, il est probable qu'il y ait moyen d'appeler directement le port 5555 en Basic...
REM ***** BASIC *****
Sub Main
End Sub
' Coll_Req est la routine clef qui envoie une requête à Collatinus.
' Elle fonctionne sous LibreOffice 4.2 et 5.3 sur Mac et
' elle nécessite surement des ajustements pour d'autres machines.
'
' Elle prend un paramètre, cmd$, qui est la commande à transmettre.
' Elle envoie le texte sélectionné ou le mot sous le curseur,
' précédé par cmd$, à Collatinus en passant par Client_C11.
' Cela suppose évidemment que Collatinus tourne et que
' son serveur est actif.
' La réponse de Collatinus est dans le presse-papier.
' Cette routine l'affiche dans une boîte de dialogue.
' Dans la suite, elle est appelée avec "-S", "-L" ou "-A14"
' pour scander, lemmatiser ou accentuer.
Sub Coll_Req (cmd$)
oCurSelection = thisComponent.getCurrentSelection()
Dim morceau As String
morceau = oCurSelection.getByIndex(0).getString
if morceau = "" Then
' Si la sélection est vide, je prends le mot sous le curseur
oVC = thisComponent.getCurrentController.getViewCursor
oCursor = oVC.getText.createTextCursorByRange(oVC)
oCursor.gotoEndOfWord(false)
oCursor.gotoStartOfWord(true)
morceau = oCursor.string
end if
' Appel à un programme externe qui relaie la demande au port 5555
dim prog$
prog$ = "/Applications/Collatinus_11.app/Contents/MacOS/Client_C11"
' Cette adresse absolue est celle de l'exécutable Client_C11
' lors d'une installation standard sur Mac (dans le dossier Applications).
' Sous Windows, elle devrait être définie différemment. Peut-être :
' prog$ = "C:\Program Files\Collatinus_11\Client_C11.exe"
' Lors d'une installation standard, un alias de Collatinus est installé
' sur le bureau. On peut cliquer sur l'alias et afficher ses propriétés.
' La recherche de l'original donne l'adresse complète de l'exécutable
' Collatinus_11.exe. Client_C11.exe est juste à côté.
Shell(prog$,6,cmd$ + " " + morceau,true)
' La réponse est dans le presse-papier
' Je recopie un code trouvé sur le web
' https://www.experts-exchange.com/questions/23646654/Moving-text-data-directly-from-clipboard-into-a-var-using-OpenOffice-Basic-in-CALC.html
Dim oClip, oClipContents, oTypes
Dim oConverter, convertedString$
Dim i%, iPlainLoc%
iPlainLoc = -1
Dim s$ : s$ = "com.sun.star.datatransfer.clipboard.SystemClipboard"
oClip = createUnoService(s$)
oConverter = createUnoService("com.sun.star.script.Converter")
oClipContents = oClip.getContents()
oTypes = oClipContents.getTransferDataFlavors()
For i=LBound(oTypes) To UBound(oTypes)
If oTypes(i).MimeType = "text/plain;charset=utf-16" Then
iPlainLoc = i
Exit For
End If
Next
If (iPlainLoc >= 0) Then
convertedString = oConverter.convertToSimpleType( _
oClipContents.getTransferData(oTypes(iPlainLoc)), _
com.sun.star.uno.TypeClass.STRING)
MsgBox convertedString
End If
' Fin de copie.
End Sub
' J'ai maintenant plusieurs possibilités du côté du serveur
' (accentuation, scansion, lemmatisation...)
Sub Coll_Scand
Coll_Req ("-S")
End Sub
Sub Coll_Accent
Coll_Req ("-A14")
End Sub
Sub Coll_Lem
Coll_Req ("-L")
End Sub
On peut ensuite associer à ces macros des raccourcis clavier en allant dans Outils/Personnaliser. On a une fenêtre avec plusieurs onglets : celui qui nous intéresse est Clavier. Un premier cadre donne les raccourcis clavier dont beaucoup, surtout en début de liste, sont déjà utilisés. On en choisit un qui est libre et pas trop difficile à retenir et à obtenir. Par exemple, shift-cmd-L pour lemmatiser. Dans le cadre en bas à gauche ("Catégorie"), il faut aller chercher le module que l'on a créé. Chez moi, il s'appelle "Module1" et il est rangé dans Macros LibreOffice/user/Standard. Quand on l'a sélectionné, on voit apparaître dans le cadre "Fonction" les routines que l'on a définies. On clique sur celle que l'on veut, par exemple Coll_Lem, et on peut l'associer au raccourci de notre choix.
index précédent : Tagueur suivant : Utilisation avancée