Collatinus 11 — guide

index précédent : Tagueur suivant : Utilisation avancée

Serveur

     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.

Syntaxe de la requête

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.

Détails des commandes

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.

Pour utilisateurs avancés

Format des fichiers CSV

Les fichiers CSV reproduisent plus ou moins les informations contenues dans l'onglet de lemmatisation ou celui du tagueur. Le séparateur de champs est ici le caractère de tabulation. En effet, contrairement aux autres séparateurs courants (virgule ou point-virgule), il n'est pas utilisé dans les traductions proposées par Collatinus.
NB : l'encodage des caractères est toujours l'UTF-8. Des logiciels obsolètes comme Excel auront peut-être du mal à lire ces fichiers CSV. Les utilisateurs qui tiennent à Excel trouveront des informations pour lui faire digérer l'UTF-8 en suivant ce lien.
Le fonctionnement de l'export et le format final seront différents dans les deux cas. Cette fonctionnalité étant nouvelle, le format des fichiers pourrait évoluer dans le futur (en particulier en fonction de la demande des utilisateurs). A priori, plutôt avec un éventuel ajout d'informations, donc de colonnes. Si le contenu d'une colonne n'intéresse pas un utilisateur, il devra la supprimer ou se contenter de l'ignorer.

Exemples d'appel au port 5555

Je donne ici, à titre d'exemples, les routines qui appellent le serveur de Collatinus que nous avons écrites en Qt5 et en PHP. Ce ne sont que des exemples qui, je l'espère, inspireront les adeptes d'autres langages désireux de converser avec Collatinus pour des applications spécifiques.

Exemple de macros utilisées sous LibreOffice pour interroger Collatinus

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