Materi
Tokenisasi memecah teks menjadi token, yaitu satuan yang akan dihitung; di kelas ini token adalah kata. Cara paling sederhana adalah str.split(), yang memecah pada spasi. Kelemahannya, tanda baca ikut menempel, sehingga "enak," dan "enak" dihitung sebagai dua token berbeda. re.findall(r"\w+", teks) mengambil setiap deretan karakter kata dan mengembalikannya sebagai list, sehingga tanda baca tertinggal dengan sendirinya.
import re
kalimat = "Paketnya datang, isinya lengkap. Kurirnya ramah!"
print(kalimat.split())
# ['Paketnya', 'datang,', 'isinya', 'lengkap.', 'Kurirnya', 'ramah!']
print(re.findall(r"\w+", kalimat.casefold()))
# ['paketnya', 'datang', 'isinya', 'lengkap', 'kurirnya', 'ramah']Kata ulang perlu diputuskan sejak awal. \w tidak mencakup tanda hubung, sehingga "buku-buku" terpecah menjadi dua token buku dan buku. Bila kata ulang harus tetap utuh, polanya ditulis \w+(?:-\w+)*: satu deretan kata, diikuti nol atau lebih pasangan tanda hubung dan deretan kata. Tanda (?:...) membuat grup tanpa tangkapan. Ini penting karena re.findall mengembalikan isi grup tangkapan bila pola memilikinya, jadi grup biasa (...) mengubah isi hasilnya.
Tokenisasi kalimat memakai cara yang sama dengan pemisah berbeda: re.split(r"[.!?]+", teks) memecah pada titik, tanda seru, atau tanda tanya, dan menyisakan string kosong di akhir bila teks diakhiri tanda itu. Singkatan seperti Jl. dan angka desimal seperti 2.5 ikut terpecah; pola sederhana ini tidak membedakannya.