03. Token Text Splitter

TokenTextSplitter

Model bahasa memiliki batasan jumlah token. Oleh karena itu, penting untuk memastikan bahwa jumlah token tidak melebihi batasan yang ditentukan.

TokenTextSplitter sangat berguna saat membagi teks menjadi potongan-potongan (chunk) berdasarkan jumlah token.

tiktoken

tiktoken adalah Tokenizer BPE (Byte Pair Encoding) yang cepat yang dibuat oleh OpenAI.

pip install --upgrade --quiet langchain-text-splitters tiktoken
  • Buka file ./data/appendix-keywords.txt dan baca isinya.

  • Simpan isi yang dibaca ke dalam variabel file

# Membuka file data/appendix-keywords.txt dan membuat objek file bernama f.
with open("./data/appendix-keywords.txt") as f:
    file = f.read()  # Membaca isi file dan menyimpannya ke dalam variabel file.

Mencetak sebagian isi dari file yang telah dibaca

# Mencetak sebagian isi dari file yang telah dibaca.
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

Membagi teks menggunakan CharacterTextSplitter.

  • Menginisialisasi pembagi teks berbasis Tiktoken encoder menggunakan metode from_tiktoken_encoder.

Mencetak jumlah chunk yang telah dibagi.

Cetak elemen pertama dari daftar texts.

Catatan

Saat menggunakan CharacterTextSplitter.from_tiktoken_encoder, teks hanya dibagi oleh CharacterTextSplitter, dan tiktoken tokenizer digunakan untuk menggabungkan teks yang telah dibagi. (Ini berarti bahwa teks yang dibagi dapat lebih besar dari ukuran chunk yang diukur oleh tiktoken tokenizer.)

Jika Anda menggunakan RecursiveCharacterTextSplitter.from_tiktoken_encoder, teks yang dibagi dapat dipastikan tidak melebihi ukuran chunk yang diizinkan oleh model bahasa, dan setiap pembagian akan dibagi secara rekursif jika lebih besar. Anda juga dapat langsung memuat pembagi tiktoken, yang memastikan bahwa setiap pembagian lebih kecil dari ukuran chunk.

TokenTextSplitter

  • Membagi teks menjadi token menggunakan kelas TokenTextSplitter.

spaCy

spaCy adalah perpustakaan perangkat lunak sumber terbuka untuk pemrosesan bahasa alami tingkat lanjut, yang ditulis dalam bahasa pemrograman Python dan Cython.

Alternatif lain untuk NLTK adalah menggunakan tokenizer spaCy.

  1. Cara teks dibagi: Teks dibagi oleh tokenizer spaCy.

  2. Cara mengukur ukuran chunk: Diukur berdasarkan jumlah karakter.

Berikut adalah perintah pip untuk memperbarui pustaka spaCy ke versi terbaru

Unduh model en_core_web_sm

  • Buka file appendix-keywords.txt dan baca isinya.

Cetak sebagian isi untuk memverifikasi.

  • Buat text splitter menggunakan kelas SpacyTextSplitter

  • Gunakan metode split_text dari objek text_splitter untuk membagi teks file

Sentence Transformer

SentenceTransformersTokenTextSplitter adalah pemisah teks yang khusus untuk model sentence-transformer.

Perilaku defaultnya adalah membagi teks menjadi potongan-potongan yang sesuai dengan jendela token dari model sentence transformer yang ingin Anda gunakan

Periksa teks sampel.

output:

Berikut adalah kode untuk menghitung jumlah token dalam teks yang disimpan di variabel file. Jumlah token akan dicetak setelah mengeluarkan token awal dan akhir.

Gunakan fungsi splitter.split_text() untuk membagi teks yang disimpan di variabel text_to_split menjadi beberapa chunk

Cetak chunk pertama untuk memverifikasi isinya.

NLTK

Natural Language Toolkit (NLTK) adalah perpustakaan dan kumpulan program untuk Natural Language Processing (NLP) dalam bahasa Inggris, yang ditulis dalam bahasa pemrograman Python.

Alih-alih hanya membagi teks dengan "\n\n", NLTK dapat digunakan untuk membagi teks berdasarkan tokenizer NLTK.

  • Metode pembagian teks: Teks dibagi oleh tokenizer NLTK.

  • Metode pengukuran ukuran chunk: Diukur berdasarkan jumlah karakter.

  • Berikut adalah perintah pip untuk menginstal pustaka nltk.

  • NLTK (Natural Language Toolkit) adalah pustaka Python untuk pemrosesan bahasa alami.

  • Anda dapat melakukan berbagai tugas NLP seperti prapemrosesan data teks, tokenisasi, analisis morfologis, dan penandaan bagian dari ucapan.

Periksa teks sampel.

  • Buat text splitter menggunakan kelas NLTKTextSplitter.

  • Atur parameter chunk_size ke 1000 untuk menentukan bahwa teks harus dibagi menjadi chunk hingga 1000 karakter.

Gunakan metode split_text dari objek text_splitter untuk membagi teks file.

Hugging Face tokenizer

Hugging Face menyediakan berbagai tokenizer.

Dalam kode ini, kita menggunakan salah satu tokenizer dari Hugging Face, yaitu GPT2TokenizerFast, untuk menghitung panjang token dari teks.

Metode Pemecahan Teks:

Teks dipecah berdasarkan unit karakter yang diberikan. Metode Pengukuran Ukuran Chunk:

Berdasarkan jumlah token yang dihitung oleh tokenizer Hugging Face. Buat objek tokenizer menggunakan kelas GPT2TokenizerFast.

Panggil metode from_pretrained untuk memuat model tokenizer "gpt2" yang telah dilatih sebelumnya.

Periksa teks sampel.

output:

Inisialisasi text splitter menggunakan tokenizer Hugging Face melalui metode from_huggingface_tokenizer

Periksa hasil pemecahan dari elemen ke-1.

Last updated