1. Code
  2. Python

Pengenalan Natural Language Toolkit (NLTK)

Natural language processing (NLP) adalah pengolahan otomatis atau semi-otomatis bahasa manusia. NLP terkait erat dengan linguistik dan berkaitan dengan penelitian dalam ilmu kognitif, psikologi, fisiologi, dan matematika. Dalam domain ilmu komputer khususnya, NLP berkaitan dengan teknik compiler, teori bahasa formal, interaksi antar manusia dan komputer, machine learning, dan teorema pembuktian. Pertanyaan di Quora ini menunjukkan keuntungan lain dari NLP.
Scroll to top

Indonesian (Bahasa Indonesia) translation by Algustionesa Yoshi (you can also view the original English article)

Natural language processing (NLP) adalah pengolahan otomatis atau semi-otomatis bahasa manusia. NLP terkait erat dengan linguistik dan berkaitan dengan penelitian dalam ilmu kognitif, psikologi, fisiologi, dan matematika. Dalam domain ilmu komputer khususnya, NLP berkaitan dengan teknik compiler, teori bahasa formal, interaksi antar manusia dan komputer, machine learning, dan teorema pembuktian. Pertanyaan di Quora ini menunjukkan keuntungan lain dari NLP.

Dalam tutorial ini saya akan menuntun Anda melalui platform Python yang menarik untuk NLP yang disebut Natural Language Toolkit (NLTK). Sebelum kita lihat cara kerja platform ini, saya akan memberitahu Anda apa itu NLTK.

Apa itu NLTK?

Natural Language Toolkit (NLTK) adalah sebuah platform yang digunakan untuk membangun program analisis teks. Platform ini awalnya dirilis oleh Steven Bird dan Edward Loper dalam kaitannya dengan mata kuliah komputasi linguistik di Universitas Pennsylvania pada tahun 2001. Ada sebuah buku pegangan untuk platform tersebut dengan judul Natural Language Processing dengan Python.

Instalasi NLTK

Sekarang mari kita Instal NLTK untuk mulai bereksperimen dengan natural language processing. Ini akan menyenangkan!

Instalasi NLTK sangat sederhana. Saya menggunakan Windows 10, jadi di dalam Command Prompt (MS-DOS) saya ketik perintah berikut:

1
pip install nltk

Jika Anda menggunakan Ubuntu atau macOS, Anda menjalankan perintah dari Terminal. Informasi lebih lanjut mengenai instalasi NLTK pada platform yang berbeda dapat ditemukan di dalam dokumentasi.

Jika Anda bertanya-tanya apa pip, itu adalah sebuah sistem manajemen paket yang digunakan untuk menginstal dan mengelola paket software yang ditulis dengan Python. Jika Anda menggunakan Python 2 > = 2.7.9 atau Python 3 > = 3.4, Anda sudah memiliki pip yang sudah terinstal! Untuk memeriksa versi Python Anda, cukup ketik berikut pada command prompt Anda:

1
python --version

Mari kita teruskan dan periksa jika kita telah berhasil menginstal NLTK. Untuk melakukannya, buka IDLE Phyton dan ketik kedua baris yang ditunjukkan pada gambar di bawah ini:

Check if we have installed NLTK successfullyCheck if we have installed NLTK successfullyCheck if we have installed NLTK successfully

Jika Anda mendapatkan versi NLTK Anda kembali, maka Selamat, NLTK Anda berhasil terinstal!

Jadi apa yang telah kita lakukan dari langkah di atas adalah bahwa kita menginstal NLTK dari Python Package index (pip) secara lokal ke dalam virtual environment.

Perlu diketahui bahwa Anda mungkin memiliki versi yang berbeda dari NLTK tergantung kapan Anda menginstal platform tersebut, tapi itu bukan masalah.

Bekerja dengan NLTK

Hal pertama yang perlu kita lakukan untuk bekerja dengan NLTK adalah mengunduh NLTK corpora. Saya akan mengunduh seluruh corpora. Saya tahu file ini sangat besar (10.9 GB), tetapi kita hanya melakukannya sekali. Jika Anda tahu corpora yang Anda butuhkan, Anda tidak perlu men-download seluruh corpora.

Di IDLE Python Anda, ketikkan:

1
import nltk
2
nltk.download()

Dalam kasus ini, Anda akan mendapatkan GUI yang mana Anda dapat menentukan alamat penyimpanan dan apa yang akan diunduh, seperti ditunjukkan pada gambar di bawah:

A GUI from which you can specify the destinationA GUI from which you can specify the destinationA GUI from which you can specify the destination

Saya akan menngunduh semuanya. Klik tombol Download di bagian kiri bawah jendela, dan tunggu sebentar sampai semuanya terunduh ke direktori tujuan Anda.

Sebelum lanjut, Anda mungkin bertanya-tanya apa itu corpus (bentuk jamak dari corpora). Corpus dapat didefinisikan sebagai berikut:

Corpus, jamak dari corpora; Sebuah koleksi data linguistik, baik disusun sebagai teks-teks tertulis atau sebagai sebuah transkripsi rekaman suara. Tujuan utama dari corpus adalah untuk memverifikasi sebuah hipotesis tentang bahasa - misalnya, untuk menentukan bagaimana penggunaan suara tertentu, kata atau ragam susunan sintaksis. Linguistik Corpus berkaitan dengan prinsip-prinsip dan praktik menggunakan corpora dalam studi bahasa. Korpus komputer adalah bagian besar teks-teks yang dapat dibaca mesin.
(Crystal, David. 1992. An Encyclopedic Dictionary of Language and Languages. Oxford: Blackwell.)

Teks Korpus adalah bagian besar suatu teks.

Stop Word

Terkadang kita perlu menyaring data yang tidak berguna untuk membuat data yang lebih dapat dipahami oleh komputer. Dalam natural language processing (NLP), data tidak berguna (kata-kata) itu disebut stop words. Jadi, kata-kata ini tidak bermakna, dan akan kita hilangkan.

NLTK memberi kita beberapa stop word untuk memulai. Untuk mengetahui kata-kata tersebut, gunakan script berikut:

1
from nltk.corpus import stopwords
2
print(set(stopwords.words('English')))

Dalam hal ini Anda akan mendapatkan hasil sebagai berikut:

The output from NLTKThe output from NLTKThe output from NLTK

Apa yang kita lakukan adalah kita menampilkan satu set (koleksi item-item yang tidak tersusun) stop word bahasa Inggris.

Bagaimana caranya kita bisa menghapus stop word dari teks kita sendiri? Contoh di bawah menunjukkan bagaimana kita dapat melakukan pekerjaan ini:

1
from nltk.corpus import stopwords
2
from nltk.tokenize import word_tokenize
3
4
text = 'In this tutorial, I\'m learning NLTK. It is an interesting platform.'
5
stop_words = set(stopwords.words('english'))
6
words = word_tokenize(text)
7
8
new_sentence = []
9
10
for word in words:
11
    if word not in stop_words:
12
  	new_sentence.append(word)
13
14
print(new_sentence)

Output dari script diatas adalah:

The resulting output of the scriptThe resulting output of the scriptThe resulting output of the script

Tokenisasi, sebagaimana terdefinisi di Wikipedia, adalah:

Proses memutus aliran teks menjadi kata-kata, frase, simbol, atau unsur-unsur lain yang bermakna disebut token.

Jadi fungsi word_tokenize() adalah:

Melakukan Tokenisasi sebuah string untuk memisahkan tanda baca selain titik

Pencarian

Anggap saja kita memiliki berkas teks berikut (download file teks dari Dropbox). Kita ingin mencari kata language. Kita bisa dengan mudah melakukan ini menggunakan platform NLTK sebagai berikut:

1
import nltk
2
3
file = open('NLTK.txt', 'r')
4
read_file = file.read()
5
text = nltk.Text(nltk.word_tokenize(read_file))
6
7
match = text.concordance('language')

Dalam hal ini Anda akan mendapatkan output sebagai berikut:

Searching for the word languageSearching for the word languageSearching for the word language

Perhatikan bahwa concordance() kembali setiap muncul kata language, Selain dibeberapa konteks. Sebelum itu, seperti yang ditunjukkan dalam script diatas, kita melakukan tokenisasi berkas yang terbaca dan kemudian mengubahnya menjadi objek nltk.Tekt

Saya hanya ingin mengingatkan bahwa pertama kali menjalankan program, saya mendapat error berikut, yang tampaknya berhubungan dengan encoding yang digunakan konsol:

1
File "test.py", line 7, in <module>
2
    match = text.concordance('language').decode('utf-8')
3
  File "C:\Python35\lib\site-packages\nltk\text.py", line 334, in concordance
4
    self._concordance_index.print_concordance(word, width, lines)
5
  File "C:\Python35\lib\site-packages\nltk\text.py", line 200, in print_concordance
6
    print(left, self._tokens[i], right)
7
  File "C:\Python35\lib\encodings\cp437.py", line 19, in encode
8
    return codecs.charmap_encode(input,self.errors,encoding_map)[0]
9
UnicodeEncodeError: 'charmap' codec can't encode character '\u2014' in position 11: character maps to <undefined>

Apa yang saya lakukan untuk mengatasi masalah ini adalah dengan menjalankan perintah berikut di konsol saya sebelum menjalankan program: chcp 65001.

Corpus Gutenberg

Seperti disebutkan di Wikipedia:

Proyek Gutenberg (PG) merupakan suatu upaya relawan untuk mendigitalkan dan mengarsipkan karya budaya, untuk "mendorong pembuatan dan distribusi ebook". Didirikan pada tahun 1971 oleh Michael S. Hart dan merupakan perpustakaan digital tertua. Sebagian besar koleksinya adalah teks utuh dari buku-buku tidak berhak cipta. Proyek ini mencoba membuat koleksi-koleksi ini sebebas mungkin, dalam jangka panjang, membuka format yang dapat digunakan di semua komputer. Pada 3 Oktober tahun 2015, Proyek Gutenberg mencapai 50.000 item koleksi.

NLTK berisi sebagian kecil teks-teks pilihan dari Proyek Gutenberg. Untuk melihat file yang disertakan dari Proyek Gutenberg, kita lakukan yang berikut:

1
import nltk
2
3
gutenberg_files = nltk.corpus.gutenberg.fileids()
4
print(gutenberg_files)

Output dari script diatas adalah sebagai berikut:

The output of the above scriptThe output of the above scriptThe output of the above script

Jika kita ingin untuk menemukan jumlah kata untuk teks file bryant-stories.txt misalnya, kita dapat melakukan hal berikut:

1
import nltk
2
3
bryant_words = nltk.corpus.gutenberg.words('bryant-stories.txt')
4
print(len(bryant_words))

Script di atas harus kembali dengan jumlah kata: 55563.

Kesimpulan

Seperti yang telah kita tahu dalam tutorial ini, platform NLTK memberi kita alat yang canggih untuk bekerja dengan Natural Language Processing (NLP). Saya hanya sedikit membahas dalam tutorial ini. Jika Anda ingin lebih lanjut menggunakan NLTK untuk pekerjaan NLP yang lain, Anda dapat merujuk ke buku pegangan NLTK: Natural Language Processing with Python.