> For the complete documentation index, see [llms.txt](https://altero.gitbook.io/langchain-book-by-altero/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://altero.gitbook.io/langchain-book-by-altero/ch07-text-splitter/01.-pemisahan-teks-karakter-charactertextsplitter.md).

# 01. Pemisahan Teks Karakter (CharacterTextSplitter)

## CharacterTextSplitter

Metode ini adalah pendekatan yang paling sederhana.

Pada dasarnya, teks dibagi berdasarkan "\n\n" pada tingkat karakter, dan ukuran chunk diukur berdasarkan jumlah karakter.

* Metode Pemisahan Teks: Berdasarkan karakter tunggal
* Pengukuran Ukuran Chunk: Berdasarkan jumlah karakter

```python
pip install -qU langchain-text-splitters
```

* Buka file `./data/appendix-keywords.txt` dan baca isinya.
* Simpan isi yang dibaca ke dalam variabel `file`.

```python
# Buka file data/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 :

{% code overflow="wrap" %}

```
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
```

{% endcode %}

Berikut adalah kode yang membagi teks menjadi beberapa chunk menggunakan `CharacterTextSplitter`.

* Parameter `separator` menetapkan kriteria untuk pembagian. Nilai defaultnya adalah "\n\n".
* Parameter `chunk_size` diatur ke 250, membatasi ukuran maksimum setiap chunk menjadi 250 karakter.
* Parameter `chunk_overlap` diatur ke 50, memungkinkan tumpang tindih 50 karakter antara chunk yang berdekatan.
* Parameter `length_function` diatur ke len, menentukan fungsi yang digunakan untuk menghitung panjang teks.
* Parameter `is_separator_regex` diatur ke False, memperlakukan separator sebagai string biasa dan bukan ekspresi reguler.

```python
from langchain_text_splitters import CharacterTextSplitter

text_splitter = CharacterTextSplitter(
    # Menentukan pemisah yang akan digunakan saat membagi teks. Nilai default adalah "\n\n".
    # separator=" ",
    # Menentukan ukuran maksimum dari chunk teks yang telah dibagi.
    chunk_size=450,
    # Menentukan jumlah karakter yang tumpang tindih antara chunk teks yang telah dibagi.
    chunk_overlap=50,
    # Menentukan fungsi untuk menghitung panjang teks.
    length_function=len,
    # Menentukan apakah pemisah adalah ekspresi reguler.
    is_separator_regex=False,
)
```

* Gunakan `text_splitter` untuk membagi teks `file` menjadi unit dokumen.
* Cetak dokumen pertama `(texts[0])` dari daftar dokumen yang telah dibagi.

```python
# Gunakan text_splitter untuk membagi teks state_of_the_union menjadi dokumen.
texts = text_splitter.create_documents([file])
print(texts[0])  # Cetak dokumen pertama dari dokumen yang telah dibagi.
```

output:

{% code overflow="wrap" %}

```
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'
```

{% endcode %}

Berikut adalah contoh pengiriman metadata bersama dengan dokumen.

Perhatikan bahwa metadata dibagi bersama dengan dokumen.

* Metode `create_documents` menerima daftar data teks dan metadata sebagai argumen.

```python
metadatas = [
    {"document": 1},
    {"document": 2},
]  # Definisikan daftar metadata untuk dokumen.
documents = text_splitter.create_documents(
    [
        file,
        file,
    ],  # Berikan data teks yang akan dibagi sebagai daftar.
    metadatas=metadatas,  # Berikan metadata yang sesuai dengan setiap dokumen.
)
print(documents[0])  # Cetak dokumen pertama dari dokumen yang telah dibagi.
```

output:

{% code overflow="wrap" %}

```
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' metadata={'document': 1}
```

{% endcode %}

Gunakan metode `split_text()` untuk membagi teks.

* `text_splitter.split_text(file)[0]` membagi teks `file` menggunakan `text_splitter` dan mengembalikan elemen pertama dari potongan teks yang telah dibagi.

```python
# Bagi teks file menggunakan text_splitter dan kembalikan elemen pertama dari teks yang telah dibagi.
text_splitter.split_text(file)[0]
```

output:

{% code overflow="wrap" %}

```
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
```

{% endcode %}
