yang berhasil diambil
4.1.2. Perancangan Preproses Data
4.1.2.1. Segmentasi Kalimat
Tahap awal untuk melakukan preproses data adalah segmentasi kalimat. Segmentasi kalimat bertujuan untuk memecah beberapa kalimat yang terdapat dalam satu paragraf menjadi kalimat per kalimat. Hal ini dilakukan dengan tujuan untuk mempermudah proses tokenisasi yang akan dilakukan selanjutnya. Pada penelitian yang terkait dengan Natural Language Processing, proses ini dikenal dengan Sentence Boundary Disambiguation (SBD) atau secara sederhana dapat
disebut dengan pemecahan kalimat. Proses segmentasi kalimat ini lebih jelasnya dapat dilihat pada gambar berikut :
Untuk melakukan segmentasi kalimat, penelitian ini menggunakan salah satu model yang terdapat dalam sebuah library yang telah disediakan oleh Apache OpenNLP. Model yang digunakan tersebut disebut dengan Sentence Detector dengan nama file en-sent.bin. Model ini telah dilatih untuk mendeteksi kalimat yang terdapat pada teks mentah, sehingga sesuai untuk diterapkan pada data teks mentah yang akan diolah pada penelitian ini.
Sebagai uji coba sebelum melakukan implementasi, maka data mentah ulasan pelanggan yang telah diambil sebelumnya dapat disimpan ke dalam sebuah file dengan format .txt. File tersebut disimpan ke dalam sebuah folder package dimana segmentasi kalimat akan dilakukan. Lalu, dilakukan segmentasi kalimat akan dilakukan dengan pre-trained model yang telah disediakan oleh OpenNLP untuk tokenisasi, yaitu en-token.bin dengan melakukan load terhadap model tersebut ke program.
Method utama yang digunakan untuk melakukan segmentasi kalimat ini adalah sentDetect() pada class SentenceDetectorME yang terdapat pada model tersebut yang digunakan untuk mendeteksi kalimat-kalimat yang terdapat pada teks mentah. Method ini dapat menerima variabel String sebagai parameternya. Untuk lebih jelasnya, kode yang dapat dibuat ke dalam sebuah program untuk melakukan segmentasi kalimat ini dapat dilihat sebagai berikut :
Data Teks Sentence Detection Sentence API S 1 S 3 S 2 S 4 S 5
61 import java.io.FileInputStream; import java.io.InputStream; import opennlp.tools.sentdetect.SentenceDetectorME; import opennlp.tools.sentdetect.SentenceModel; import opennlp.tools.util.Span;
public class SentencePosDetection {
public static void main(String args[]) throws Exception {
String paragraph = "Selamat Datang di percobaan Segmentasi Kalimat. "
+ "Penelitian ini berkaitan dengan Lab SE";
//Melakukan Load terhadap model InputStream inputStream = new
FileInputStream("C:/OpenNLP_models/en-sent.bin"); SentenceModel model = new
SentenceModel(inputStream);
//Menginisiasi Class Sentence Detector SentenceDetectorME detector = new SentenceDetectorME(model);
//Mendeteksi posisi kalimat pada paragraf Span spans[] =
detector.sentPosDetect(paragraph);
//Mencetak kalimat
for (Span span : spans) System.out.println(span); }
}
Kode 4.1 Kode untuk Melakukan Segmentasi Kalimat
4.1.2.2.Tokenisasi
Tahap selanjutnya adalah melakukan tokenisasi, yaitu proses pemecahan kalimat per kalimat menjadi kata per kata. Proses ini dilakukan dengan tujuan untuk mempermudah proses
labeling kata pada tahap selanjutnya. Untuk lebih jelasnya, proses tokenisasi tersebut dapat dilihat pada gambar berikut :
Tahap yang perlu dilakukan untuk proses tokenisasi ini adalah dengan memisahkan kalimat menjadi kata per kata. Setelah memisahkan kalimat menjadi kata, maka tools untuk melakukan tokenisasi yang telah disediakan oleh Apache OpenNLP tersebut secara langsung akan melakukan labeling pada setiap kata. Labeling adalah proses memberikan label pada setiap kata yang ada sesuai dengan jenis kata tersebut. Apache OpenNLP menggunakan Penn Treebank Set sebagai panduan untuk melakukan label pada setiap jenis kata yang ada pada model Tokenizing-nya. Label pada setiap berdasarkan Penn Treebank Set dapat dilihat pada tabel berikut :
Tabel 4.6 Label Berdasarkan Penn Treebank Set
Nomor Label Deskripsi
1 CC Coordinating Conjuction
2 CD Cardinal Number
3 DT Determiner
4 EX Existential there
5 FW Foreign Word
6 IN Preposition or subordinating conjuction
7 JJ Adjective 8 JJR Adjective, superlative 9 JJS Adjective, superlative Kalimat Tokenizing Tokenizer API T 1 T 3 T 2 T 4 T 5
63 10 LS List item marker
11 MD Modal
12 NN Noun, singular or mass 13 NNS Noun, Plural
14 NNP Proper Noun, singular 15 NNPS Proper noun, plural 16 PDT Predeterminer 17 POD Possesive Ending 18 PRP Personal Pronoun 19 PRP$ Possesive Pronoun 20 RB Adverb 21 RBR Adverb, comparative 22 RBS Adverb, superlative 23 RP Particle 24 SYM Symbol 25 TO To 26 UH Interjection 27 VB Verb, base form 28 VBD Verb, past tense
29 VBG Ver, gerund or present particle 30 VBN Verb, past participle
31 VBP Verb, non-3rd person singular present 32 VBZ Verb,, 3rd person singular present 33 WDT Wh-determiner
34 WP Wh-pronoun
35 WP$ Possesive we-pronoun 36 WRB Wh- adverb
Sebagai contoh, berikut adalah sebuah kalimat sebelum dilakukan tokenisasi :
Pierre Vinken , 61 years old , will join the board as a nonexecutive director Nov. 29 . Mr. Vinken is chairman of Elsevier N.V. , the Dutch publishing group .
Hasil tokenisasi dari kalimat tersebut adalah :
Pierre_NNP Vinken_NNP ,_, 61_CD years_NNS old_JJ ,_, will_MD join_VB the_DT board_NN as_IN a_DT nonexecutive_JJ director_NN Nov._NNP 29_CD ._.
Mr._NNP Vinken_NNP is_VBZ chairman_NN of_IN Elsevier_NNP N.V._NNP ,_, the_DT Dutch_NNP publishing_VBG group_NN
Untuk melakukan tokenisasi pada penelitian ini, model yang digunakan adalah pre-trained model yang telah disediakan oleh Apache OpenNLP. Pre-trained model adalah model yang telah dilakukan training sebelumnya sehingga telah siap untuk digunakan. Karena bahasa yang digunakan pada ulasan pelanggan pada Google Play merupakan Bahasa Inggris, yaitu bahasa yang sama digunakan oleh OpenNLP, maka tidak dibutuhkan training model baru. Sehingga, pre-trained model dari OpenNLP ini dapat digunakan secara langsung.
Sebagai uji coba untuk melakukan tokenisasi, maka data hasil melakukan segmentasi kalimat dapat disimpan terlebih dahulu ke dalam sebuah file dalam bentuk .txt. File tersebut lalu disimpan ke folder yang sesuai untuk melakukan tokenisasi. Selanjutnya, dapat dibuat sebuah program yang berfungsi untuk membaca teks tersebut. Lalu, dilakukan tokenisasi menggunakan pre-trained model yang telah disediakan oleh OpenNLP untuk tokenisasi, yaitu en-token.bin dengan melakukan load terhadap model tersebut ke program. Hasil dari tokenisasi tersebut dapat ditampilkan dan disimpan dalam bentuk Arraylist. Untuk lebih jelasnya, proses tokenisasi tersebut dapat dilihat sebagai berikut :
65 File coba = new File("C:\\Users\\Almira
F\\Documents\\NetBeansProjects\\NyobaNLP\\coba.txt"); BufferedReader read = new BufferedReader(new FileReader(file));
InputStream is = new FileInputStream("C:\\Users\\Almira F\\Documents\\NetBeansProjects\\NyobaNLP\\en-token.bin"); String tes = read.readLine();
TokenizerModel model1 = new TokenizerModel(is);
Tokenizer tokenizer = new TokenizerME(model1);
String tokens[] = tokenizer.tokenize(""+tes); System.out.println("Contoh Tokenisasi : ");
for (String a : tokens) System.out.println(a); is.close();
System.out.println("---"); Kode 4.2 Contoh Kode untuk Tokenisasi