すべてのプロダクト
Search
ドキュメントセンター

DataWorks:PyODPS ノードを使用した jieba による中国語の形態素解析

最終更新日:Jun 22, 2026

テキスト分析、情報検索、テキストマイニング、特徴抽出、検索エンジンの構築、機械翻訳、言語モデルのトレーニングなどのシナリオでは、DataWorks の PyODPS ノードを使用して、オープンソースの中国語形態素解析ツールである jieba を利用できます。これにより、中国語のテキストを単語に分割し、関連するテキスト分析処理を実行できます。また、デフォルトの辞書がビジネスニーズを満たせない場合は、カスタム辞書を作成して分かち書きを追加したり、形態素解析の結果を修正したりすることもできます。

背景情報

DataWorks が提供する PyODPS ノードは、Python コードの直接編集と、MaxCompute の Python SDK を使用したデータ開発をサポートしています。PyODPS ノードには PyODPS 2 ノードと PyODPS 3 ノードの 2 種類があります。PyODPS 3 は、よりシンプルで使いやすい API インターフェースを提供し、PIP による直接インストールをサポートしており、MaxCompute のリソースと機能をより有効に活用できます。開発操作には PyODPS 3 ノードを使用することを推奨します。詳細については、「PyODPS 3 ジョブの開発」をご参照ください。

重要
  • PyODPS 3 は Python 3.x バージョンのみをサポートし、PyODPS 2 は Python 2.x と Python 3.x の両方のバージョンをサポートします。Python 2.x バージョンを使用する必要がある場合は、PyODPS 2 ノードのみを選択できます。

  • 本記事の操作は機能を示すためのサンプルであり、実際の生産環境での使用は推奨されません。

前提条件

  1. DataWorks ワークスペースが作成済みであること。詳細については、「ワークスペースの作成」をご参照ください。

  2. MaxCompute コンピューティングリソースが作成され、DataStudio にバインドされていること。詳細については、「MaxCompute データソースの作成とワークスペースへのバインド」をご参照ください。

事前準備:オープンソースの jieba 中国語形態素解析パッケージのダウンロード

GitHub にアクセスし、以下の手順に従ってオープンソースの jieba 中国語形態素解析パッケージをダウンロードします。GitHub で jieba リポジトリ (`https://github.com/fxsjy/jieba`) を開き、緑色の [Code] ボタンをクリックし、表示されたパネルで [Download ZIP] をクリックして ZIP 圧縮パッケージをダウンロードします。

実践 1:オープンソースの辞書パッケージを使用した形態素解析

  1. ワークフローを作成します。操作の詳細については、「ワークフローの作成」をご参照ください。

  2. MaxCompute リソースを作成し、jieba-master.zip パッケージをアップロードします。

    1. 作成したワークフローを右クリックし、Create Resource > MaxCompute > [Archive] を選択します。

    2. Create Resource ダイアログボックスで、各パラメーターを設定し、Create をクリックします。

      エンジンタイプMaxCompute に、エンジンインスタンスdoc_test (中国 (上海)) に設定し、リソースタイプArchive を選択し、ODPS リソースとしてアップロードにチェックを入れます。主要なパラメーター設定は以下のとおりです。

      パラメーター

      説明

      Upload File

      Click Upload をクリックし、画面の指示に従ってダウンロードした jieba-master.zip ファイルを選択します。

      Name

      リソースの名前です。アップロードするファイル名と一致させる必要はありませんが、命名規則に従う必要があります。画面の指示に従ってリソース名をカスタマイズできます。この実践例では、名前を jieba-master.zip に設定します。

    3. ツールバーの 提交 アイコンをクリックし、画面の指示に従って新しいリソースを送信します。

  3. テストデータテーブル jieba_test とテスト結果テーブル jieba_result を作成します。

    作成したビジネスプロセスを右クリックし、Create Table > MaxCompute > Table を選択します。画面の指示に従ってテーブルを作成し、DDL モードを使用してテーブルのフィールド情報を設定します。作成が完了したら、テーブルを開発環境に提出します。詳細については、「MaxCompute テーブルの作成と使用」をご参照ください。

    この実践で作成する必要がある 2 つのテーブルの設定要点は以下のとおりです。

    テーブル名

    DDL 文

    役割

    jieba_test

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

    テストデータを格納するために使用します。

    jieba_result

    CREATE TABLE jieba_result (
        `chinese` string
    ) ;

    形態素解析のテスト結果データを格納するために使用します。

  4. テストデータをダウンロードし、テストデータテーブル jieba_test にインポートします。

    1. 形態素解析テストデータ をクリックして、テストデータ jieba_test.csv をローカルにダウンロードします。

    2. DataStudio ページで、インポート アイコンをクリックします。

    3. Data Import Wizard ダイアログボックスで、データをインポートするテストテーブル jieba_test を入力して選択し、Next をクリックします。

    4. ローカルにダウンロードした jieba_test.csv ファイルをアップロードし、アップロード情報を設定してデータをプレビューし、Next をクリックします。

    5. By Nameを選択し、Import Dataをクリックします。

  5. PyODPS 3 ノードの作成

    1. 作成したワークフローを右クリックし、Create Node > MaxCompute > PyODPS 3 を選択します。

    2. Create Node ダイアログボックスで、Name に「word_split」(例)と入力し、OK をクリックします。

  6. オープンソースの辞書パッケージを使用して形態素解析コードをテスト実行します。

    PyODPS 3 ノードで以下のサンプルコードを実行し、jieba_test テーブルにアップロードされたテストデータに対して形態素解析を行い、結果テーブルの最初の 10 行を返します。

    def test(input_var):
        import jieba
        result = jieba.cut(input_var, cut_all=False)
        return "/ ".join(result)
    # odps.stage.mapper.split.size は、実行の並列度を向上させるために使用できます
    hints = {
        'odps.isolation.session.enable': True,
        'odps.stage.mapper.split.size': 64,
    }
    libraries =['jieba-master.zip']  # ご利用の jieba-master.zip 圧縮パッケージを参照します
    src_df = o.get_table('jieba_test').to_df()  # ご利用の jieba_test テーブルのデータを参照します
    result_df = src_df.chinese.map(test).persist('jieba_result', hints=hints, libraries=libraries)
    print(result_df.head(10))  # 形態素解析結果の最初の 10 行を表示します。より多くのデータは jieba_result テーブルで確認する必要があります
    説明

    odps.stage.mapper.split.size は、実行の並列度を向上させるために使用できます。詳細については、「フラグパラメーターリスト」をご参照ください。

  7. 実行結果の表示

    実行が完了したら、以下の方法で jieba 形態素解析プログラムの実行結果を確認できます:

    • 方法 1:ページ下部のOperational Logs領域で確認します。

    • 方法 2: ページの左側でAd Hoc Query ボタンをクリックし、一時的なクエリノードを作成して、テスト結果テーブルjieba_resultの結果データを表示します。

      select * from jieba_result;

実践 2:カスタム辞書を使用した形態素解析

オープンソースの jieba 形態素解析のデフォルト辞書が要件を満たせない場合は、カスタム辞書を使用して形態素解析の結果をさらに修正できます。以下に、カスタム辞書を使用して形態素解析を行う方法の例を示します。

  1. MaxCompute リソースの作成

    PyODPS のユーザー定義関数は、MaxCompute にアップロードされたリソース (テーブルリソースまたはファイルリソース) を読み取ることができます。この場合、ユーザー定義関数はクロージャ関数または Callable クラスとして記述する必要があります。

    説明

    DataWorks の MaxCompute 関数登録機能を使用して、複雑なユーザー定義関数を参照できます。詳細については、「ユーザー定義関数の作成と使用」をご参照ください。

    この実践では、クロージャ関数を使用して、MaxCompute にアップロードされたリソースファイル (つまりカスタム辞書) key_words.txt を参照する方法を例として示します。

    1. File タイプの MaxCompute 関数の作成

      作成したビジネスプロセスを右クリックしてCreate Resource > MaxCompute > ファイルを選択し、リソース名にkey_words.txt を入力してからCreateをクリックします。

    2. カスタム辞書の内容を入力して保存、送信します。

      以下はカスタム辞書の例です。ご自身のテストニーズに応じて、適切なカスタム辞書を入力できます。

      増分バックアップ
      セキュリティコンプライアンス
  2. カスタム辞書を使用して形態素解析コードをテスト実行します。

    PyODPS 3 ノードで以下のサンプルコードを実行し、jieba_test テーブルにアップロードされたテストデータに対して形態素解析を行い、結果テーブルの最初の 10 行を返します。

    def test(resources):
        import jieba
        fileobj = resources[0]
        jieba.load_userdict(fileobj)
        def h(input_var):  # ネストされた関数 h() で、辞書の読み込みと形態素解析を実行します
            result = jieba.cut(input_var, cut_all=False)
            return "/ ".join(result)
        return h
    # odps.stage.mapper.split.size は、実行の並列度を向上させるために使用できます
    hints = {
        'odps.isolation.session.enable': True,
        'odps.stage.mapper.split.size': 64,
    }
    libraries =['jieba-master.zip']  # ご利用の jieba-master.zip 圧縮パッケージを参照します
    src_df = o.get_table('jieba_test').to_df()  # ご利用の jieba_test テーブルのデータを参照します
    file_object = o.get_resource('key_words.txt') # get_resource() は MaxCompute リソースを参照します
    mapped_df = src_df.chinese.map(test, resources=[file_object])  # map は関数を呼び出し、resources パラメーターを渡します
    result_df = mapped_df.persist('jieba_result2', hints=hints, libraries=libraries)
    print(result_df.head(10))  # 形態素解析結果の最初の 10 行を表示します。より多くのデータは jieba_result2 テーブルで確認する必要があります
    説明

    odps.stage.mapper.split.size は、実行の並列度を向上させるために使用できます。詳細については、「フラグパラメーターリスト」をご参照ください。

  3. 実行結果の表示

    実行が完了したら、以下の方法で jieba 形態素解析プログラムの実行結果を確認できます:

    • 方法 1:ページ下部のOperational Logsエリアで確認します。

    • 方法 2: ページの左側でAd Hoc Query ボタンをクリックし、一時クエリノードを作成して、テスト結果テーブル jieba_result2 の結果データを確認します。

      select * from jieba_result2;