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.

from langchain_text_splitters import CharacterTextSplitter

text_splitter = CharacterTextSplitter.from_tiktoken_encoder(
    # Mengatur ukuran chunk menjadi 300.
    chunk_size=300,
    # Mengatur agar tidak ada bagian yang tumpang tindih antara chunk.
    chunk_overlap=0,
)
# Membagi teks dalam file menjadi unit chunk.
texts = text_splitter.split_text(file)

Mencetak jumlah chunk yang telah dibagi.

print(len(texts))  # Mencetak jumlah chunk yang telah dibagi.

Cetak elemen pertama dari daftar texts.

# Mencetak elemen pertama dari daftar texts.
print(texts[0])
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 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

Token

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.

from langchain_text_splitters import TokenTextSplitter

text_splitter = TokenTextSplitter(
    chunk_size=150,  # Mengatur ukuran chunk.
    chunk_overlap=0,  # Mengatur overlap antar chunk menjadi 0.
)

# Membagi teks state_of_the_union menjadi beberapa chunk.
texts = text_splitter.split_text(file)
print(texts[0])  # Mencetak chunk pertama dari teks yang telah dibagi.
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

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

pip install --upgrade --quiet spacy
Note: you may need to restart the kernel to use updated packages.

Unduh model en_core_web_sm

!python -m spacy download en_core_web_sm --quiet
✔ Download and installation successful
You can now load the package via spacy.load('en_core_web_sm')
  • Buka file appendix-keywords.txt dan baca isinya.

# 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.

Cetak sebagian isi untuk memverifikasi.

# Mencetak sebagian isi dari file yang telah dibaca.
print(file[:350])
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
  • Buat text splitter menggunakan kelas SpacyTextSplitter

import warnings
from langchain_text_splitters import SpacyTextSplitter

# Abaikan pesan peringatan.
warnings.filterwarnings("ignore")

# Membuat SpacyTextSplitter.
text_splitter = SpacyTextSplitter(
    chunk_size=300,  # Mengatur ukuran chunk menjadi 300.
    chunk_overlap=50,  # Mengatur overlap antar chunk menjadi 50.
)
  • Gunakan metode split_text dari objek text_splitter untuk membagi teks file

# Menggunakan text_splitter untuk membagi teks file.
texts = text_splitter.split_text(file)
print(texts[0])  # Mencetak elemen pertama dari teks yang telah dibagi.
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.

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

from langchain_text_splitters import SentenceTransformersTokenTextSplitter

# Membuat pemisah kalimat dan mengatur overlap antar chunk menjadi 0.
splitter = SentenceTransformersTokenTextSplitter(chunk_size=200, chunk_overlap=0)

Periksa teks sampel.

# 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.
print(file[:350])

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

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

count_start_and_stop_tokens = 2  # Mengatur jumlah token awal dan akhir menjadi 2.

# Mengurangi jumlah token awal dan akhir dari jumlah total token dalam teks.
text_token_count = splitter.count_tokens(
    text=file) - count_start_and_stop_tokens
print(text_token_count)  # Mencetak jumlah token dalam teks yang telah dihitung.

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

text_chunks = splitter.split_text(text=file)  # Membagi teks menjadi beberapa chunk.

Cetak chunk pertama untuk memverifikasi isinya.

# Cetak chunk ke-0.
print(text_chunks[1])  # Cetak chunk kedua dari teks yang telah dibagi.
##si, pemrosesan bahasa alami, penguraian tokenizer definisi : tokenizer adalah alat yang digunakan untuk membagi data teks menjadi token. ini digunakan dalam pemrosesan bahasa alami untuk melakukan pra - pemrosesan data. contoh : kalimat " saya suka pemrograman. " dibagi menjadi [ " saya ", " suka ", " pemrograman ", ". " ]. kata kunci terkait : tokenisasi, pemrosesan bahasa alami, penguraian vectorstore definisi : vector store adalah sistem yang menyimpan data yang telah diubah menjadi format vektor. ini digunakan untuk tugas - tugas seperti pencarian, klasifikasi, dan analisis data lainnya. contoh : menyimpan vektor embedding kata dalam basis data memungkinkan akses cepat. kata kunci terkait : embedding, basis data, vektorisasi sql definisi : sql ( structured query language ) adalah bahasa pemrograman yang digunakan untuk mengelola data dalam basis data. sql dapat melakukan berbagai tugas seperti query, modifikasi, penyisipan, dan penghapusan data. contoh : select * from users where age > 18 ; mengambil informasi pengguna yang berusia di atas 18 tahun. kata kunci terkait : basis data, query, manajemen data csv defini

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.

# 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 yang telah dibaca dari file.
print(file[:350])
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
  • Buat text splitter menggunakan kelas NLTKTextSplitter.

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

from langchain_text_splitters import NLTKTextSplitter

text_splitter = NLTKTextSplitter(
    chunk_size=350,  # Mengatur ukuran chunk
    chunk_overlap=0,  # Mengatur overlap antar chunk menjadi 0.
)

Gunakan metode split_text dari objek text_splitter untuk membagi teks file.

# Menggunakan text_splitter untuk membagi teks file.
texts = text_splitter.split_text(file)
print(texts[0])  # Mencetak elemen pertama dari teks yang telah dibagi.
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.

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.

from transformers import GPT2TokenizerFast

# Memuat tokenizer untuk model GPT-2.
hf_tokenizer = GPT2TokenizerFast.from_pretrained("gpt2")

Periksa teks sampel.

# 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 yang telah dibaca dari file.
print(file[:350])

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

Inisialisasi text splitter menggunakan tokenizer Hugging Face melalui metode from_huggingface_tokenizer

text_splitter = CharacterTextSplitter.from_huggingface_tokenizer(
    # Membuat objek CharacterTextSplitter menggunakan tokenizer Hugging Face.
    hf_tokenizer,
    chunk_size=300,
    chunk_overlap=50,
)
# Membagi teks state_of_the_union dan menyimpannya ke dalam variabel texts.
texts = text_splitter.split_text(file)

Periksa hasil pemecahan dari elemen ke-1.

print(texts[0])  # Mencetak elemen ke-1 dari daftar texts.
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 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

Token

Last updated