Analisa Teks Dengan NLTK

Analisa Teks Dengan NLTK

Kali ini akan membahas sedikit tentang Data Science. Data yang digunakan oleh para Data Scientist tak berupa angka-angka saja, tapi juga ada teks. Salah satu cara mencari data dari teks dengan menganalisanya, yang lagi ngtrend belakangan kali ini adalah sentiment analysis social media. Tapi, pada artikel ini akan membahas dasar menganalisa dengan NLTK.

NLTK (Natural Language Toolkit) adalah salah satu library yang dimiliki Python untuk melakukan analisa teks, dan salah satu tool para Data Scientist.

Memasang NLTK

Dalam tutorial ini menggungakan Python versi 3 dan menggunakan virtual environment, jadi silahkan cek terlebih dahulu versi Python yang digunakan dan silahkan ikuti tutorial Virtual Environment. Untuk memasang NLTK bisa menjalankan perintah:

pip install nltk

Selanjutnya, kita akan butuh beberapa data yang dimiliki oleh NLTK untuk artikel ini, data NLTK bisa di download via webnya disini atau bisa juga via terminal. Terlebih dahulu jalankan Python dan ketik baris perintah berikut:

import nltk
nltk.download()

Lebih jelasnya bisa lihat screenshot dibawah:

punkt-download

Tokenization

Langkah pertama untuk menganlisa teks adalah tokenization. Tokenization adalah sebuah proses memecah paragaraf menjadi beberapa kata, kalimat, frase atau simbol.

Tokenization Kalimat

Untuk memecah sebuah paragraf menjadi beberapa kalimat, silahkan buat file baru dengan nama token_kalimat.py dan tulis kodenya seperti ini:

import nltk
from nltk.tokenize import sent_tokenize

# Paragarf yang akan dipecah
text = """I’ve come to believe that madness is the illusion of danger pushed on us by those who govern. Overwhelming fear has us living on a razor’s edge. We spend each day so worried, we lack the separation needed to understand our own motivations or desires. We wake and fill our hours with anything to distract us from the existence we hold dear."""

# Memecah paragraf menjadi kalimat
token_klmt = sent_tokenize(text)

# Menghitung jumlah kalimat 
jml_klmt = len(token_klmt)

print(token_klmt)
print(jml_klmt)

token_kalimat

Tokenization Kata

Untuk memecah menjadi beberapa kata, tinggal memgganti sent_tokenize menjadi word_tokenize

import nltk
from nltk.tokenize import word_tokenize

# Paragraf yang akan dipecah
text = """I’ve come to believe that madness is the illusion of danger pushed on us by those who govern. Overwhelming fear has us living on a razor’s edge. We spend each day so worried, we lack the separation needed to understand our own motivations or desires. We wake and fill our hours with anything to distract us from the existence we hold dear."""

token_kata = word_tokenize(text)
print(tokenized_kata)

token_kata

Frequency Distribution

Setelah memecah sebuah paragraf, kita pasti butuh mencari kata atau simbol yang sering digunakan pada sebuah paragraf. Kata yang sering muncul bisa juga dijadikan sebuah grafik dengan matplotlib. Silahkan tulis kode berikut:

import nltk
from nltk.tokenize import word_tokenize
from nltk.probability import FreqDist

# Paragraf yang akan dipecah
text = """I’ve come to believe that madness is the illusion of danger pushed on us by those who govern. Overwhelming fear has us living on a razor’s edge. We spend each day so worried, we lack the separation needed to understand our own motivations or desires. We wake and fill our hours with anything to distract us from the existence we hold dear."""

# Memecah paragraf menjadi kata
token_kata = word_tokenize(text)

# Frekeuensi kata/simbol
fd = FreqDist(token_kata)

# Lima kata yang sering muncul
fq_kata = fd.most_common(5)

print(fd)
print(fq_kata)

fq_kata

Untuk grafik matplotlib silahkan ikuti script dibawah, tapi sebelumnya silahkan install tk terlebih dahulu jika ingin sama persis:

import nltk
import matplotlib
import matplotlib.pyplot as plt
matplotlib.use('TkAgg')
from nltk.tokenize import word_tokenize
from nltk.probability import FreqDist

# Paragraf yang akan dipecah
text = """I’ve come to believe that madness is the illusion of danger pushed on us by those who govern. Overwhelming fear has us living on a razor’s edge. We spend each day so worried, we lack the separation needed to understand our own motivations or desires. We wake and fill our hours with anything to distract us from the existence we hold dear."""

# Memecah paragraf menjadi kata
token_kata = word_tokenize(text)
# Frekeuensi kata/simbol
fd = FreqDist(token_kata)
# Lima kata yang sering muncul
fq_kata = fd.most_common(2)
print(fd)
print(fq_kata)

# Membuat grafik
fd.plot(30,cumulative=False)
plt.show()

fq_plot

POS Tag

Dari laman UI, POS (Part-of-Speech) Tag merupakan suatu cara pengkategorian kelas kata, seperti kata benda, kata kerja, kata sifat, kata sambung, kata keterangan, kata penentu dan lain-lain. Saat ini, POS Tag pada NLTK yang sudah menjadi bawaan adalah bahasa Inggris dan untuk menambahkan POS Tag berbahasa Indonesia harus punya data train, jika salah mohon dikoreksi :D. Dalam artikel ini, saya menggunakan POS Tag berbahasa Inggris. Tapi sebelum itu, kita harus mengunduh averaged_perceptron_tagger pada nltk. Setelah itu buat file baru dengan isi dibawah:

import nltk
from nltk.tokenize import word_tokenize
from nltk import pos_tag

# Paragraf yang akan dipecah
text = """There is no set length to a paragraph. Some paragraphs are only one sentence in length. However, a short paragraph like that should be left only to the expert writer—or a specific style of writing. You wouldn’t find a single-sentence paragraph in a research paper or academic journal."""

# token kata
token_kata = word_tokenize(text)
print(token_kata)

# pos tag
pos_tagger = pos_tag(token_kata)
print(pos_tagger)

pos_tag

Bagaimana, cukup mudah bukan menganalisa teks dengan Python? Tutorial ini sebenarnya masih panjang, tapi saya kurang fokus jadi segini dulu :D. Pantau terus blog Boxer untuk membaca tutorial dan cerita lainnya :D. Terima kasih

Sumber:
IBM Developer Text Analytics
Datacamp NLTK
POS Tag

Share This Post

Leave a Comment

Your email address will not be published. Required fields are marked *