OpenNLP - Tokenisasi
Proses memotong kalimat yang diberikan menjadi bagian-bagian yang lebih kecil (token) dikenal sebagai tokenization. Secara umum, teks mentah yang diberikan diberi token berdasarkan sekumpulan pembatas (kebanyakan spasi).
Tokenisasi digunakan dalam tugas-tugas seperti pemeriksaan ejaan, pemrosesan pencarian, mengidentifikasi jenis kata, deteksi kalimat, klasifikasi dokumen dokumen, dll.
Tokenisasi menggunakan OpenNLP
Itu opennlp.tools.tokenize paket berisi kelas dan antarmuka yang digunakan untuk melakukan tokenisasi.
Untuk membuat token kalimat yang diberikan menjadi fragmen yang lebih sederhana, pustaka OpenNLP menyediakan tiga kelas berbeda -
SimpleTokenizer - Kelas ini memberi tokenize teks mentah yang diberikan menggunakan kelas karakter.
WhitespaceTokenizer - Kelas ini menggunakan spasi putih untuk memberi token pada teks yang diberikan.
TokenizerME- Kelas ini mengubah teks mentah menjadi token terpisah. Ia menggunakan Entropi Maksimum untuk membuat keputusannya.
SimpleTokenizer
Untuk memberi token pada kalimat menggunakan SimpleTokenizer kelas, Anda perlu -
Buat objek dari kelas masing-masing.
Tokenkan kalimat menggunakan tokenize() metode.
Cetak token.
Berikut adalah langkah-langkah yang harus diikuti untuk menulis program yang memberi token pada teks mentah yang diberikan.
Step 1 - Instansiasi kelas masing-masing
Di kedua kelas, tidak ada konstruktor yang tersedia untuk membuat instance-nya. Oleh karena itu, kita perlu membuat objek dari kelas-kelas ini menggunakan variabel statisINSTANCE.
SimpleTokenizer tokenizer = SimpleTokenizer.INSTANCE;
Step 2 - Tokenkan kalimatnya
Kedua kelas ini berisi metode yang disebut tokenize(). Metode ini menerima teks mentah dalam format String. Saat dipanggil, ini memberi token pada String yang diberikan dan mengembalikan array Strings (token).
Tokenkan kalimat menggunakan tokenizer() metode seperti yang ditunjukkan di bawah ini.
//Tokenizing the given sentence
String tokens[] = tokenizer.tokenize(sentence);
Step 3 - Cetak tokennya
Setelah mentokenisasi kalimat, Anda dapat mencetak token menggunakan for loop, seperti yang ditunjukkan di bawah ini.
//Printing the tokens
for(String token : tokens)
System.out.println(token);
Example
Berikut adalah program yang memberi token pada kalimat yang diberikan menggunakan kelas SimpleTokenizer. Simpan program ini dalam sebuah file dengan namaSimpleTokenizerExample.java.
import opennlp.tools.tokenize.SimpleTokenizer;
public class SimpleTokenizerExample {
public static void main(String args[]){
String sentence = "Hi. How are you? Welcome to Tutorialspoint. "
+ "We provide free tutorials on various technologies";
//Instantiating SimpleTokenizer class
SimpleTokenizer simpleTokenizer = SimpleTokenizer.INSTANCE;
//Tokenizing the given sentence
String tokens[] = simpleTokenizer.tokenize(sentence);
//Printing the tokens
for(String token : tokens) {
System.out.println(token);
}
}
}
Kompilasi dan jalankan file Java yang disimpan dari Command prompt menggunakan perintah berikut -
javac SimpleTokenizerExample.java
java SimpleTokenizerExample
Saat menjalankan, program di atas membaca String yang diberikan (teks mentah), memberi tokenize, dan menampilkan output berikut -
Hi
.
How
are
you
?
Welcome
to
Tutorialspoint
.
We
provide
free
tutorials
on
various
technologies
WhitespaceTokenizer
Untuk memberi token pada kalimat menggunakan WhitespaceTokenizer kelas, Anda perlu -
Buat objek dari kelas masing-masing.
Tokenkan kalimat menggunakan tokenize() metode.
Cetak token.
Berikut adalah langkah-langkah yang harus diikuti untuk menulis program yang memberi token pada teks mentah yang diberikan.
Step 1 - Instansiasi kelas masing-masing
Di kedua kelas, tidak ada konstruktor yang tersedia untuk membuat instance-nya. Oleh karena itu, kita perlu membuat objek dari kelas-kelas ini menggunakan variabel statisINSTANCE.
WhitespaceTokenizer tokenizer = WhitespaceTokenizer.INSTANCE;
Step 2 - Tokenkan kalimatnya
Kedua kelas ini berisi metode yang disebut tokenize(). Metode ini menerima teks mentah dalam format String. Saat dipanggil, ini memberi token pada String yang diberikan dan mengembalikan array Strings (token).
Tokenkan kalimat menggunakan tokenizer() metode seperti yang ditunjukkan di bawah ini.
//Tokenizing the given sentence
String tokens[] = tokenizer.tokenize(sentence);
Step 3 - Cetak tokennya
Setelah mentokenisasi kalimat, Anda dapat mencetak token menggunakan for loop, seperti yang ditunjukkan di bawah ini.
//Printing the tokens
for(String token : tokens)
System.out.println(token);
Example
Berikut adalah program yang memberi token pada kalimat yang diberikan menggunakan WhitespaceTokenizerkelas. Simpan program ini dalam sebuah file dengan namaWhitespaceTokenizerExample.java.
import opennlp.tools.tokenize.WhitespaceTokenizer;
public class WhitespaceTokenizerExample {
public static void main(String args[]){
String sentence = "Hi. How are you? Welcome to Tutorialspoint. "
+ "We provide free tutorials on various technologies";
//Instantiating whitespaceTokenizer class
WhitespaceTokenizer whitespaceTokenizer = WhitespaceTokenizer.INSTANCE;
//Tokenizing the given paragraph
String tokens[] = whitespaceTokenizer.tokenize(sentence);
//Printing the tokens
for(String token : tokens)
System.out.println(token);
}
}
Kompilasi dan jalankan file Java yang disimpan dari Command prompt menggunakan perintah berikut -
javac WhitespaceTokenizerExample.java
java WhitespaceTokenizerExample
Saat menjalankan, program di atas membaca String yang diberikan (teks mentah), memberi tokenize, dan menampilkan output berikut.
Hi.
How
are
you?
Welcome
to
Tutorialspoint.
We
provide
free
tutorials
on
various
technologies
Kelas TokenizerME
OpenNLP juga menggunakan model yang telah ditentukan, file bernama de-token.bin, untuk membuat token kalimat. Ia dilatih untuk membuat token kalimat dalam teks mentah tertentu.
Itu TokenizerME kelas dari opennlp.tools.tokenizerpaket digunakan untuk memuat model ini, dan membuat token teks mentah yang diberikan menggunakan pustaka OpenNLP. Untuk melakukannya, Anda perlu -
Muat file en-token.bin model menggunakan TokenizerModel kelas.
Instantiate TokenizerME kelas.
Tokenkan kalimat menggunakan tokenize() metode kelas ini.
Berikut adalah langkah-langkah yang harus diikuti untuk menulis program yang mentokenisasi kalimat dari teks mentah yang diberikan menggunakan TokenizerME kelas.
Step 1 - Memuat model
Model tokenisasi diwakili oleh kelas bernama TokenizerModel, yang termasuk dalam paket opennlp.tools.tokenize.
Untuk memuat model tokenizer -
Buat InputStream objek model (Membuat Instansiasi FileInputStream dan meneruskan jalur model dalam format String ke konstruktornya).
Instantiate TokenizerModel kelas dan lulus InputStream (objek) model sebagai parameter untuk konstruktornya, seperti yang ditunjukkan pada blok kode berikut.
//Loading the Tokenizer model
InputStream inputStream = new FileInputStream("C:/OpenNLP_models/en-token.bin");
TokenizerModel tokenModel = new TokenizerModel(inputStream);
Step 2 - Membuat instance kelas TokenizerME
Itu TokenizerME kelas paket opennlp.tools.tokenizeberisi metode untuk memotong teks mentah menjadi bagian-bagian yang lebih kecil (token). Ia menggunakan Entropi Maksimum untuk membuat keputusannya.
Buat instance kelas ini dan teruskan objek model yang dibuat pada langkah sebelumnya seperti yang ditunjukkan di bawah ini.
//Instantiating the TokenizerME class
TokenizerME tokenizer = new TokenizerME(tokenModel);
Step 3 - Tokenisasi kalimat
Itu tokenize() metode dari TokenizerMEclass digunakan untuk memberi token pada teks mentah yang diteruskan padanya. Metode ini menerima variabel String sebagai parameter, dan mengembalikan larik Strings (token).
Panggil metode ini dengan meneruskan format String dari kalimat ke metode ini, sebagai berikut.
//Tokenizing the given raw text
String tokens[] = tokenizer.tokenize(paragraph);
Example
Berikut adalah program yang memberi token pada teks mentah yang diberikan. Simpan program ini dalam sebuah file dengan namaTokenizerMEExample.java.
import java.io.FileInputStream;
import java.io.InputStream;
import opennlp.tools.tokenize.TokenizerME;
import opennlp.tools.tokenize.TokenizerModel;
public class TokenizerMEExample {
public static void main(String args[]) throws Exception{
String sentence = "Hi. How are you? Welcome to Tutorialspoint. "
+ "We provide free tutorials on various technologies";
//Loading the Tokenizer model
InputStream inputStream = new FileInputStream("C:/OpenNLP_models/en-token.bin");
TokenizerModel tokenModel = new TokenizerModel(inputStream);
//Instantiating the TokenizerME class
TokenizerME tokenizer = new TokenizerME(tokenModel);
//Tokenizing the given raw text
String tokens[] = tokenizer.tokenize(sentence);
//Printing the tokens
for (String a : tokens)
System.out.println(a);
}
}
Kompilasi dan jalankan file Java yang disimpan dari Command prompt menggunakan perintah berikut -
javac TokenizerMEExample.java
java TokenizerMEExample
Saat menjalankan, program di atas membaca String yang diberikan dan mendeteksi kalimat di dalamnya dan menampilkan output berikut -
Hi
.
How
are
you
?
Welcome
to
Tutorialspoint
.
We
provide
free
tutorials
on
various
technologie
Mengambil Posisi Token
Kami juga bisa mendapatkan posisi atau spans token yang menggunakan tokenizePos()metode. Ini adalah metode antarmuka Tokenizer dari paket tersebutopennlp.tools.tokenize. Karena semua (tiga) kelas Tokenizer menerapkan antarmuka ini, Anda dapat menemukan metode ini di semuanya.
Metode ini menerima kalimat atau teks mentah dalam bentuk string dan mengembalikan larik objek bertipe Span.
Anda bisa mendapatkan posisi token menggunakan tokenizePos() metode, sebagai berikut -
//Retrieving the tokens
tokenizer.tokenizePos(sentence);
Mencetak posisi (bentang)
Kelas bernama Span dari opennlp.tools.util paket digunakan untuk menyimpan bilangan bulat awal dan akhir dari set.
Anda dapat menyimpan durasi yang dikembalikan oleh tokenizePos() metode dalam array Span dan mencetaknya, seperti yang ditunjukkan pada blok kode berikut.
//Retrieving the tokens
Span[] tokens = tokenizer.tokenizePos(sentence);
//Printing the spans of tokens
for( Span token : tokens)
System.out.println(token);
Mencetak token dan posisinya bersamaan
Itu substring() metode kelas String menerima begin dan endmengimbangi dan mengembalikan string masing-masing. Kita dapat menggunakan metode ini untuk mencetak token dan span (posisinya) bersama-sama, seperti yang ditunjukkan pada blok kode berikut.
//Printing the spans of tokens
for(Span token : tokens)
System.out.println(token +" "+sent.substring(token.getStart(), token.getEnd()));
Example(SimpleTokenizer)
Berikut ini adalah program yang mengambil rentang token dari teks mentah menggunakan SimpleTokenizerkelas. Itu juga mencetak token bersama dengan posisinya. Simpan program ini dalam file dengan namaSimpleTokenizerSpans.java.
import opennlp.tools.tokenize.SimpleTokenizer;
import opennlp.tools.util.Span;
public class SimpleTokenizerSpans {
public static void main(String args[]){
String sent = "Hi. How are you? Welcome to Tutorialspoint. "
+ "We provide free tutorials on various technologies";
//Instantiating SimpleTokenizer class
SimpleTokenizer simpleTokenizer = SimpleTokenizer.INSTANCE;
//Retrieving the boundaries of the tokens
Span[] tokens = simpleTokenizer.tokenizePos(sent);
//Printing the spans of tokens
for( Span token : tokens)
System.out.println(token +" "+sent.substring(token.getStart(), token.getEnd()));
}
}
Kompilasi dan jalankan file Java yang disimpan dari Command prompt menggunakan perintah berikut -
javac SimpleTokenizerSpans.java
java SimpleTokenizerSpans
Saat menjalankan, program di atas membaca String yang diberikan (teks mentah), memberi tokenize, dan menampilkan output berikut -
[0..2) Hi
[2..3) .
[4..7) How
[8..11) are
[12..15) you
[15..16) ?
[17..24) Welcome
[25..27) to
[28..42) Tutorialspoint
[42..43) .
[44..46) We
[47..54) provide
[55..59) free
[60..69) tutorials
[70..72) on
[73..80) various
[81..93) technologies
Example (WhitespaceTokenizer)
Berikut ini adalah program yang mengambil rentang token dari teks mentah menggunakan WhitespaceTokenizerkelas. Itu juga mencetak token bersama dengan posisinya. Simpan program ini dalam sebuah file dengan namaWhitespaceTokenizerSpans.java.
import opennlp.tools.tokenize.WhitespaceTokenizer;
import opennlp.tools.util.Span;
public class WhitespaceTokenizerSpans {
public static void main(String args[]){
String sent = "Hi. How are you? Welcome to Tutorialspoint. "
+ "We provide free tutorials on various technologies";
//Instantiating SimpleTokenizer class
WhitespaceTokenizer whitespaceTokenizer = WhitespaceTokenizer.INSTANCE;
//Retrieving the tokens
Span[] tokens = whitespaceTokenizer.tokenizePos(sent);
//Printing the spans of tokens
for( Span token : tokens)
System.out.println(token +"
"+sent.substring(token.getStart(), token.getEnd()));
}
}
Kompilasi dan jalankan file java yang disimpan dari command prompt menggunakan perintah berikut
javac WhitespaceTokenizerSpans.java
java WhitespaceTokenizerSpans
Saat menjalankan, program di atas membaca String yang diberikan (teks mentah), memberi tokenize, dan menampilkan output berikut.
[0..3) Hi.
[4..7) How
[8..11) are
[12..16) you?
[17..24) Welcome
[25..27) to
[28..43) Tutorialspoint.
[44..46) We
[47..54) provide
[55..59) free
[60..69) tutorials
[70..72) on
[73..80) various
[81..93) technologies
Example (TokenizerME)
Berikut ini adalah program yang mengambil rentang token dari teks mentah menggunakan TokenizerMEkelas. Itu juga mencetak token bersama dengan posisinya. Simpan program ini dalam sebuah file dengan namaTokenizerMESpans.java.
import java.io.FileInputStream;
import java.io.InputStream;
import opennlp.tools.tokenize.TokenizerME;
import opennlp.tools.tokenize.TokenizerModel;
import opennlp.tools.util.Span;
public class TokenizerMESpans {
public static void main(String args[]) throws Exception{
String sent = "Hello John how are you welcome to Tutorialspoint";
//Loading the Tokenizer model
InputStream inputStream = new FileInputStream("C:/OpenNLP_models/en-token.bin");
TokenizerModel tokenModel = new TokenizerModel(inputStream);
//Instantiating the TokenizerME class
TokenizerME tokenizer = new TokenizerME(tokenModel);
//Retrieving the positions of the tokens
Span tokens[] = tokenizer.tokenizePos(sent);
//Printing the spans of tokens
for(Span token : tokens)
System.out.println(token +" "+sent.substring(token.getStart(), token.getEnd()));
}
}
Kompilasi dan jalankan file Java yang disimpan dari Command prompt menggunakan perintah berikut -
javac TokenizerMESpans.java
java TokenizerMESpans
Saat menjalankan, program di atas membaca String yang diberikan (teks mentah), memberi tokenize, dan menampilkan output berikut -
[0..5) Hello
[6..10) John
[11..14) how
[15..18) are
[19..22) you
[23..30) welcome
[31..33) to
[34..48) Tutorialspoint
Kemungkinan Tokenizer
Metode getTokenProbabilities () dari kelas TokenizerME digunakan untuk mendapatkan probabilitas yang terkait dengan panggilan terbaru ke metode tokenizePos ().
//Getting the probabilities of the recent calls to tokenizePos() method
double[] probs = detector.getSentenceProbabilities();
Berikut ini adalah program untuk mencetak probabilitas yang terkait dengan panggilan ke metode tokenizePos (). Simpan program ini dalam sebuah file dengan namaTokenizerMEProbs.java.
import java.io.FileInputStream;
import java.io.InputStream;
import opennlp.tools.tokenize.TokenizerME;
import opennlp.tools.tokenize.TokenizerModel;
import opennlp.tools.util.Span;
public class TokenizerMEProbs {
public static void main(String args[]) throws Exception{
String sent = "Hello John how are you welcome to Tutorialspoint";
//Loading the Tokenizer model
InputStream inputStream = new FileInputStream("C:/OpenNLP_models/en-token.bin");
TokenizerModel tokenModel = new TokenizerModel(inputStream);
//Instantiating the TokenizerME class
TokenizerME tokenizer = new TokenizerME(tokenModel);
//Retrieving the positions of the tokens
Span tokens[] = tokenizer.tokenizePos(sent);
//Getting the probabilities of the recent calls to tokenizePos() method
double[] probs = tokenizer.getTokenProbabilities();
//Printing the spans of tokens
for(Span token : tokens)
System.out.println(token +" "+sent.substring(token.getStart(), token.getEnd()));
System.out.println(" ");
for(int i = 0; i<probs.length; i++)
System.out.println(probs[i]);
}
}
Kompilasi dan jalankan file Java yang disimpan dari Command prompt menggunakan perintah berikut -
javac TokenizerMEProbs.java
java TokenizerMEProbs
Saat mengeksekusi, program di atas membaca String yang diberikan dan memberi token pada kalimat dan mencetaknya. Selain itu, ini juga mengembalikan probabilitas yang terkait dengan panggilan terbaru ke metode tokenizerPos ().
[0..5) Hello
[6..10) John
[11..14) how
[15..18) are
[19..22) you
[23..30) welcome
[31..33) to
[34..48) Tutorialspoint
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0