Dokumen ini menjelaskan cara menggunakan node PyODPS dari DataWorks untuk memisahkan teks Tionghoa dalam tabel data menggunakan alat pemisahan sumber terbuka Jieba dan menulis hasil segmentasi ke tabel baru. Dokumen ini juga mencakup penggunaan fungsi penutupan untuk segmentasi berbasis kamus kustom.
Prasyarat
Ruang kerja DataWorks telah dibuat dan mesin komputasi MaxCompute telah dikaitkan dengannya. Untuk informasi lebih lanjut tentang pembuatan ruang kerja, lihat Buat Ruang Kerja.
Informasi latar belakang
DataWorks menyediakan node PyODPS yang mendukung pengeditan kode Python serta penggunaan SDK MaxCompute untuk Python. Node PyODPS tersedia dalam versi PyODPS 2 dan PyODPS 3, dengan rekomendasi penggunaan PyODPS 3. Untuk informasi lebih lanjut, lihat Kembangkan Tugas PyODPS 3.
Kode contoh dalam dokumen ini hanya untuk referensi dan tidak disarankan untuk digunakan di lingkungan produksi.
Persiapan: Unduh paket Jieba sumber terbuka
Unduh paket Jieba sumber terbuka dari GitHub.
Praktik 1: Gunakan paket Jieba sumber terbuka untuk memisahkan teks Tionghoa
Buat alur kerja.
Untuk detail lebih lanjut, lihat Buat Alur Kerja.
Buat sumber daya MaxCompute dan unggah paket jieba-master.zip.
Klik kanan nama alur kerja yang telah dibuat dan pilih .
Di kotak dialog Buat Sumber Daya, konfigurasikan parameter yang diperlukan dan klik Buat.
Tabel berikut menjelaskan beberapa parameter utama.Parameter
Deskripsi
File
Klik Unggah dan unggah paket jieba-master.zip yang diunduh sesuai petunjuk.
Nama
Nama sumber daya. Nama sumber daya bisa berbeda dari nama file yang Anda unggah tetapi harus mematuhi konvensi tertentu. Anda dapat menentukan nama sumber daya kustom sesuai petunjuk. Dalam praktik ini, parameter ini disetel ke jieba-master.zip.
Klik ikon
di bilah alat atas untuk menyimpan sumber daya.
Buat dua tabel bernama jieba_test dan jieba_result. Tabel jieba_test digunakan untuk menyimpan data uji, sedangkan tabel jieba_result digunakan untuk menyimpan hasil segmentasi.
Untuk membuat tabel, klik kanan nama alur kerja yang telah dibuat dan pilih . Di kotak dialog Buat Tabel, konfigurasikan parameter sesuai petunjuk dan klik Buat. Kemudian, jalankan pernyataan DDL untuk mengonfigurasi bidang dalam tabel. Tabel berikut menjelaskan pernyataan DDL yang digunakan untuk mengonfigurasi bidang dalam kedua tabel.
Tabel
Pernyataan DDL
Deskripsi
jieba_test
CREATE TABLE jieba_test ( `chinese` string, `content` string );Menyimpan data uji.
jieba_result
CREATE TABLE jieba_result ( `chinese` string ) ;Menyimpan hasil uji.
Setelah tabel dibuat, simpan tabel ke lingkungan pengembangan.
Unduh data uji dan impor data tersebut ke tabel jieba_test.
Unduh file jieba_test.csv yang berisi data uji ke mesin lokal Anda.
Klik ikon
di panel Alur Kerja Terjadwal halaman DataStudio.Di kotak dialog Wizard Impor Data, masukkan nama tabel jieba_test sebagai tujuan impor, pilih tabel, dan klik Berikutnya.
Klik Telusuri, unggah file jieba_test.csv dari mesin lokal Anda, dan klik Berikutnya.
Pilih Berdasarkan Nama dan klik Impor Data.
Buat node PyODPS 3.
Klik kanan nama alur kerja yang telah dibuat dan pilih .
Di kotak dialog Buat Node, atur parameter Nama ke nilai yang sesuai, seperti word_split, dan klik Konfirmasi.
Gunakan paket Jieba sumber terbuka untuk menjalankan kode segmentasi.
Jalankan kode contoh berikut di node PyODPS 3 untuk memisahkan data uji dalam tabel jieba_test dan mengembalikan 10 baris pertama hasil segmentasi:
def test(input_var): import jieba result = jieba.cut(input_var, cut_all=False) return "/ ".join(result) # odps.stage.mapper.split.size dapat digunakan untuk meningkatkan paralelisme eksekusi. hints = { 'odps.isolation.session.enable': True, 'odps.stage.mapper.split.size': 64, } libraries =['jieba-master.zip'] # Referensikan paket jieba-master.zip. src_df = o.get_table('jieba_test').to_df() # Referensikan data dalam tabel jieba_test. result_df = src_df.chinese.map(test).persist('jieba_result', hints=hints, libraries=libraries) print(result_df.head(10)) # Tampilkan 10 baris pertama data hasil segmentasi. Anda dapat melihat lebih banyak data di tabel jieba_result.CatatanParameter odps.stage.mapper.split.size dapat digunakan untuk meningkatkan paralelisme eksekusi. Untuk informasi lebih lanjut, lihat Parameter Bendera.
Lihat hasilnya.
Lihat hasil eksekusi program segmentasi Jieba di tab Log Runtime di bagian bawah halaman.
Anda juga dapat mengklik Kueri Ad Hoc di panel navigasi kiri halaman DataStudio dan buat node kueri ad hoc untuk melihat data dalam tabel jieba_result.
select * from jieba_result;
Praktik 2: Gunakan kamus kustom untuk memisahkan teks Tionghoa
Jika kamus default Jieba tidak memenuhi kebutuhan Anda, Anda dapat menggunakan kamus kustom. Bagian ini memberikan contoh penggunaan kamus kustom untuk segmentasi teks Tionghoa.
Buat sumber daya MaxCompute.
Anda dapat memanggil fungsi yang ditentukan pengguna (UDF) PyODPS untuk membaca sumber daya yang diunggah ke MaxCompute. Sumber daya tersebut dapat berupa tabel atau file. Dalam hal ini, Anda harus menulis UDF sebagai fungsi penutupan atau fungsi kelas yang dapat dipanggil. Jika Anda perlu merujuk UDF kompleks, Anda dapat membuat fungsi MaxCompute di DataWorks. Untuk informasi lebih lanjut, lihat Buat dan Gunakan UDF MaxCompute.
Dalam bagian ini, fungsi penutupan dipanggil untuk merujuk file kamus kustom key_words.txt yang diunggah ke MaxCompute.
Buat fungsi MaxCompute bertipe File.
Klik kanan nama alur kerja yang telah dibuat dan pilih . Di kotak dialog Buat Sumber Daya, atur parameter Nama ke key_words.txt dan klik Buat.
Di tab konfigurasi sumber daya key_words.txt, masukkan konten kamus kustom dan simpan serta commit sumber daya tersebut.
Konten berikut adalah contoh kamus kustom. Sesuaikan konten berdasarkan kebutuhan uji Anda.
Backup Inkremental Keamanan dan Kepatuhan
Gunakan kamus kustom untuk menjalankan kode segmentasi.
Jalankan kode contoh berikut di node PyODPS 3 untuk memisahkan data uji dalam tabel jieba_test dan mengembalikan 10 baris pertama hasil segmentasi.
PentingSebelum menjalankan kode contoh berikut, buat tabel bernama
jieba_result2untuk menyimpan hasil segmentasi. Untuk informasi lebih lanjut tentang pembuatan tabel, lihat langkah membuat tabel bernama jieba_result.def test(resources): import jieba fileobj = resources[0] jieba.load_userdict(fileobj) def h(input_var): # Panggil fungsi bersarang h() untuk memuat kamus dan memisahkan teks. result = jieba.cut(input_var, cut_all=False) return "/ ".join(result) return h # odps.stage.mapper.split.size dapat digunakan untuk meningkatkan paralelisme eksekusi. hints = { 'odps.isolation.session.enable': True, 'odps.stage.mapper.split.size': 64, } libraries =['jieba-master.zip'] # Referensikan paket jieba-master.zip. src_df = o.get_table('jieba_test').to_df() # Referensikan data dalam tabel jieba_test. file_object = o.get_resource('key_words.txt') # Panggil fungsi get_resource() untuk merujuk sumber daya MaxCompute. mapped_df = src_df.chinese.map(test, resources=[file_object]) # Panggil fungsi map untuk mentransfer parameter sumber daya. result_df = mapped_df.persist('jieba_result2', hints=hints, libraries=libraries) print(result_df.head(10)) # Tampilkan 10 baris pertama data hasil segmentasi. Anda dapat melihat lebih banyak data di tabel jieba_result2.CatatanParameter odps.stage.mapper.split.size dapat digunakan untuk meningkatkan paralelisme eksekusi. Untuk informasi lebih lanjut, lihat Parameter Bendera.
Lihat hasilnya.
Lihat hasil eksekusi di tab Log Runtime di bagian bawah halaman.
Anda juga dapat mengklik Kueri Ad Hoc di panel navigasi kiri halaman DataStudio dan buat node kueri ad hoc untuk melihat data dalam tabel jieba_result2.
select * from jieba_result2;
Bandingkan hasil segmentasi menggunakan kamus kustom dengan hasil segmentasi menggunakan paket Jieba sumber terbuka.
Referensi
Untuk informasi lebih lanjut tentang penggunaan node PyODPS 3 di DataWorks, lihat Gunakan PyODPS di DataWorks.