Tous les produits
Search
Centre de documentation

DataWorks:Utiliser un nœud PyODPS pour segmenter du texte chinois avec Jieba

Dernière mise à jour :Aug 20, 2026

Utilisez un nœud PyODPS dans DataWorks pour segmenter du texte chinois à l'aide de Jieba, l'outil de segmentation open source. Cette approche convient à l'analyse de texte, la recherche d'informations, l'extraction de données textuelles, l'extraction de caractéristiques, la création de moteurs de recherche, la traduction automatique et l'entraînement de modèles linguistiques. Si le dictionnaire Jieba par défaut ne répond pas à vos besoins, créez un dictionnaire personnalisé pour ajouter des entrées ou modifier les résultats de la segmentation.

Informations générales

DataWorks met à disposition des nœuds PyODPS qui vous permettent de modifier du code Python et d'utiliser le SDK MaxCompute pour Python afin de développer des solutions de données. Les nœuds PyODPS existent en deux variantes : PyODPS 2 et PyODPS 3. PyODPS 3 propose une API plus simple et s'installe via pip, ce qui offre un meilleur accès aux ressources et fonctionnalités de MaxCompute. Nous vous recommandons d'utiliser les nœuds PyODPS 3. Pour plus d'informations, consultez la rubrique Développer une tâche PyODPS 3.

Important
  • Les nœuds PyODPS 3 prennent uniquement en charge Python 3.X. Les nœuds PyODPS 2 prennent en charge Python 2.X et Python 3.X. Pour utiliser Python 2.X, sélectionnez exclusivement des nœuds PyODPS 2.

  • Les opérations décrites dans cette rubrique sont fournies à titre de référence uniquement. Ne les utilisez pas dans des environnements de production.

Prérequis

  1. Créez un espace de travail DataWorks. Pour plus d'informations, consultez la rubrique Créer et gérer des espaces de travail.

  2. Lieez un moteur de calcul MaxCompute à DataStudio. Pour plus d'informations, consultez la rubrique Créer une source de données MaxCompute et la lier à un espace de travail.

Préparation : Télécharger le package Jieba open source

Téléchargez le package Jieba open source depuis son dépôt GitHub à l'adresse https://github.com/fxsjy/jieba. Cliquez sur le bouton Code en haut à droite et sélectionnez Download ZIP pour télécharger l'archive du code source.

Pratique 1 : Utiliser le package Jieba open source pour segmenter du texte chinois

  1. Créez un workflow. Pour plus d'informations, consultez la rubrique Créer un workflow.

  2. Créez une ressource MaxCompute et téléchargez le package jieba-master.zip.

    1. Cliquez avec le bouton droit sur le workflow créé, puis choisissez Create Resource > MaxCompute > Archive.

    2. Dans la boîte de dialogue Create Resource , configurez les paramètres et cliquez sur Create .

      Dans cet exemple, définissez Engine Type sur MaxCompute, Engine Instance sur doc_test et Resource Type sur Archive. Sélectionnez Upload as ODPS Resource.

      Parameter

      Description

      Upload File

      Cliquez sur Click Upload et sélectionnez le fichier jieba-master.zip téléchargé.

      Name

      Nom de la ressource. Il doit respecter les conventions de dénomination, mais n'a pas besoin de correspondre au nom du fichier téléchargé. Dans cet exemple, le nom est défini sur jieba-master.zip.

    3. Cliquez sur l'icône 提交 提交 située dans la barre d'outils supérieure pour valider la ressource.

  3. Créez une table nommée jieba_test et une table nommée jieba_result. La table jieba_test sert à stocker les données de test. La table jieba_result sert à stocker les résultats des tests.

    Cliquez avec le bouton droit sur le workflow créé, puis choisissez Create Table > MaxCompute > Table. Créez les tables et utilisez le mode DDL pour configurer leurs champs. Une fois les tables créées, validez-les dans l'environnement de développement. Pour plus d'informations sur la création de tables, consultez la rubrique Créer et utiliser des tables MaxCompute.

    Le tableau suivant décrit les instructions DDL utilisées pour configurer les champs des deux tables.

    Table

    DDL statement

    Description

    jieba_test

    CREATE TABLE jieba_test (
        `chinese` string,
        `content` string
    );

    Stocke les données de test.

    jieba_result

    CREATE TABLE jieba_result (
        `chinese` string
    ) ;

    Stocke les résultats des tests.

  4. Téléchargez les données de test et importez-les dans la table jieba_test.

    1. Téléchargez le fichier jieba_test.csv contenant les données de test sur votre machine locale.

    2. Sur la page DataStudio , cliquez sur l'icône 导入 导入 .

    3. Dans la boîte de dialogue Data Import Wizard , saisissez jieba_test comme table de destination, sélectionnez-la, puis cliquez sur Next .

    4. Téléchargez le fichier jieba_test.csv depuis votre ordinateur, configurez les paramètres de téléchargement, prévisualisez les données, puis cliquez sur Next .

    5. Sélectionnez By Name et cliquez sur Import Data .

  5. Créez un nœud PyODPS 3.

    1. Cliquez avec le bouton droit sur le workflow créé, puis choisissez Create Node > MaxCompute > PyODPS 3.

    2. Dans la boîte de dialogue Create Node , saisissez un Name (par exemple, Name ) et cliquez sur OK .

  6. Utilisez le package Jieba open source pour exécuter le code de segmentation.

    Exécutez l'exemple de code suivant sur le nœud PyODPS 3 pour segmenter les données de test de la table jieba_test et renvoyer les 10 premières lignes des résultats de segmentation :

    def test(input_var):
        import jieba
        result = jieba.cut(input_var, cut_all=False)
        return "/ ".join(result)
    # odps.stage.mapper.split.size can be used to increase parallelism.
    hints = {
        'odps.isolation.session.enable': True,
        'odps.stage.mapper.split.size': 64,
    }
    libraries =['jieba-master.zip']  # Reference your jieba-master.zip archive.
    src_df = o.get_table('jieba_test').to_df()  # Reference the data in your jieba_test table.
    result_df = src_df.chinese.map(test).persist('jieba_result', hints=hints, libraries=libraries)
    print(result_df.head(10))  # View the first 10 rows of the segmentation results. For more data, query the jieba_result table.
    Remarque

    Le paramètre odps.stage.mapper.split.size permet d'améliorer le parallélisme d'exécution. Pour plus d'informations, consultez la rubrique Paramètres d'indicateur.

  7. Consultez le résultat.

    Pour consulter les résultats de la segmentation Jieba, utilisez l'une des méthodes suivantes :

    • Méthode 1 : Consultez les résultats dans la zone Operational Logs en bas de la page.运行

    • Méthode 2 : Dans le volet de navigation de gauche, cliquez sur Ad Hoc Query pour créer un nœud Ad Hoc Query. Ensuite, consultez les données de la table jieba_result .

      select * from jieba_result;

Pratique 2 : Utiliser un dictionnaire personnalisé pour segmenter du texte chinois

Si le dictionnaire Jieba par défaut ne répond pas à vos besoins, utilisez un dictionnaire personnalisé pour segmenter du texte chinois. L'exemple suivant illustre cette approche.

  1. Créez une ressource MaxCompute.

    Les fonctions définies par l'utilisateur (UDF) PyODPS peuvent lire les ressources téléchargées vers MaxCompute, y compris les tables et les fichiers. L'UDF doit être écrite sous forme de fonction de fermeture ou de classe appelable.

    Remarque

    Vous pouvez créer des fonctions MaxCompute dans DataWorks pour référencer des UDF complexes. Pour plus d'informations, consultez la rubrique Créer et utiliser une fonction MaxCompute.

    L'exemple suivant utilise une fonction de fermeture pour référencer le fichier de dictionnaire personnalisé key_words.txt téléchargé vers MaxCompute.

    1. Créez une ressource MaxCompute de type Fichier.

      Cliquez avec le bouton droit sur le workflow créé, puis choisissez Create Resource > MaxCompute > File. Saisissez le nom de la ressource key_words.txt et cliquez sur Create .

    2. Dans l'onglet de configuration de la ressource key_words.txt, saisissez le contenu du dictionnaire personnalisé, puis enregistrez et validez la ressource.

      Le contenu ci-dessous constitue un exemple de dictionnaire personnalisé. Saisissez le contenu du dictionnaire personnalisé en fonction de vos exigences de test.

  2. Utilisez le dictionnaire personnalisé pour exécuter le code de segmentation.

    Exécutez l'exemple de code suivant sur le nœud PyODPS 3 pour segmenter les données de test de la table jieba_test et renvoyer les 10 premières lignes des résultats de segmentation :

    def test(resources):
        import jieba
        fileobj = resources[0]
        jieba.load_userdict(fileobj)
        def h(input_var):  # In the nested function h(), load the dictionary and perform segmentation.
            result = jieba.cut(input_var, cut_all=False)
            return "/ ".join(result)
        return h
    # odps.stage.mapper.split.size can be used to increase parallelism.
    hints = {
        'odps.isolation.session.enable': True,
        'odps.stage.mapper.split.size': 64,
    }
    libraries =['jieba-master.zip']  # Reference your jieba-master.zip archive.
    src_df = o.get_table('jieba_test').to_df()  # Reference the data in your jieba_test table.
    file_object = o.get_resource('key_words.txt') # get_resource() references a MaxCompute resource.
    mapped_df = src_df.chinese.map(test, resources=[file_object])  # The map function calls the function and passes the resources parameter.
    result_df = mapped_df.persist('jieba_result2', hints=hints, libraries=libraries)
    print(result_df.head(10))  # View the first 10 rows of the segmentation results. For more data, query the jieba_result2 table.
    Remarque

    Le paramètre odps.stage.mapper.split.size permet d'améliorer le parallélisme d'exécution. Pour plus d'informations, consultez la rubrique Paramètres d'indicateur.

  3. Consultez le résultat.

    Pour consulter les résultats de la segmentation avec le dictionnaire personnalisé, utilisez l'une des méthodes suivantes :

    • Méthode 1 : Consultez les résultats dans la zone Operational Logs en bas de la page.分词结果udf

    • Méthode 2 : Dans le volet de navigation de gauche, cliquez sur Ad Hoc Query pour créer un nœud Ad Hoc Query. Ensuite, consultez les données de la table jieba_result2 .

      select * from jieba_result2;