08-Pemecahan JSON Rekursif (RecursiveJsonSplitter)

RecursiveJsonSplitter

JSON pemecah ini menghasilkan potongan-potongan JSON yang lebih kecil dengan menjelajahi data JSON menggunakan penelusuran mendalam (depth-first traversal).

Pemecah ini berusaha untuk mempertahankan objek JSON yang bersarang sebanyak mungkin, tetapi jika diperlukan untuk menjaga ukuran potongan antara min_chunk_size dan max_chunk_size, objek tersebut akan dipisahkan. Jika nilainya adalah string yang sangat besar dan bukan JSON yang bersarang, string tersebut tidak akan dibagi.

Jika ada kebutuhan untuk batasan ketat pada ukuran potongan, Anda dapat mempertimbangkan untuk menggunakan Recursive Text Splitter setelah pemecah ini untuk memproses potongan-potongan tersebut.

Kriteria untuk Memecah

  • Cara Pemecahan Teks(Text Splitting Method): Berdasarkan Nilai JSON

  • Cara Pengukuran Ukuran Potongan(Chunk Size Measurement Method): Berdasarkan Jumlah Karakter

pip install -qU langchain-text-splitters
  • Gunakan fungsi requests.get() untuk mengambil data JSON dari URL "https://api.smith.langchain.com/openapi.json".

  • Data JSON yang diambil kemudian diubah menjadi bentuk dictionary Python menggunakan metode json() dan disimpan dalam variabel json_data.

import requests

# Memuat data JSON.
json_data = requests.get("https://api.smith.langchain.com/openapi.json").json()

Ini adalah contoh penggunaan RecursiveJsonSplitter untuk memecah data JSON.

from langchain_text_splitters import RecursiveJsonSplitter

# Membuat objek RecursiveJsonSplitter yang membagi data JSON menjadi chunk dengan ukuran maksimal 300.
splitter = RecursiveJsonSplitter(max_chunk_size=300)

Menggunakan fungsi splitter.split_json() untuk membagi data JSON secara rekursif.

  • Gunakan metode splitter.create_documents() untuk mengonversi data JSON ke dalam format dokumen.

  • Gunakan metode splitter.split_text() untuk membagi data JSON menjadi daftar string

Dengan memeriksa texts[2] untuk memeriksa salah satu potongan yang besar, kita dapat memastikan bahwa potongan tersebut berisi objek daftar (list).

  • Alasan mengapa ukuran potongan ke-2 melebihi batas (300) adalah karena potongan tersebut berisi objek list.

  • Ini karena RecursiveJsonSplitter tidak membagi objek daftar.

Chunk di indeks 2 dapat diparsing menggunakan modul json seperti berikut.

Anda dapat mengonversi daftar dalam JSON menjadi pasangan key dalam bentuk index dengan mengatur parameter convert_lists menjadi True.

Anda dapat memeriksa dokumen yang sesuai dengan indeks tertentu dalam daftar docs.

Last updated