Anda di halaman 1dari 8

MODUL

PRAKTIKUM 2

PEMROSESAN
BAHASA
ALAMI
Ade Nurhopipah, S.Si., M.Cs

ade_nurhopipah@amikompurwokerto.ac.id
MODUL PRAKTIKUM 2
PEMROSESAN BAHASA ALAMI
Normalisasi dan Regular Expression

A. Mengakses File Text


Cara terbaik untuk mempelajari bagaimana cara mengolah bahasa alami adalah dengan
mengaplikasikannya ke dalam text yang sebenarnya. Berbagai sumber text melimpah dan kita
akan mencoba mengaksesnya melalui google colab. Pada praktikum kali ini kita akan mencoba
mengakses text dari tiga sumber yaitu dari database text, dari situs website dan dari file drive.
Mencoba sumber text yang lain akan membuat anda lebih familiar dengan metode lain yang
berbeda.
Untuk praktikum kali ini, silahkan import library nltk (pemrosesan bahasa), re(regular expression).
From __future__ import division
import nltk, re

Database Text
Internet telah menyediakan banyak database berupa text yang dapat kita pergunakan
untuk belajar mengolah bahasa alami. Mari mencoba mengakses e-book dari proyek
gutenberg.org.
from urllib.request import urlopen
url = "http://www.gutenberg.org/files/2554/2554-0.txt"
raw = urlopen(url).read()
print(type(raw))
raw

Kita akan mengubah format file dari types byte ke dalam bentuk string dengan kode ASCI.

1 | Praktikum PBA By. Ade Nurhopipah


raw =(raw.decode('UTF-8')).encode('ascii', 'ignore')
print(type(raw))
raw

raw = raw.decode('UTF-8')
print(type(raw))
raw

Mari kita cari tahu panjang teks dan isi dari 100 string pertama

print('panjang teks =', len(raw))


raw[:100]

Sebagai catatan bahwa teks yang kita download mengandung header berupa nama teks,
pengarang, editor, lisensi dan lain-lain. Kita akan melakukan seleksi bagian teks tertentu dari bagian awal
(Part 1) pada teks sampai akhir teks.

start = raw.find("PART I")


print("Indeks pertama =", start)
raw = raw[start:len(raw)]
raw

Text dari website (html)


url = "http://news.bbc.co.uk/2/hi/health/2284783.stm"
html = urlopen(url).read()
html[:100]

Karena file html tidak hanya berisi teks, maka Kita dapat menghilangkan metadata, image, javaScript,
form dan tabel dengan fungsi get_text.

from bs4 import BeautifulSoup

raw = BeautifulSoup(html).get_text()
raw

2 | Praktikum PBA By. Ade Nurhopipah


Perhatikan bahwa setelah dilakukan decoding ke bentung string, text masih memuat
berbagai karakter yang tidak diinginkan, misalnya penanda baris baru “\r\n”
raw1 = raw[1000:2000]
print("Teks sebelum replacing" )
raw1

Kita dapat secara manual membersihkan text dari karakter yang tidak diinginkan.
raw1 = raw1.replace("\n","",500)
raw1 = raw1.replace("\r","",500)
raw1 = raw1.replace("\t","",100)
print("Teks sesudah replacing")
raw1

File Dari Google Drive


Untuk mengambil file yang berada pada google drive, pertama kita menghubungkan colab
dengan drive yang akan kita akses.
from google.colab import drive
drive.mount('/content/gdrive/', force_remount=True)

Selanjutnya tentukan alamat dimana file berada, dan kita dapat langsung membacanya.
text_path = '/content/gdrive/My Drive/Colab Notebooks/IndonesiaRaya.txt'
text = open(text_path, 'rb').read()
print(type(text))
text

Jangan lupa untuk mengkodekan kedalam tipe string.


text = text.decode('UTF-8')
print(type(text))
text

3 | Praktikum PBA By. Ade Nurhopipah


Mari kita bersihkan text dari tanda baris baru
text = text.replace("\r\n"," ",100)
text

B. Normalisasi Text
Seperti sudah kita pelajari bahwa sebelum text dapat diolah, kita harus melakukan pre-
processing terhadap text, agar dapat diolah sesuai kebutuhan. Untuk praktikum kali ini kita akan
melakukan case folding, tokenisasi dan stemming.

Pada praktikum ini, mari kita mencoba case folding dengan merubah semua huruf pada text menjadi
huruf kecil

text_lower = text.lower()
text_lower

Stemming
Untuk melakukan stemming (memisahkan imbuhan) kita dapat menggunakan Sastrawi yang
merupakan library yang dapat mengubah kata berimbuhan bahasa Indonesia menjadi bentuk
dasarnya.
!pip install Sastrawi
from Sastrawi.Stemmer.StemmerFactory import StemmerFactory

def stemmingIndo(text):
factory = StemmerFactory()
stemmer = factory.create_stemmer()
return stemmer.stem(text)

Aplikasikan fungsi yang dibuat pada text.


norm = stemmingIndo(text_lower)
norm

4 | Praktikum PBA By. Ade Nurhopipah


Tokenisasi
Kita akan mulai melakukan tokenisasi yaitu dengan memisahkan teks kedalam bagian-bagian kata dengan
menggunakan library nltk.Untuk melihat perbedaan token setelah case folding dan setelah stemming.

tokens = nltk.word_tokenize(text)
tokens_lowText = nltk.word_tokenize(text_lower)
tokens_norm = nltk.word_tokenize(norm)
print(tokens)
print(tokens_lowText)
print(tokens_norm)

Mari kita lihat perbedaan dari jumlah vocabulary setelah melalui beberapa proses tersebut.
vocabs = set(tokens)
vocabs_lowText = set(tokens_lowText)
vocabs_norm =set(tokens_norm)
print("Panjang token text =", len(vocabs))
print(sorted(vocabs))
print("Panjang token lower text =" ,len(vocabs_lowText))
print(sorted(vocabs_lowText))
print("Panjang token lower text =" ,len(vocabs_norm))
print(sorted(vocabs_norm))

C. Regular Expression
Dalam mengaplikasikan Regular expression, kita perlu memperhatikan aturan penulisan dan
simbol-simbol yang telah kita pelajari sebelumnya. Beberapa regular expession dasar diantaranya adalah
sebagai berikut.

5 | Praktikum PBA By. Ade Nurhopipah


Mari kita mencoba beberapa contoh dari regular expression.
Mencari kata di token yang diawali huruf “a”
wordlist = [w for w in tokens_norm if re.search('^a', w)]
wordlist

Mencari kata di token yang berakhiran huruf “ku”


wordlist = [w for w in tokens if re.search('ku$', w)]
wordlist

Mencari kata yang berakhiran dua huruf vokal


wordlist = [w for w in tokens if re.search('[aeiou]{2}$', w)]
wordlist

Cobalah eksplorasi regular ekspresi yang lain.

6 | Praktikum PBA By. Ade Nurhopipah


Latihan
1. Carilah kode untuk mengakses file dari komputer anda ke google colab.
2. Akseslah sebuah file text pada komputer anda, lalu lakukanlah normalisasi text yang
sudah dipelajari pada praktikum ini.
3. Cobalah beberapa regular exspression untuk mendapatkan kata-kata yang memiliki pola
tertentu pada text yang anda pilih.

Selamat Bereksplorasi

7 | Praktikum PBA By. Ade Nurhopipah

Anda mungkin juga menyukai