All Products
Search
Document Center

MaxCompute:Terapkan tokenisasi bahasa Tiongkok Jieba menggunakan node PyODPS

Last Updated:Mar 27, 2026

Topik ini menjelaskan cara menggunakan pustaka segmentasi open-source Jieba dalam node PyODPS DataWorks untuk memisahkan teks bahasa Tiongkok yang disimpan dalam tabel MaxCompute, serta cara memperluas kamus bawaan dengan istilah kustom menggunakan fungsi closure.

Setelah menyelesaikan topik ini, Anda akan dapat:

  • Mengunggah paket Python pihak ketiga sebagai resource arsip MaxCompute.

  • Merujuk paket tersebut dalam pemanggilan map() PyODPS.

  • Memuat resource file MaxCompute di dalam user-defined function (UDF) melalui fungsi closure.

  • Memverifikasi hasil segmentasi pada tab Runtime Log dan melalui kueri ad hoc.

Penting

Kode contoh dalam topik ini hanya untuk referensi. Jangan menggunakannya secara langsung di lingkungan produksi.

Prasyarat

Sebelum memulai, pastikan Anda telah:

Cara kerja node PyODPS dengan paket pihak ketiga

Node PyODPS DataWorks memungkinkan Anda menjalankan kode Python terhadap MaxCompute menggunakan MaxCompute SDK for Python (PyODPS). Tersedia dua versi node—PyODPS 2 dan PyODPS 3. Gunakan PyODPS 3.

Untuk menggunakan pustaka Python pihak ketiga dalam UDF PyODPS, unggah file zip pustaka tersebut sebagai resource arsip MaxCompute dan rujuk dalam parameter libraries dari persist(). MaxCompute mendistribusikan pustaka tersebut ke setiap mapper saat inisialisasi pekerjaan, sehingga tersedia ketika UDF dijalankan.

Persiapan: Unduh paket Jieba

Unduh paket Jieba (jieba-master.zip) dari GitHub.

clone

Latihan 1: Segmentasi teks bahasa Tiongkok dengan kamus Jieba bawaan

Langkah 1: Buat alur kerja

Buat alur kerja di DataWorks. Lihat Buat alur kerja.

Langkah 2: Unggah paket Jieba sebagai resource arsip

  1. Di DataStudio, klik kanan nama alur kerja dan pilih Create Resource > MaxCompute > Archive.

  2. Pada kotak dialog Create Resource, konfigurasikan parameter berikut dan klik Create.

    Parameter Description
    File Klik Upload dan pilih file jieba-master.zip yang diunduh dari GitHub.
    Name Nama resource. Atur menjadi jieba-master.zip. Nama ini dapat berbeda dari nama file yang diunggah, tetapi harus mengikuti konvensi penamaan DataWorks.

    新建资源

  3. Klik ikon 提交 di bilah alat untuk melakukan commit resource ke lingkungan pengembangan.

Langkah 3: Buat tabel sumber dan hasil

Buat dua tabel MaxCompute: jieba_test untuk menyimpan data masukan, dan jieba_result untuk menyimpan output segmentasi.

Untuk membuat setiap tabel, klik kanan nama alur kerja dan pilih Create Table > MaxCompute > Table. Pada kotak dialog Create Table, konfigurasikan parameter dan klik Create. Kemudian jalankan pernyataan DDL berikut untuk menentukan skema tabel.

`jieba_test` — menyimpan teks bahasa Tiongkok yang akan disegmentasi:

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

`jieba_result` — menyimpan output segmentasi:

CREATE TABLE jieba_result (
  `chinese` string
);

Setelah membuat tabel, lakukan commit ke lingkungan pengembangan.

Langkah 4: Impor data uji

  1. Unduh jieba_test.csv ke mesin lokal Anda.

  2. Klik ikon 导入 di panel Scheduled Workflow pada halaman DataStudio.

  3. Pada kotak dialog Data Import Wizard, masukkan jieba_test di kolom nama tabel, pilih tabel tersebut, lalu klik Next.

  4. Klik Browse, unggah jieba_test.csv dari mesin lokal Anda, lalu klik Next.

  5. Pilih By Name dan klik Import Data.

Langkah 5: Buat node PyODPS 3

  1. Klik kanan nama alur kerja dan pilih Create Node > MaxCompute > PyODPS 3.

  2. Pada kotak dialog Create Node, atur Name menjadi word_split (atau nama lain yang sesuai) dan klik Confirm.

Langkah 6: Jalankan kode segmentasi

Tempel kode berikut ke dalam node PyODPS 3 dan jalankan. Kode ini membaca kolom chinese dari jieba_test, melakukan segmentasi setiap nilai menggunakan Jieba, dan menulis hasilnya ke jieba_result.

def test(input_var):
    import jieba
    result = jieba.cut(input_var, cut_all=False)
    return "/ ".join(result)

hints = {
    'odps.isolation.session.enable': True,
    # Tingkatkan split.size untuk meningkatkan paralelisme mapper. Lihat: Flag parameters.
    'odps.stage.mapper.split.size': 64,
}
libraries = ['jieba-master.zip']  # Distribusikan arsip Jieba ke setiap mapper.

src_df = o.get_table('jieba_test').to_df()
result_df = src_df.chinese.map(test).persist('jieba_result', hints=hints, libraries=libraries)
print(result_df.head(10))  # Cetak 10 baris pertama; hasil lengkap ada di jieba_result.
odps.stage.mapper.split.size dapat digunakan untuk meningkatkan paralelisme eksekusi. Untuk semua parameter flag yang tersedia, lihat Flag parameters.

Langkah 7: Lihat hasilnya

  • Runtime log: Periksa tab Runtime Log di bagian bawah halaman untuk output dari print(result_df.head(10)).

  • Tabel lengkap: Di panel navigasi sebelah kiri DataStudio, klik Ad Hoc Query, buat node kueri ad hoc, lalu jalankan:

    SELECT * FROM jieba_result;

Latihan 2: Segmentasi teks bahasa Tiongkok dengan kamus kustom

Kamus bawaan Jieba mungkin tidak mengenali istilah spesifik domain. Dengan memuat kamus kustom, Anda dapat memastikan istilah tersebut diperlakukan sebagai satu token, bukan dipisah menjadi karakter-karakter.

map() PyODPS meneruskan data baris demi baris ke dalam UDF. Untuk memuat kamus hanya sekali—saat inisialisasi mapper, bukan untuk setiap baris—gunakan fungsi closure atau fungsi dari kelas callable. Fungsi luar memuat kamus saat mapper dimulai dan mengembalikan fungsi dalam yang menangani setiap baris. Pola ini menghindari I/O berulang untuk setiap baris. Untuk UDF yang lebih kompleks, lihat Buat dan gunakan UDF MaxCompute.

Langkah 1: Unggah kamus kustom sebagai resource file

  1. Klik kanan nama alur kerja dan pilih Create Resource > MaxCompute > File.

  2. Pada kotak dialog Create Resource, atur Name menjadi key_words.txt dan klik Create.

  3. Pada tab konfigurasi resource key_words.txt, masukkan istilah kustom Anda (satu per baris), lalu simpan dan lakukan commit resource tersebut. Contohnya:

    增量备份
    安全合规

Langkah 2: Buat tabel hasil

Sebelum menjalankan kode, buat tabel bernama jieba_result2 menggunakan DDL yang sama seperti jieba_result:

CREATE TABLE jieba_result2 (
  `chinese` string
);

Lakukan commit tabel ke lingkungan pengembangan.

Langkah 3: Jalankan kode segmentasi dengan kamus kustom

Tempel kode berikut ke dalam node PyODPS 3 yang sama (atau node baru) dan jalankan.

def test(resources):
    import jieba
    fileobj = resources[0]
    jieba.load_userdict(fileobj)  # Muat kamus kustom sekali saat inisialisasi mapper.

    def h(input_var):  # Fungsi dalam: dipanggil untuk setiap baris dalam operasi map.
        result = jieba.cut(input_var, cut_all=False)
        return "/ ".join(result)

    return h  # Kembalikan fungsi dalam sebagai penanganan UDF.

hints = {
    'odps.isolation.session.enable': True,
    'odps.stage.mapper.split.size': 64,
}
libraries = ['jieba-master.zip']

src_df = o.get_table('jieba_test').to_df()

file_object = o.get_resource('key_words.txt')  # Rujuk resource file MaxCompute.
mapped_df = src_df.chinese.map(test, resources=[file_object])  # Teruskan resource ke closure.
result_df = mapped_df.persist('jieba_result2', hints=hints, libraries=libraries)
print(result_df.head(10))
o.get_resource() mengambil resource file dari MaxCompute dan meneruskannya ke fungsi luar test() melalui parameter resources. Resource dimuat sekali per mapper, bukan sekali per baris. Lihat Flag parameters untuk opsi hint.

Langkah 4: Lihat hasilnya

  • Runtime log: Periksa tab Runtime Log untuk 10 baris pertama output.

  • Tabel lengkap: Jalankan kueri ad hoc berikut:

    SELECT * FROM jieba_result2;

Langkah 5: Bandingkan output

Jalankan kueri berikut berdampingan untuk melihat bagaimana kamus kustom mengubah segmentasi istilah spesifik domain seperti 增量备份 dan 安全合规.

SELECT * FROM jieba_result;   -- Hasil dengan kamus bawaan
SELECT * FROM jieba_result2;  -- Hasil dengan kamus kustom

Istilah yang tercantum dalam key_words.txt muncul sebagai satu token di jieba_result2, bukan dipisah oleh kamus bawaan.

Langkah selanjutnya