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.

Je ne proposerai pas d’explication sur l’utilisation de spaCy ici, parce que la documentation existante est extrêmement complète et inclut notamment un tutoriel actuellement disponible en quatre langues (anglais, allemand, espagnol et japonais).

À titre d’exemple, j’ai utilisé un petit script directement tiré de la documentation de spaCy1 pour étiqueter ce texte2, que j’avais déjà utilisé pour comparer PyNLPIR et Jieba.

import zh_core_web_sm

nlp = zh_core_web_sm.load()
penguin = open('皇帝企鹅_text.txt', 'r', encoding='utf8')
penguin = penguin.read()
doc = nlp(penguin)
print([(token.text, token.pos_) for token in doc])

En produisant une sortie dans laquelle est écrite une chaîne f"{token.text}/{token.pos_} " pour chaque token, on obtient un format de sortie équivalent à celui montré ici pour Jieba.

Comparaison :

spaCy

/SPACE 本/NUM 條目/NOUN 存在/VERB 以下/PART 問題/NOUN ,/PUNCT 請/VERB 協助/PROPN 改善/VERB 本/DET 條目/NOUN 或/CCONJ 在/ADP 討論/NOUN 頁/ADV 針對/VERB 議題/PROPN 發表/NOUN 看法/NOUN 。/PUNCT

Jieba

本/r 條目/n 存在/v 以下/f 問題/n ,/x 請/v 協助/v 改善/v 本/r 條目/n 或/c 在/p 討論/v 頁/m 針對/p 議題/n 發表/v 看法/v 。/x

Comme pour tous les modèles de langue proposés, spaCy permet aussi de représenter les dépendances avec ces nouveaux modèles. Encore une fois, un exemple issu de la page manchot empereur avec un script très simple qu’on peut trouver dans la documentation :

import zh_core_web_sm
from spacy import displacy

nlp = zh_core_web_sm.load()
extrait = "皇帝企鹅是群居性动物。"
extraitdoc = nlp(extrait)
displacy.serve(extraitdoc, style='dep')
Citer ce billet : “Modèles chinois et japonais pour spaCy”, par Alexander Delaporte. Publié sur Tekipaki le 06/07/2020. Lien : https://tekipaki.hypotheses.org/576.
  1. Sur cette page, sélectionner un modèle et cocher la case Show usage example pour afficher le script. []
  2. Il s’agit du texte extrait de cette page Wikipedia, consacrée au manchot empereur. Le texte des pages Wikipedia est disponible sous licence CC BY-SA 3.0. []

Auteur/autrice : Alexander Delaporte

Ingénieur d'études au Centre de recherches linguistiques sur l'Asie Orientale et chercheur associé BnF 2019-2021

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.