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.
%pip install -qU langchain-text-splitters
- Buka file
appendix-keywords.txt
dan baca isinya. - Simpan isi yang dibaca ke dalam variabel
file
.
# 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.
# Cetak sebagian dari isi yang dibaca dari file.
print(file[:500])
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
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
sebagailength_function
untuk menghitung panjang teks. - Atur is_separator_regex ke
False
agar tidak menggunakan ekspresi reguler sebagai pemisah.
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 teksfile
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])
danprint(texts[1])
# 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:
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
.
# Bagi teks dan kembalikan 2 elemen pertama dari teks yang telah dibagi.
text_splitter.split_text(file)[:2]
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']