Jika Anda perlu menerapkan analisis teks, pengambilan informasi, penambangan teks, ekstraksi fitur, pembuatan mesin pencari, penerjemahan mesin, atau pelatihan model bahasa, Anda dapat menggunakan alat segmentasi teks bahasa Mandarin open-source Jieba melalui node PyODPS di DataWorks untuk membagi teks Mandarin menjadi kata-kata guna pemrosesan dan analisis lebih lanjut. Selain itu, jika kamus bawaan tidak memenuhi kebutuhan bisnis Anda, Anda juga dapat membuat kamus kustom untuk menambahkan atau mengubah hasil segmentasi.
Informasi Latar Belakang
Node PyODPS yang disediakan oleh DataWorks mendukung pengeditan kode Python secara langsung dan penggunaan SDK Python MaxCompute untuk pengembangan data. Node PyODPS terbagi menjadi dua jenis: node PyODPS 2 dan node PyODPS 3. PyODPS 3 menyediakan antarmuka API yang lebih sederhana dan mudah digunakan, mendukung instalasi langsung melalui PIP, serta memungkinkan pemanfaatan resource dan fitur MaxCompute secara lebih optimal. Disarankan agar Anda menggunakan node PyODPS 3 untuk pengembangan. Untuk informasi selengkapnya, lihat Develop a PyODPS 3 job.
-
PyODPS 3 hanya mendukung versi Python 3.x, sedangkan PyODPS 2 mendukung versi Python 2.x dan Python 3.x. Jika Anda perlu menggunakan Python 2.x, Anda hanya dapat memilih node PyODPS 2.
-
Operasi dalam artikel ini hanya berfungsi sebagai contoh demonstrasi fitur dan tidak disarankan untuk digunakan di lingkungan produksi sesungguhnya.
Prasyarat
-
Workspace DataWorks telah dibuat. Untuk informasi selengkapnya, lihat Buat workspace.
-
Resource komputasi MaxCompute telah dibuat dan ditautkan ke DataStudio. Untuk informasi selengkapnya, lihat Buat sumber data MaxCompute dan tautkan ke workspace.
Persiapan: Unduh Paket Segmentasi Teks Bahasa Mandarin Jieba Open-Source
Buka GitHub dan ikuti petunjuk berikut untuk mengunduh paket segmentasi teks bahasa Mandarin Jieba open-source. Di GitHub, buka repositori jieba (https://github.com/fxsjy/jieba), klik tombol hijau Code, lalu klik Download ZIP pada panel yang muncul untuk mengunduh file arsip ZIP.
Praktik 1: Melakukan Segmentasi Menggunakan Paket Kata Open-Source
-
Buat alur kerja. Untuk detail operasinya, lihat Create a workflow.
-
Buat resource MaxCompute dan unggah paket jieba-master.zip.
-
Klik kanan alur kerja yang telah dibuat, lalu pilih .
-
Pada dialog Create Resource, konfigurasikan parameter yang diperlukan, lalu klik Create.
Konfigurasikan tipe engine sebagai MaxCompute, pilih doc_test (China Timur 2 [Shanghai]) untuk instance engine, pilih Archive untuk tipe resource, dan centang Unggah sebagai resource ODPS. Penjelasan parameter inti sebagai berikut.
Parameter
Deskripsi
Upload File
Klik Click Upload, lalu pilih file jieba-master.zip yang telah diunduh sesuai petunjuk pada antarmuka.
Name
Nama resource, tidak harus sama dengan nama file yang diunggah, tetapi harus mematuhi aturan penamaan. Anda dapat menentukan nama resource sesuai petunjuk pada antarmuka. Dalam praktik ini, contoh nama yang dikonfigurasi adalah jieba-master.zip.
-
Klik ikon
pada bilah alat, lalu kirim resource baru yang dibuat sesuai petunjuk pada antarmuka.
-
-
Buat tabel data uji jieba_test dan tabel hasil uji jieba_result.
Klik kanan alur kerja yang telah dibuat, lalu pilih , lalu buat tabel sesuai petunjuk pada antarmuka dan konfigurasikan informasi kolom tabel menggunakan mode DDL. Setelah pembuatan selesai, kirim tabel ke lingkungan pengembangan. Untuk informasi selengkapnya mengenai operasi pembuatan tabel, lihat Create and use MaxCompute tables.
Poin konfigurasi utama untuk dua tabel yang perlu dibuat dalam praktik ini adalah sebagai berikut.
Nama Tabel
Pernyataan DDL
Fungsi
jieba_test
CREATE TABLE jieba_test ( `chinese` string, `content` string );Untuk menyimpan data uji.
jieba_result
CREATE TABLE jieba_result ( `chinese` string ) ;Untuk menyimpan data hasil uji segmentasi.
-
Unduh data uji dan impor ke tabel data uji jieba_test.
-
Klik data uji segmentasi untuk mengunduh file jieba_test.csv ke lokal.
-
Pada halaman DataStudio, klik ikon
. -
Pada dialog Data Import Wizard, masukkan nama tabel uji jieba_test tempat data akan diimpor, pilih tabel tersebut, lalu klik Next.
-
Unggah file jieba_test.csv yang telah diunduh ke lokal, konfigurasikan informasi unggahan dan pratinjau data, lalu klik Next.
-
Pilih By Name, lalu klik Import Data.
-
-
Buat node PyODPS 3.
-
Klik kanan alur kerja yang telah dibuat, lalu pilih .
-
Pada dialog Create Node, masukkan Name (contoh: word_split), lalu klik OK.
-
-
Uji jalankan kode segmentasi menggunakan paket kata open-source.
Jalankan kode contoh berikut di node PyODPS 3 untuk melakukan segmentasi terhadap data uji yang diunggah ke tabel jieba_test, lalu tampilkan 10 baris pertama dari tabel 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'] # merujuk pada arsip jieba-master.zip Anda src_df = o.get_table('jieba_test').to_df() # merujuk pada data di tabel jieba_test Anda result_df = src_df.chinese.map(test).persist('jieba_result', hints=hints, libraries=libraries) print(result_df.head(10)) # melihat 10 baris pertama hasil segmentasi; data lebih lanjut tersedia di tabel jieba_resultCatatanParameter odps.stage.mapper.split.size dapat digunakan untuk meningkatkan paralelisme eksekusi. Untuk informasi selengkapnya, lihat Daftar parameter flag.
-
Lihat hasil eksekusi.
Setelah eksekusi selesai, Anda dapat melihat hasil program segmentasi Jieba dengan cara berikut:
-
Cara 1: Lihat di area Operational Logs di bagian bawah halaman.
-
Cara 2: Klik tombol Ad Hoc Query di sebelah kiri halaman, buat node kueri sementara, lalu lihat data hasil di tabel uji jieba_result.
select * from jieba_result;
-
Praktik 2: Melakukan Segmentasi Menggunakan Kamus Kustom
Jika kamus bawaan Jieba open-source tidak memenuhi kebutuhan Anda, Anda dapat menggunakan kamus kustom untuk memperbaiki lebih lanjut hasil segmentasi. Berikut ini adalah contoh cara menggunakan kamus kustom untuk segmentasi.
-
Buat resource MaxCompute.
Fungsi user-defined PyODPS dapat membaca resource (resource tabel atau resource file) yang diunggah ke MaxCompute. Dalam kasus ini, fungsi user-defined perlu ditulis sebagai fungsi closure atau kelas Callable.
CatatanAnda dapat menggunakan fitur registrasi fungsi MaxCompute di DataWorks untuk mereferensikan fungsi user-defined yang kompleks. Untuk informasi selengkapnya, lihat Create and use a user-defined function.
Dalam praktik ini, kami menggunakan pendekatan fungsi closure untuk mereferensikan file resource (yaitu kamus kustom) key_words.txt yang diunggah ke MaxCompute.
-
Buat fungsi MaxCompute bertipe File.
Klik kanan alur kerja yang telah dibuat, lalu pilih , masukkan nama resource key_words.txt, lalu klik Create.
-
Masukkan konten kamus kustom, lalu simpan dan kirim.
Berikut adalah contoh kamus kustom. Anda dapat memasukkan kamus kustom yang sesuai dengan kebutuhan uji Anda.
incremental backup kepatuhan keamanan
-
-
Uji jalankan kode segmentasi menggunakan kamus kustom.
Jalankan kode contoh berikut di node PyODPS 3 untuk melakukan segmentasi terhadap data uji yang diunggah ke tabel jieba_test, lalu tampilkan 10 baris pertama dari tabel hasil segmentasi.
def test(resources): import jieba fileobj = resources[0] jieba.load_userdict(fileobj) def h(input_var): # dalam fungsi bersarang h(), lakukan pemuatan kamus dan segmentasi 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'] # merujuk pada arsip jieba-master.zip Anda src_df = o.get_table('jieba_test').to_df() # merujuk pada data di tabel jieba_test Anda file_object = o.get_resource('key_words.txt') # get_resource() merujuk pada resource MaxCompute mapped_df = src_df.chinese.map(test, resources=[file_object]) # map memanggil fungsi dan meneruskan parameter resources result_df = mapped_df.persist('jieba_result2', hints=hints, libraries=libraries) print(result_df.head(10)) # melihat 10 baris pertama hasil segmentasi; data lebih lanjut tersedia di tabel jieba_result2CatatanParameter odps.stage.mapper.split.size dapat digunakan untuk meningkatkan paralelisme eksekusi. Untuk informasi selengkapnya, lihat Daftar parameter flag.
-
Lihat hasil eksekusi.
Setelah eksekusi selesai, Anda dapat melihat hasil program segmentasi Jieba dengan cara berikut:
-
Cara 1: Lihat di area Operational Logs di bagian bawah halaman.
-
Cara 2: Klik tombol Ad Hoc Query di sebelah kiri halaman, buat node kueri sementara, lalu lihat data hasil di tabel uji jieba_result2.
select * from jieba_result2;
-