02. Pemisahan Teks Karakter Secara Rekursif Recursivecharactertextsplitter

02. Pemisahan Teks Karakter Secara Rekursif (RecursiveCharacterTextSplitter)

ℹ️

Pada bagian ini, anda akan memerlukan file berikut: appendix-keywords.txt (opens in a new tab)

RecursiveCharacterTextSplitter

Pemotong teks (text splitter) ini direkomendasikan untuk teks umum. Pemotong ini bekerja dengan menerima daftar karakter sebagai parameter. Pemotong akan mencoba membagi teks berdasarkan urutan dari daftar karakter yang diberikan hingga chunk cukup kecil.

Daftar karakter default adalah ["\n\n", "\n", " ", ""].

  • Ini membagi secara rekursif dalam urutan paragraf -> kalimat -> kata

Pendekatan ini membantu menjaga agar potongan teks tetap bersama sebanyak mungkin karena paragraf (diikuti oleh kalimat dan kemudian kata) dianggap sebagai unit yang paling terkait secara semantik.

  • Cara teks dibagi: Teks dibagi menurut daftar karakter ["\n\n", "\n", " ", ""].
  • Cara ukuran chunk diukur: Ukuran diukur berdasarkan jumlah karakter.
Terminal
%pip install -qU langchain-text-splitters
  • Buka file appendix-keywords.txt dan baca isinya.
  • Simpan isi yang dibaca ke dalam variabel file.
Python
# Buka file appendix-keywords.txt dan buat objek file yang disebut f.
with open("./data/appendix-keywords.txt") as f:
    file = f.read()  # Baca isi file dan simpan dalam variabel file.

Cetak sebagian dari isi yang dibaca dari file.

Python
# Cetak sebagian dari isi yang dibaca dari file.
print(file[:500])

output:

Output
Pencarian Semantik

Definisi: Pencarian semantik adalah metode pencarian yang melampaui pencocokan kata kunci sederhana dengan memahami makna dari pertanyaan pengguna untuk mengembalikan hasil yang relevan.
Contoh: Jika seorang pengguna mencari "planet tata surya," maka akan mengembalikan informasi tentang planet yang terkait seperti "Jupiter" dan "Mars."
Kata Kunci Terkait: Pemrosesan Bahasa Alami, Algoritma Pencarian, Penambangan Data

Embedding

Definisi: Embedding adalah proses mengubah data
Python
from langchain_text_splitters import RecursiveCharacterTextSplitter

Ini adalah contoh penggunaan RecursiveCharacterTextSplitter untuk membagi teks menjadi chunk yang lebih kecil.

  • Atur chunk_size menjadi 250 untuk membatasi ukuran setiap chunk.
  • Atur chunk_overlap menjadi 50 untuk memungkinkan tumpang tindih 50 karakter antara chunk yang berdekatan.
  • Gunakan fungsi len sebagai length_function untuk menghitung panjang teks.
  • Atur is_separator_regex ke False agar tidak menggunakan ekspresi reguler sebagai pemisah.
Python
text_splitter = RecursiveCharacterTextSplitter(
    # Atur ukuran chunk sangat kecil. Ini adalah pengaturan untuk tujuan demonstrasi.
    chunk_size=450,
    # Atur jumlah karakter yang tumpang tindih antara chunk.
    chunk_overlap=50,
    # Tentukan fungsi untuk menghitung panjang string.
    length_function=len,
    # Atur apakah akan menggunakan ekspresi reguler sebagai pemisah.
    is_separator_regex=False,
)
  • Gunakan text_splitter untuk membagi teks file menjadi unit dokumen.
  • Dokumen yang telah dibagi disimpan dalam daftar texts.
  • Cetak dokumen pertama dan kedua dari dokumen yang telah dibagi menggunakan print(texts[0]) dan print(texts[1])
Python
# Gunakan text_splitter untuk membagi teks file menjadi dokumen.
texts = text_splitter.create_documents([file])
print(texts[0])  # Cetak dokumen pertama dari dokumen yang telah dibagi.
print("===" * 20)
print(texts[1])  # Cetak dokumen kedua dari dokumen yang telah dibagi.

output:

Output
page_content='Pencarian Semantik

Definisi: Pencarian semantik adalah metode pencarian yang melampaui pencocokan kata kunci sederhana dengan memahami makna dari pertanyaan pengguna untuk mengembalikan hasil yang relevan.
Contoh: Jika seorang pengguna mencari "planet tata surya," maka akan mengembalikan informasi tentang planet yang terkait seperti "Jupiter" dan "Mars."
Kata Kunci Terkait: Pemrosesan Bahasa Alami, Algoritma Pencarian, Penambangan Data'
============================================================
page_content='Embedding

Definisi: Embedding adalah proses mengubah data teks seperti kata atau kalimat menjadi vektor kontinu berdimensi rendah, memungkinkan komputer untuk memahami dan memproses teks.
Contoh: Kata "apel" dapat direpresentasikan sebagai vektor seperti [0.65, -0.23, 0.17].
Kata Kunci Terkait: Pemrosesan Bahasa Alami, Vektorisasi, Pembelajaran Mendalam

Gunakan fungsi text_splitter.split_text() untuk membagi teks file.

Python
# Bagi teks dan kembalikan 2 elemen pertama dari teks yang telah dibagi.
text_splitter.split_text(file)[:2]

output:

Output
['Pencarian Semantik\n\nDefinisi: Pencarian semantik adalah metode pencarian yang melampaui pencocokan kata kunci sederhana dengan memahami makna dari pertanyaan pengguna untuk mengembalikan hasil yang relevan.\nContoh: Jika seorang pengguna mencari "planet tata surya," maka akan mengembalikan informasi tentang planet yang terkait seperti "Jupiter" dan "Mars."\nKata Kunci Terkait: Pemrosesan Bahasa Alami, Algoritma Pencarian, Penambangan Data', 'Embedding\n\nDefinisi: Embedding adalah proses mengubah data teks seperti kata atau kalimat menjadi vektor kontinu berdimensi rendah, memungkinkan komputer untuk memahami dan memproses teks.\nContoh: Kata "apel" dapat direpresentasikan sebagai vektor seperti [0.65, -0.23, 0.17].\nKata Kunci Terkait: Pemrosesan Bahasa Alami, Vektorisasi, Pembelajaran Mendalam\n\nToken']