Perangkat Bahasa Alami - Teks Tokenisasi

Apa itu Tokenisasi?

Ini dapat didefinisikan sebagai proses memecah sepotong teks menjadi bagian-bagian yang lebih kecil, seperti kalimat dan kata. Bagian yang lebih kecil ini disebut token. Misalnya, kata adalah tanda dalam kalimat, dan kalimat adalah tanda dalam paragraf.

Seperti yang kita ketahui bahwa NLP digunakan untuk membangun aplikasi seperti analisis sentimen, sistem QA, terjemahan bahasa, chatbot pintar, sistem suara, dll., Oleh karena itu, untuk membangunnya, penting untuk memahami pola dalam teks. Token yang disebutkan di atas sangat berguna dalam menemukan dan memahami pola-pola ini. Tokenisasi dapat dianggap sebagai langkah dasar untuk resep lain seperti stemming dan lemmatisasi.

Paket NLTK

nltk.tokenize adalah paket yang disediakan oleh modul NLTK untuk mencapai proses tokenisasi.

Tokenizing kalimat menjadi kata-kata

Memisahkan kalimat menjadi kata-kata atau membuat daftar kata dari string merupakan bagian penting dari setiap aktivitas pemrosesan teks. Mari kita pahami dengan bantuan berbagai fungsi / modul yang disediakan olehnltk.tokenize paket.

modul word_tokenize

word_tokenizemodul digunakan untuk tokenisasi kata dasar. Contoh berikut akan menggunakan modul ini untuk membagi kalimat menjadi kata-kata.

Contoh

import nltk
from nltk.tokenize import word_tokenize
word_tokenize('Tutorialspoint.com provides high quality technical tutorials for free.')

Keluaran

['Tutorialspoint.com', 'provides', 'high', 'quality', 'technical', 'tutorials', 'for', 'free', '.']

Kelas TreebankWordTokenizer

word_tokenize modul, yang digunakan di atas pada dasarnya adalah fungsi pembungkus yang memanggil fungsi tokenize () sebagai turunan dari TreebankWordTokenizerkelas. Ini akan memberikan output yang sama seperti yang kita dapatkan saat menggunakan modul word_tokenize () untuk membagi kalimat menjadi kata. Mari kita lihat contoh yang sama yang diterapkan di atas -

Contoh

Pertama, kita perlu mengimpor toolkit bahasa alami (nltk).

import nltk

Sekarang, impor file TreebankWordTokenizer kelas untuk mengimplementasikan algoritma tokenizer kata -

from nltk.tokenize import TreebankWordTokenizer

Selanjutnya, buat instance kelas TreebankWordTokenizer sebagai berikut -

Tokenizer_wrd = TreebankWordTokenizer()

Sekarang, masukkan kalimat yang ingin Anda ubah menjadi token -

Tokenizer_wrd.tokenize(
   'Tutorialspoint.com provides high quality technical tutorials for free.'
)

Keluaran

[
   'Tutorialspoint.com', 'provides', 'high', 'quality', 
   'technical', 'tutorials', 'for', 'free', '.'
]

Contoh implementasi lengkap

Mari kita lihat contoh implementasi lengkapnya di bawah ini

import nltk
from nltk.tokenize import TreebankWordTokenizer
tokenizer_wrd = TreebankWordTokenizer()
tokenizer_wrd.tokenize('Tutorialspoint.com provides high quality technical
tutorials for free.')

Keluaran

[
   'Tutorialspoint.com', 'provides', 'high', 'quality', 
   'technical', 'tutorials','for', 'free', '.'
]

Ketentuan paling signifikan dari tokenizer adalah memisahkan kontraksi. Misalnya, jika kita menggunakan modul word_tokenize () untuk tujuan ini, itu akan memberikan output sebagai berikut -

Contoh

import nltk
from nltk.tokenize import word_tokenize
word_tokenize('won’t')

Keluaran

['wo', "n't"]]

Konvensi semacam itu oleh TreebankWordTokenizertidak bisa diterima. Itu sebabnya kami memiliki dua alternatif kata tokenizers yaituPunktWordTokenizer dan WordPunctTokenizer.

Kelas WordPunktTokenizer

Tokenizer kata alternatif yang membagi semua tanda baca menjadi token terpisah. Mari kita pahami dengan contoh sederhana berikut -

Contoh

from nltk.tokenize import WordPunctTokenizer
tokenizer = WordPunctTokenizer()
tokenizer.tokenize(" I can't allow you to go home early")

Keluaran

['I', 'can', "'", 't', 'allow', 'you', 'to', 'go', 'home', 'early']

Tokenisasi teks menjadi kalimat

Pada bagian ini kita akan membagi teks / paragraf menjadi kalimat. NLTK menyediakansent_tokenize modul untuk tujuan ini.

Mengapa ini dibutuhkan?

Sebuah pertanyaan jelas yang muncul di benak kita adalah ketika kita memiliki kata tokenizer lalu mengapa kita membutuhkan tokenizer kalimat atau mengapa kita perlu mentokenisasi teks menjadi kalimat. Misalkan kita perlu menghitung kata rata-rata dalam kalimat, bagaimana kita bisa melakukan ini? Untuk menyelesaikan tugas ini, kita membutuhkan tokenisasi kalimat dan tokenisasi kata.

Mari kita pahami perbedaan antara kalimat dan kata tokenizer dengan bantuan contoh sederhana berikut -

Contoh

import nltk
from nltk.tokenize import sent_tokenize
text = "Let us understand the difference between sentence & word tokenizer. 
It is going to be a simple example."
sent_tokenize(text)

Keluaran

[
   "Let us understand the difference between sentence & word tokenizer.", 
   'It is going to be a simple example.'
]

Tokenisasi kalimat menggunakan ekspresi reguler

Jika Anda merasa bahwa keluaran dari kata tokenizer tidak dapat diterima dan ingin kontrol penuh atas cara membuat token teks, kami memiliki ekspresi reguler yang dapat digunakan saat melakukan tokenisasi kalimat. NLTK menyediakanRegexpTokenizer kelas untuk mencapai ini.

Mari kita pahami konsepnya dengan bantuan dua contoh di bawah ini.

Dalam contoh pertama kami akan menggunakan ekspresi reguler untuk mencocokkan token alfanumerik ditambah tanda kutip tunggal sehingga kami tidak membagi kontraksi seperti “won’t”.

Contoh 1

import nltk
from nltk.tokenize import RegexpTokenizer
tokenizer = RegexpTokenizer("[\w']+")
tokenizer.tokenize("won't is a contraction.")
tokenizer.tokenize("can't is a contraction.")

Keluaran

["won't", 'is', 'a', 'contraction']
["can't", 'is', 'a', 'contraction']

Dalam contoh pertama, kami akan menggunakan ekspresi reguler untuk membuat token di spasi.

Contoh 2

import nltk
from nltk.tokenize import RegexpTokenizer
tokenizer = RegexpTokenizer('/s+' , gaps = True)
tokenizer.tokenize("won't is a contraction.")

Keluaran

["won't", 'is', 'a', 'contraction']

Dari output di atas, kita dapat melihat bahwa tanda baca tetap ada di token. Parameter gaps = True berarti pola akan mengidentifikasi celah untuk dijadikan token. Sebaliknya, jika kita akan menggunakan parameter gaps = False maka pola tersebut akan digunakan untuk mengidentifikasi token yang dapat dilihat pada contoh berikut -

import nltk
from nltk.tokenize import RegexpTokenizer
tokenizer = RegexpTokenizer('/s+' , gaps = False)
tokenizer.tokenize("won't is a contraction.")

Keluaran

[ ]

Ini akan memberi kita keluaran kosong.