André-Jacob ROUBO - Le Forum

Le mieux qu'il est possible.

Vous n'êtes pas identifié(e).

#1 21/03/2018 02:47

jrbastien
Membre
Inscription : 19/03/2018
Messages : 20

De l'utilisation du S long (ſ)

Veuillez me pardonnez ce titre au goût douteux, j'aime bien utiliser cette forme en usage dans l'ouvrage de Roubo.

Bien que je comprennes qu'il n'est pas question pour l'instant d’offrir un version digitale (corrigée) de l’œuvre de Roubo, je me permets d'expliquer comment gérer les "s" longs aux cas où d'autres utilisateurs auraient des textes à partager.

Donc, s'il est convenu qu'il est préférable de conserver les s longs lors de la lecture/numérisation  de Roubo, je crois que tout texte qui a été modernisé peut se convertir à l'aide de ces 3 règles de base:

- Tout "s" qui est minuscule, en début ou au milieu d'un mot est un "s" long.
- Tous doubles "ss" minuscules sont des s longs.
- Les "s" utilisés pour la description des figures (exemple les points r s t) ne sont pas long.

Une simple recherche et remplacement avec ces expressions régulières permet de remettre les s longs:

Recherche d'un simple s au début où au milieu d'un mot:

[== RegEx ==]
(?<=([a-rt-zA-RT-Zçàâéèêëîôûù\s]))[s](?=[a-rt-zçàâéèêëîôûù])

Recherche d'un double s au milieu d'un mot:

[== RegEx ==]
s{2}

Afin de ne pas confondre les lettres utilisées dans les figures avec des mots, il est préférable de les espacer. Ce qui semble aussi le cas dans l’œuvre originale.

Me laisser savoir si j'oublie quelque chose,

Merci.

Hors ligne

#2 26/03/2018 00:00

smcj
Administrator
Lieu : Celle - Plateau de Millevaches
Inscription : 16/01/2018
Messages : 21
Site Web

Re : De l'utilisation du S long (ſ)

Sachant que je pense, comme vous et pour ce sujet précis, sensiblement de la même façon, je vais vous répondre ... complètement à côté de la plaque...

Oui, les expressions régulières sont très élégantes et résolvent souvent des choses de manière très concise avec un effet quasi-magique. Le schéma que vous nous donnez à voir me semble très satisfaisant et doit pouvoir, sans le moindre souci, être appliqué à votre version actuelle. Le problème n’est pas, il me semble dans le retour d’une version du XXIe siècle à l’originale puisque l’orthographe de « L’Art du Menuisier » est tout de même très stable par rapport, par exemple, à des textes publiés juste un siècle plus tôt. La problématique est complexe de par la pauvreté des résultats OCR actuels. Je vais essayer de développer cela dans votre autre fil que vous avez posté ici mais je voudrais, dans celui-ci, développer la partie strictement technique ou, plus exactement, et de mon point de vue, terriblement pragmatique.

Car si parler d’expressions régulières pour résoudre certaines problématiques d’OCR est une chose parfaitement limpide à votre humble serviteur, il reste que j’accorde encore à la très large majorité de nos lecteurs le droit d’être ignorants de ces choses : on peut être amateur de copeaux sans pour autant gosser les octets ... si ce n’est, la réciproque... Ceux qui, comme vous et moi je crois, se vautrent dans cet universalisme, ont hérité de cet ADN des Lumières où un Duhamel du Monceau (entre autres) passait de l’Agriculture à la Marine sans oublier de signer de sa plume l’éloge fort grassouillet de notre Menuisier...

Vous lancez sans doute aussi ce fil, suite à ma réponse à votre présentation sur le présent forum vous titillant le JavaScript pour vous mieux connaître... Et c’est justice parce que, justement, le code proposé à une personne dont j’avais bien idée que les octets ne lui étaient pas étrangers, pouvait s’amuser de mes petits essais et autres plaisanteries du moment, mais qui ne sont, forcément, qu’apéritives. Donc il est acquis qu’il ne me pose, en général, pas de problème d’utiliser les expressions régulières. JavaScript les utilise, mais, bien avant de procéder par un langage de programmation, un logiciel comme LibreOffice en fait clairement usage, avec toute la puissance qu’elles apportent. Mon petit doigt m’a dit que le logiciel libre ne vous provoque pas d’urticaire puisque vous forgez des fontes comme d’autres des tuyaux d’orgues ; ça tombe bien, moi non plus. Figurez-vous que le langage des macros de LibreOffice (car OpenOffice, hein, bon) m’est, aussi, plutôt sympathique. Alors il m’arrive de pondre çà et là des petites crottes, souvent pour aider les gens. À la suite d’une demande faite par un individu dont je n’ai plus la moindre coordonnée, j’avais primitivement pondu celle-là dans un français rigoureux et sur un forum où on pouvait publier sans subir les foudres de la modération à la moindre faute de majuscule oubliée en tête de fil... Mais ce forum francophone est mort (et enterré, je le pleure encore) et j’ai dû me rabattre sur une mauvaise traduction, de mon pauvre cru, en anglais, juste parce que je trouvais que ma crotte sentait plutôt bon. Il vous faut aussi savoir que le but premier était d’anonymiser un texte et de pouvoir retourner, dans la mesure du possible, à l’original en un clic ou presque. En fait, cette broutille s’avère extrêmement puissante à l’usage dans son simple concept et va, sans doute, nous être très utile pour remettre en place les erreurs systématiques de l’OCR, par exemple d’Internet Archive (typiquement « eft » pour « eſt »). Tout réside dans la simple idée d’utiliser un tableur comme d’une énÂÛrme boite de dialogue et à faire discuter les modules distincts d’une suite bureautique (ici Calc et Writer) qui ne demandent que ça.

Nord-Américain vous êtes, vous n’avez pas, comme nous-autres, toutes les peines du monde à prononcer : « il eut fallu que vous ſpokaſſiez ». Mais comme nous ne sommes pas (forcément) entre nous, je vous donne, quand même, ici, la possibilité de télécharger dans la langue de Jean-Baptiste Poquelin le fichier « rechercherRemplacerParLot.ods » et son corrolaire « LesDupontDurand.odt », évidemment destiné à LibreOffice, avec macros (que vous devrez accepter, c’est-codé-par moi,-non-il-n’y-a-pas-de-virus-dedans), le premier étant évidemment un fichier de tableur (Calc) et l’autre de traitement de texte (Writer). Comme j’aime quand même énormément me faire bien comprendre, j’ai traduit jusqu’aux noms de variables d’une version à l’autre. Si vous n’êtes pas à l’aise dans ces choses, préférez la version francophone. Une fois que vous aurez compris toutes les vicissitudes de Monsieur Dupont de Paris et Madame Durand de Lyon, on pourra faire évoluer ce point, par exemple dans le présent fil de forum. Mais commencez d’abord par vous instruire et nous en reparlerons. Surtout, sachez que, dans notre cas, cette petite crotte décuple la puissance des expressions régulières parce qu’elle permet, sans programmation de l’utilisateur (juste de la saisie), de les faire défiler en cascade. À terme, nous allons arriver à un fichier qui aura « appris » toutes les erreurs systématiques d’Internet Archive. Le travail que cela mâche est, selon moi, quand même assez énorme.

Mais en attendant que vous vous instruisiez de mes crottes, permettez-moi de vous ramener à votre demande :

Comme vous aurez noté toutes les méchancetés que je vous dis par ailleurs, prenons comme exemple le fichier « exempleAvantPropos » qui contient aussi une macro, que vous pourrez installer durablement (et hors ce fichiers spécifique donc) dans votre machine si le cœur vous en dit. Je pars évidemment du principe que vous ayez, au moins OpenOffice, même s’il serait plus simple que vous opériez avec LibreOffice. Une fois le texte devant vos yeux appelez la boite de dialogue de « Rechercher & remplacer », soit par le menu « Édition », soit (plus rapide) par le raccourci clavier [ Ctrl ] + [ H ].

  • Dans « Rechercher », posez la lettre « s » en minuscule.

  • Dans « Remplacer », posez la lettre « ſ ».

  • Cochez la case « Respecter la casse ».

  • Cliquer sur le bouton « Tout remplacer ».

Tout cela est très joli, mais, comme vous le dites très bien en substance ailleurs, il n’y a jamais de s long en fin de mot. Donc, on est reparti pour corriger ce détail, et cette fois, ce sont les expressions régulières (dont l’aide est en ligne) qui vont nous le permettre.

  • Appelez la boite de dialogue de « Rechercher & remplacer ».

  • Cliquez sur « Autre option » et validez la case à cocher « Expressions régulières » si ce n’est pas le cas.

  • Dans « Rechercher », posez l’expression « « ſ\b », soit un s long, juste s’il est en fin de mot.

  • Cliquer sur le bouton « Tout remplacer ».

Il reste encore à corriger, sans expressions régulières, la problématique des s longs qui ne précèdent jamais une apostrophe. Et puis les signes doubles précédés d’une espace insécable. Et puis... et puis... Vous ne trouvez pas ça un peu longuet vous ? Allez : fermez le fichier et rouvrez-le, sans oublier d’accepter les macros. Pour ce fichier (et lui seul, juste pour la démonstration, nous verrons plus tard comment faire pour que ce soit général à Writer), vous devriez aller voir au bas du menu « Outils », l’option « Traitement pour A.-J. Roubo. » (étonnant non ?). La chose fait TOUT le travail, de manière procédurale, de choses évidentes et que l’on refait à chaque fois. Le code est le suivant :

' ╔══════════════════════════════════════════════════════════════════════════════╗
' ║ Démonstration pour Roubo (perfectible).                                      ║█
' ╚══════════════════════════════════════════════════════════════════════════════╝█
'  ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀

Sub monRoubo()
 Dim      monReplace As Object
 Dim RechRemp(1, 10) As String, chaineImpossible As String
 Dim               i As Integer

 chaineImpossible = "ireazfdnqsbfjqsghk"

 ' Marquer tous les ESPACES NORMAUX devant les caractères "!", "?", ":" et ";".
 RechRemp(0,  0) = "(" & chr(32) & ")([!?:;])"          : RechRemp(1,  0) = chaineImpossible & "&"

 ' Marquer tous les ESPACES INSÉCABLES devant les caractères "!", "?", ":" et ";".
 RechRemp(0,  1) = "(" & chr(160) & ")([!?:;])"         : RechRemp(1,  1) = chaineImpossible & "&"

 ' Supprimer tous les ESPACES MARQUÉS devant les caractères "!", "?", ":" et ";".
 RechRemp(0,  2) = chaineImpossible & "."               : RechRemp(1,  2) = ""

 ' RAJOUTER un espace insécable devant les caractères "!", "?", ":" et ";".
 RechRemp(0,  3) = "([!?:;])"                           : RechRemp(1,  3) = chr(160) & "&"

 ' Apostrophe américaine par apostrophe typographique.
 RechRemp(0,  4) = "'"                                  : RechRemp(1,  4) = "’"

 ' Tous les "s" en "s longs".
 RechRemp(0,  5) = "s"                                  : RechRemp(1,  5) = "ſ"

 ' Tous les "s longs" finaux en "s".
 RechRemp(0,  6) = "ſ\b"                                : RechRemp(1,  6) = "s"

 ' Tous les "s longs" précédant une apostrophe en "s".
 RechRemp(0,  7) = "ſ’"                                 : RechRemp(1,  7) = "s’"

 monReplace = thisComponent.createReplaceDescriptor()

 For i = 0 to 7
  monReplace.SearchCaseSensitive     = True
  monReplace.SearchRegularExpression = True
  monReplace.SearchString            = RechRemp(0, i)
  monReplace.ReplaceString           = RechRemp(1, i)

  thisComponent.replaceAll (monReplace ())
 Next i
End Sub

J’ai encore évité les s qui font appel aux parties de Figures, juste parce que cet exemple est une introduction. L’ajout ne poserait évidemment pas de problème puisque ces s sont entourés d’espaces. Je sais bien que ma manière de faire est, par son côté procédural, beaucoup moins « chic » qu’une expression régulière qui a « de la gueule » informatiquement parlant. Mais la correction pour obtenir une transcription digne de ce nom ne se fait qu’une seule fois non ? Pour information (et exemple), toutes les pages de ce site ont été produites avec un simple éditeur de texte (Geany) ET les macros de LibreOffice, allant piocher dans la base tabulaire de Calc. C’était parfois franchement codé avec les pieds mais toujours en sachant que le résultat était (très) propre en HTML, « human-readable », et qu’une porte de sortie devait pouvoir voir rapidement le jour si une ou plusieurs bibliothèques retenues avaient la mauvaise idée de changer son API d’accès direct aux pages qu’elles hébergent. Donc, si les expressions régulières peuvent faire un travail certain, utilisons-les ; mais gardons à l’esprit qu’elles ne sont pas les seules et que nous possédons des outils, souvent beaucoup plus prosaïques, mais qui font le même travail et qui sont, souvent, plus simples à mettre en œuvre et à comprendre par des gens qui n’ont pas le goût de ces choses...

Dans ma transcription, et dans la macro de LibreOffice qui précède, j’ai effectivement normalisé en typographie française tout ce qui regarde les ponctuations. La raison principale est qu’il est quasi impossible d’évaluer la largeur des espaces dont les typographes du XVIIIe se servent avec beaucoup moins de rigueur que ce qu’il est advenu par la suite. Donc pas d’espace avant les signes simples (le point, la virgule) et une espace insécable précédant les quatre signes doubles, soit : le point d’interrogation, le point d’exclamation, les deux points et le point-virgule.

Et la macro qui précède traite assez correctement les espaces insécables qui sont, en fin de traitement, bien présentes avant les signes doubles ; et les apostrophes sont typographiques et on peut en rajouter autant que vous voudrez...

Ou se servir des Dupont-Durand.

C’est « convenable », vous ne trouvez pas ? Allez, je vous laisse respirer un moment pour déglutir ma prose et si votre masochisme n’est pas en peine, alors mon sadisme sera toujours à votre disposition.

Signé : L’horrible satyre pervers.
Duhamel du Monceau.
S.M.C.J. (Ouiiiii !!! Il y est arrivé !!!)
lol  devil  monkey

Hors ligne

#3 26/03/2018 18:04

jrbastien
Membre
Inscription : 19/03/2018
Messages : 20

Re : De l'utilisation du S long (ſ)

Ouf, tant de prose.  Ça va me prendre quelques jours à digérer tout cela.

Je retiens quand même que j'avais ignoré les espaces insécables tout influencé me mon Amérique du Nord natale.  Et qu'il faudra que je soigne mes apostrophes typographiques. Je vais corriger cela merci.

Si l'ennuie ou le cœur m'en dit, j'essaierai vos documents libre Office avec macros. 

Merci.

Hors ligne

#4 24/04/2018 18:13

jrbastien
Membre
Inscription : 19/03/2018
Messages : 20

Re : De l'utilisation du S long (ſ)

Je viens de m'apercevoir que "sh" est une exception.  On n'écrit pas "deſhonorer" mais "deshonorer" donc je corrige mes expressions régulières ici pour garder une trace de la recette.

[== RegEx ==]
(?<=([a-rt-zA-RT-Zçàâéèêëîôûù\s]))[s](?=[a-gi-rt-zçàâéèêëîôûù])
[== RegEx ==]
s{2}

Hors ligne

#5 16/09/2018 20:00

jrbastien
Membre
Inscription : 19/03/2018
Messages : 20

Re : De l'utilisation du S long (ſ)

Je viens de trouver une autre exception: rouſsâtre.

Un des deux s est long, l'autre est court.

Hors ligne

Pied de page des forums