Utiliser TinySegmenter avec Python

Lors du traitement d’un corpus en japonais, l’étape de segmentation est souvent indispensable. Il est possible de l’effectuer sans écrire de script pour l’occasion, par exemple avec un logiciel tels que SegmentAnt, déjà présenté sur ce carnet dans l’article Segmenter du texte brut avec SegmentAnt.

Peut aussi se présenter le cas où la segmentation intervient parmi d’autres traitements qui seront pris en charge par un ou plusieurs script(s). Il est alors intéressant de prévoir quelques lignes de code pour segmenter le texte plutôt que de faire appel à un outil supplémentaire.

Voici comment faire, en utilisant TinySegmenter avec Python.

Continuer la lecture de « Utiliser TinySegmenter avec Python »

Segmenter du texte brut avec SegmentAnt

Dans des langues telles que le français ou l’anglais (entre autres), les différentes entités linguistiques, ou plus simplement les “mots”, sont plus ou moins intuitivement identifiables à l’écrit car ils tendent à être séparés par un caractère dédié : l’espace.

Ce séparateur n’est pas commun à toutes les langues écrites, et n’est notamment pas utilisé en chinois et en japonais. Un lecteur humain sera évidemment capable d’identifier les entités qui composent le texte pour pouvoir le comprendre, mais ce n’est pas forcément le cas des outils de traitement automatique utilisés lors de l’exploration d’un corpus. Il peut alors devenir nécessaire de segmenter le texte d’origine, en y insérant un caractère séparateur.

SegmentAnt, développé par Laurence Anthony, est un logiciel qui vous permettra de segmenter du texte en chinois ou en japonais extrêmement facilement, sans écrire une ligne de code.

Continuer la lecture de « Segmenter du texte brut avec SegmentAnt »

Lire (et modifier) un fichier XML avec Python

Un article précédent a montré comment générer facilement un corpus textuel avec Python. Le corpus ainsi produit se présentait sous forme d’un fichier au format XML, écrit notamment grâce à xml.etree.ElementTree, qui fait partie de la librairie standard.

ElementTree s’avère donc utile pour créer des fichiers XML, mais permet aussi de lire des fichiers préexistants, notamment dans le but de les modifier.

Voici comment procéder pour lire l’arborescence d’un fichier XML et lui apporter des modifications.

Continuer la lecture de « Lire (et modifier) un fichier XML avec Python »

Déclaration XML automatique

Lorsqu’on automatise la création d’un corpus, ou tout autre document, structuré en XML, il est important de veiller à générer également une déclaration XML cohérente avec le contenu du fichier. Il y a plusieurs façons d’y parvenir, notamment en faisant appel à bs4 ou à xml.etree.ElementTree.

Continuer la lecture de « Déclaration XML automatique »

Produire un corpus web format XML en 15 lignes de code

Pour effectuer certaines tâches, disposer d’un corpus textuel est très utile, voire indispensable : faire des essais pour un projet dont le corpus de travail est en cours de constitution, tester des scripts et traitements, prendre en main un nouvel outil et/ou le comparer à d’autres outils similaires…

Ce sont des usages qui relèvent principalement des phases préparatoires d’un projet, et pour lesquels il est surtout important de pouvoir construire un corpus rapidement et sans trop d’effort. Ce n’est pas grave si sa constitution n’est pas particulièrement précise puisqu’elle ne nécessite qu’un investissement limité et que les résultats obtenus n’ont pas vocation à être exploités en conditions réelles.

Je vous présente ici un script Python de web scraping très simple, qui vous permettra d’obtenir un corpus textuel au format XML tout à fait adapté à ce type d’utilisation.

Continuer la lecture de « Produire un corpus web format XML en 15 lignes de code »

Dico pour qui ?

Attention, ceci est un article de vulgarisation ! Si vous avez déjà des connaissances en lexicographie bilingue, vous n’apprendrez peut-être rien de nouveau. Dans le cas contraire, cet article vous permettra de mieux comprendre comment sont conçus les dictionnaires bilingues. La lecture de l’article Les types de dictionnaires est conseillée avant d’aborder celui-ci.

Les dictionnaires bilingues sont des outils d’apprentissage des langues, et on sait que dans un dictionnaire bilingue, il y a une langue source et une langue cible (éventuellement dite langue de traduction).

Intuitivement, il semblerait logique que le public visé par un dictionnaire bilingue soit des personnes qui connaissent déjà la langue source, et qui apprennent la langue cible : on connaît un mot, et on cherche sa traduction.

… Et, intuitivement, il semblerait aussi logique que le public visé par un dictionnaire bilingue soit des personnes qui ne connaissent pas la langue cible, et qui apprennent la langue source : on tombe sur un mot qu’on ne comprend pas, et on cherche sa traduction.

Mais alors, que faire face à une telle ambivalence ?

Continuer la lecture de « Dico pour qui ? »

SudachiPy VS spaCy

L’article consacré aux nouveaux modèles spaCy pour le chinois et le japonais montrait un exemple d’utilisation pour le chinois. Ceci avait permis de comparer la sortie produite par spaCy à celle de Jieba, étiqueteur morphosyntaxique qui avait également fait l’objet d’un article sur ce carnet.

Tout comme la segmentation du chinois avec spaCy est (par défaut) issue de Jieba, la segmentation du japonais s’appuie sur SudachiPy. Puisque j’ai depuis présenté l’installation et le fonctionnement de SudachiPy, voici maintenant un aperçu de l’étiquetage du japonais avec spaCy.

Continuer la lecture de « SudachiPy VS spaCy »

Étiquetage morphosyntaxique avec SudachiPy

J’ai présenté dans de précédents articles deux librairies Python permettant de réaliser un étiquetage morphosyntaxique (ou POS-tagging) sur des textes écrits en chinois : PyNLPIR et Jieba.

Voici maintenant quelques mots sur un étiqueteur permettant de traiter des textes en japonais : SudachiPy, la version librairie Python de l’étiqueteur et analyseur morphologique Sudachi.

Continuer la lecture de « Étiquetage morphosyntaxique avec SudachiPy »

Les types de dictionnaires

Attention, ceci est un article de vulgarisation ! Si vous avez déjà une certaine connaissance de la lexicographie, il ne sera certainement pas instructif pour vous. Si ce n’est pas le cas, vous trouverez ici quelques explications qui vous permettront d’aborder sereinement de prochains articles de ce carnet portant sur les dictionnaires, bilingues notamment.

Les dictionnaires sont des outils couramment utilisés, dans le cadre de la scolarité ou de la vie quotidienne. On peut d’ailleurs s’en servir sans avoir une connaissance particulière des principes de leur conception ou des critères sur lesquels est constitué leur contenu. Par exemple, savez-vous que Le Petit Robert et Le Petit Larousse illustré relèvent de deux types de dictionnaires différents ?

Pour y voir plus clair, je vous propose ici une brève description de quelques grands types de dictionnaires. Ce ne sera pas exhaustif, mais ces explications devraient permettre à toute personne non spécialiste de se repérer dans de prochains articles de ce carnet, qui évoqueront éventuellement cette typologie.

Continuer la lecture de « Les types de dictionnaires »

Fiabilité de chardet

L’utilisation de chardet a déjà été évoquée sur ce carnet, dans cet article consacré à l’uniformisation de l’encodage d’un corpus textuel.

J’y indiquais que chardet.detect() permettait d’identifier l’encodage d’un fichier ouvert en binaire, afin de le décoder correctement. Le résultat retourné par cette fonction se présente sous forme d’un dictionnaire : celui-ci contient le nom de l’encodage reconnu à la clé encoding, mais également un indice de confiance dont la valeur correspond à la clé confidence.

Comprendre ce qu’est cet indice peut s’avérer utile, notamment pour repérer dans quels cas l’encodage risque d’être mal détecté.

Continuer la lecture de « Fiabilité de chardet »

Modèles chinois et japonais pour spaCy

La dernière mise à jour de spaCy (v2.3) inclut (entre autres) des modèles pour le chinois et pour le japonais. La segmentation et l’étiquetage s’appuient sur SudachiPy pour le japonais, et la segmentation est réalisée avec Jieba (par défaut) pour le chinois.

Si vous utilisez cette version de spaCy avec les paramètres par défaut pour segmenter un texte en chinois, vous devriez donc obtenir un résultat assez proche de la segmentation avec Jieba présentée dans un précédent article de ce carnet. Attention, ce ne sera pas forcément complètement identique, et l’étiquetage a également de grandes chances d’être différent.

Continuer la lecture de « Modèles chinois et japonais pour spaCy »

Uniformiser l’encodage d’un corpus avec Python

Quelques articles de ce carnet ont déjà été consacrés au traitement de données dans le cadre de la constitution d’un corpus, notamment l’étiquetage morphosyntaxique (pour le chinois, avec les étiqueteurs PyNLPIR et Jieba). Toutefois je n’y avais pas abordé la question de l’encodage des caractères.

Concernant les corpus écrits, l’encodage est un paramètre important.
Il doit :

  • Permettre la reconnaissance de tous les caractères présents dans le corpus .
  • Être le même dans tous les fichiers composant le corpus.
  • Être compatible avec les outils de traitement qui seront utilisés par la suite.

Lorsqu’on construit un corpus textuel, les données ne valident pas forcément ces critères au moment de leur collecte, et il est alors indispensable d’uniformiser l’encodage au plus vite.

Je vais détailler ici l’écriture d’un script Python permettant de convertir automatiquement en utf-8 un ensemble de fichiers, quel(s) que soi(en)t leur(s) encodage(s) d’origine.

Continuer la lecture de « Uniformiser l’encodage d’un corpus avec Python »

Lexique linguistique en japonais – 02

Encore une fois, quelques mots repérés pendant une lecture de dictionnaire bilingue. Comme pour le précédent article, les prononciations sont indiquées en kana ainsi qu’en en rōmaji (transcription Hepburn) pour qu’elles soient accessibles même sans apprentissage des hiragana et katakana.

Les mots et équivalents traductionnels présentés ici viennent du dictionnaire suivant :

  • Sanseido’s New Concise English-Japanese Dictionary, Revised Edition | 新コンサイス英和辞典・第2版 (1985). Tokyo : Sanseido.
Continuer la lecture de « Lexique linguistique en japonais – 02 »

Revue Koko

Il reste 15 jours pour financer ce projet de première revue interculturelle bilingue français-japonais (日本語とフランス語でカルチャーを紹介する初めての雑誌). Si l’objectif est atteint, le premier numéro sortira en juin, comportera 132 pages et sera consacré au thème de l’art urbain.

Koko se veut une passerelle entre la France et le Japon
Kokoはフランスと日本の懸け橋になりたいと考えています

Chaque numéro sera l’occasion d’explorer un thème et d’en révéler les spécificités culturelles grâce à une série d’articles bilingues : cette approche interculturelle et multilingue constitue l’identité et l’originalité de notre revue.

毎号2か国語で書かれた記事によって、テーマに沿ったカルチャーの特徴を掘り下げ、文化的な面から多言語によるアプローチで当雑誌の個性と独創性を表現します。

Présentation du projet sur la page Kickstarter

Retrouvez une présentation plus détaillée sur le site web de la revue Koko.

Citer ce billet : “Revue Koko”, par Alexander Delaporte. Publié sur Tekipaki le 01/05/2020. Lien : https://tekipaki.hypotheses.org/260.

Lexique linguistique en japonais – 01

Quelques termes trouvés “par hasard” lors de l’étude de dictionnaires bilingues japonais, qui peuvent être utiles pour parler/écrire à propos de linguistique. J’indique les prononciations en kana mais également en rōmaji pour qu’elles soient accessibles même sans connaître les hiragana et katakana. Pour ce faire, j’ai utilisé la transcription Hepburn (ヘボン式ローマ字).

Le lexique présenté dans cet article provient majoritairement des dictionnaires suivants :

  • KURAKATA et al. (2003) プチ・ロワイヤル仏和辞典 (Nouveau Petit Royal dictionnaire français -japonais), troisième édition. Tokyo : Obunsha.
  • TSUNEKAWA et al. (2002) Petit dictionnaire japonais – français Royal. Tokyo : Obunsha.
Continuer la lecture de « Lexique linguistique en japonais – 01 »