OpenNLP - Tokenizasyon
Verilen cümleyi daha küçük parçalara (jetonlara) bölme süreci olarak bilinir tokenization. Genel olarak, verilen işlenmemiş metin bir dizi sınırlayıcıya (çoğunlukla beyaz boşluklar) dayalı olarak belirtilir.
Tokenizasyon, yazım denetimi, aramaları işleme, konuşma bölümlerini tanımlama, cümle algılama, belgelerin belge sınıflandırması vb. Gibi görevlerde kullanılır.
OpenNLP kullanarak kodlama
opennlp.tools.tokenize paketi, belirteçleştirmeyi gerçekleştirmek için kullanılan sınıfları ve arabirimleri içerir.
Verilen cümleleri daha basit parçalar halinde belirtmek için, OpenNLP kitaplığı üç farklı sınıf sağlar -
SimpleTokenizer - Bu sınıf, karakter sınıflarını kullanarak verilen ham metni belirteçler.
WhitespaceTokenizer - Bu sınıf, verilen metni belirtmek için beyaz boşlukları kullanır.
TokenizerME- Bu sınıf, ham metni ayrı belirteçlere dönüştürür. Kararlarını vermek için Maksimum Entropi kullanır.
SimpleTokenizer
Kullanarak bir cümleyi belirtmek için SimpleTokenizer sınıf, yapmanız gereken -
İlgili sınıfın bir nesnesini oluşturun.
Cümleyi kullanarak cümleyi şifreleyin tokenize() yöntem.
Jetonları yazdırın.
Verilen ham metni belirteçlere ayıran bir program yazmak için izlenecek adımlar aşağıdadır.
Step 1 - İlgili sınıfı örneklemek
Her iki sınıfta da, onları başlatacak yapıcılar yoktur. Bu nedenle, statik değişkeni kullanarak bu sınıfların nesnelerini oluşturmamız gerekir.INSTANCE.
SimpleTokenizer tokenizer = SimpleTokenizer.INSTANCE;
Step 2 - Cümleleri şifreleyin
Her iki sınıf da adında bir yöntem içerir tokenize(). Bu yöntem, String formatında bir ham metni kabul eder. Çağrıldığında, verilen String'i jetonlaştırır ve bir Dizeler (jeton) dizisi döndürür.
Cümleyi kullanarak cümleyi şifreleyin tokenizer() yöntemi aşağıda gösterildiği gibi.
//Tokenizing the given sentence
String tokens[] = tokenizer.tokenize(sentence);
Step 3 - Jetonları yazdırın
Cümleyi belirtdikten sonra, belirteçleri kullanarak yazdırabilirsiniz. for loop, Aşağıda gösterildiği gibi.
//Printing the tokens
for(String token : tokens)
System.out.println(token);
Example
Aşağıda verilen cümleyi SimpleTokenizer sınıfını kullanarak belirteç yapan program yer almaktadır. Bu programı adıyla bir dosyaya kaydedinSimpleTokenizerExample.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);
}
}
}
Kaydedilen Java dosyasını aşağıdaki komutları kullanarak Komut isteminden derleyin ve yürütün -
javac SimpleTokenizerExample.java
java SimpleTokenizerExample
Yürütüldüğünde, yukarıdaki program verilen String'i (ham metin) okur, onu tokenize eder ve aşağıdaki çıktıyı görüntüler -
Hi
.
How
are
you
?
Welcome
to
Tutorialspoint
.
We
provide
free
tutorials
on
various
technologies
WhitespaceTokenizer
Kullanarak bir cümleyi belirtmek için WhitespaceTokenizer sınıf, yapmanız gereken -
İlgili sınıfın bir nesnesini oluşturun.
Cümleyi kullanarak cümleyi şifreleyin tokenize() yöntem.
Jetonları yazdırın.
Verilen ham metni belirteçlere ayıran bir program yazmak için izlenecek adımlar aşağıdadır.
Step 1 - İlgili sınıfı örneklemek
Her iki sınıfta da, onları başlatacak yapıcılar yoktur. Bu nedenle, statik değişkeni kullanarak bu sınıfların nesnelerini oluşturmamız gerekir.INSTANCE.
WhitespaceTokenizer tokenizer = WhitespaceTokenizer.INSTANCE;
Step 2 - Cümleleri şifreleyin
Her iki sınıf da adında bir yöntem içerir tokenize(). Bu yöntem, String formatında bir ham metni kabul eder. Çağrıldığında, verilen String'i jetonlaştırır ve bir Dizeler (jeton) dizisi döndürür.
Cümleyi kullanarak cümleyi şifreleyin tokenizer() yöntemi aşağıda gösterildiği gibi.
//Tokenizing the given sentence
String tokens[] = tokenizer.tokenize(sentence);
Step 3 - Jetonları yazdırın
Cümleyi belirtdikten sonra, belirteçleri kullanarak yazdırabilirsiniz. for loop, Aşağıda gösterildiği gibi.
//Printing the tokens
for(String token : tokens)
System.out.println(token);
Example
Aşağıda, verilen cümleyi kullanarak jetonlaştıran programdır. WhitespaceTokenizersınıf. Bu programı adıyla bir dosyaya kaydedinWhitespaceTokenizerExample.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);
}
}
Kaydedilen Java dosyasını aşağıdaki komutları kullanarak Komut isteminden derleyin ve yürütün -
javac WhitespaceTokenizerExample.java
java WhitespaceTokenizerExample
Yürütüldüğünde, yukarıdaki program verilen String'i (ham metin) okur, onu tokenize eder ve aşağıdaki çıktıyı görüntüler.
Hi.
How
are
you?
Welcome
to
Tutorialspoint.
We
provide
free
tutorials
on
various
technologies
TokenizerME sınıfı
OpenNLP ayrıca cümleleri belirtmek için önceden tanımlanmış bir model, de-token.bin adlı bir dosya kullanır. Belirli bir ham metindeki cümleleri belirtmek için eğitilmiştir.
TokenizerME sınıfı opennlp.tools.tokenizerpaketi, bu modeli yüklemek ve verilen ham metni OpenNLP kitaplığını kullanarak belirtmek için kullanılır. Bunu yapmak için yapmanız gerekenler -
Yükle en-token.bin kullanarak model TokenizerModel sınıf.
Örnekleyin TokenizerME sınıf.
Cümleleri kullanarak şifreleyin tokenize() bu sınıfın yöntemi.
Aşağıdakiler, verilen ham metinden cümleleri kullanarak dizgeye ayıran bir program yazmak için izlenecek adımlardır. TokenizerME sınıf.
Step 1 - Modeli yükleme
Simgeleştirme modeli, adlı sınıf tarafından temsil edilir. TokenizerModelpakete ait olan opennlp.tools.tokenize.
Bir jetonlaştırıcı modeli yüklemek için -
Oluşturduğunuz bir InputStream modelin nesnesi (FileInputStream'i somutlaştırın ve modelin yolunu String biçiminde yapıcısına iletin).
Örnekleyin TokenizerModel sınıf ve geç InputStream (nesne) modelinin yapıcısına bir parametre olarak aşağıdaki kod bloğunda gösterildiği gibi.
//Loading the Tokenizer model
InputStream inputStream = new FileInputStream("C:/OpenNLP_models/en-token.bin");
TokenizerModel tokenModel = new TokenizerModel(inputStream);
Step 2 - TokenizerME sınıfını örnekleme
TokenizerME paketin sınıfı opennlp.tools.tokenizeişlenmemiş metni daha küçük parçalara (jetonlar) ayırmak için yöntemler içerir. Kararlarını vermek için Maksimum Entropi kullanır.
Bu sınıfı somutlaştırın ve önceki adımda oluşturulan model nesnesini aşağıda gösterildiği gibi iletin.
//Instantiating the TokenizerME class
TokenizerME tokenizer = new TokenizerME(tokenModel);
Step 3 - Cümlenin simge haline getirilmesi
tokenize() yöntemi TokenizerMEsınıfı, kendisine iletilen ham metni belirtmek için kullanılır. Bu yöntem bir String değişkenini parametre olarak kabul eder ve bir Dizeler (belirteçler) dizisi döndürür.
Aşağıdaki gibi, cümlenin String biçimini bu yönteme ileterek bu yöntemi çağırın.
//Tokenizing the given raw text
String tokens[] = tokenizer.tokenize(paragraph);
Example
Aşağıda verilen ham metni tokenize eden program yer almaktadır. Bu programı adıyla bir dosyaya kaydedinTokenizerMEExample.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);
}
}
Kaydedilen Java dosyasını aşağıdaki komutları kullanarak Komut isteminden derleyin ve yürütün -
javac TokenizerMEExample.java
java TokenizerMEExample
Yürütüldüğünde, yukarıdaki program verilen String'i okur ve içindeki cümleleri algılar ve aşağıdaki çıktıyı görüntüler -
Hi
.
How
are
you
?
Welcome
to
Tutorialspoint
.
We
provide
free
tutorials
on
various
technologie
Jetonların Konumlarını Geri Alma
Pozisyonları da alabiliriz veya spans token'ların tokenizePos()yöntem. Bu, paketin Tokenizer arayüzünün yöntemidiropennlp.tools.tokenize. Tüm (üç) Tokenizer sınıfı bu arayüzü uyguladığından, bu yöntemi hepsinde bulabilirsiniz.
Bu yöntem cümleyi veya ham metni bir dize biçiminde kabul eder ve türdeki nesnelerin bir dizisini döndürür Span.
Tokenların pozisyonlarını şurayı kullanarak alabilirsiniz: tokenizePos() yöntem, aşağıdaki gibi -
//Retrieving the tokens
tokenizer.tokenizePos(sentence);
Pozisyonları (aralıkları) yazdırma
Adlı sınıf Span of opennlp.tools.util paketi, kümelerin başlangıç ve bitiş tam sayılarını saklamak için kullanılır.
Tarafından döndürülen aralıkları saklayabilirsiniz. tokenizePos() yöntemini Span dizisine ekleyin ve aşağıdaki kod bloğunda gösterildiği gibi yazdırın.
//Retrieving the tokens
Span[] tokens = tokenizer.tokenizePos(sentence);
//Printing the spans of tokens
for( Span token : tokens)
System.out.println(token);
Jetonları ve konumlarını birlikte yazdırma
substring() String sınıfının yöntemi, begin ve endofsetler ve ilgili dizeyi döndürür. Bu yöntemi, aşağıdaki kod bloğunda gösterildiği gibi, jetonları ve bunların aralıklarını (konumlarını) birlikte yazdırmak için kullanabiliriz.
//Printing the spans of tokens
for(Span token : tokens)
System.out.println(token +" "+sent.substring(token.getStart(), token.getEnd()));
Example(SimpleTokenizer)
Aşağıda, ham metnin belirteç aralıklarını kullanarak SimpleTokenizersınıf. Ayrıca, jetonları konumlarıyla birlikte yazdırır. Bu programı isimli bir dosyaya kaydedin.SimpleTokenizerSpans.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()));
}
}
Kaydedilen Java dosyasını aşağıdaki komutları kullanarak Komut isteminden derleyin ve yürütün -
javac SimpleTokenizerSpans.java
java SimpleTokenizerSpans
Yürütüldüğünde, yukarıdaki program verilen String'i (ham metin) okur, onu tokenize eder ve aşağıdaki çıktıyı görüntüler -
[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)
Aşağıda, ham metnin belirteç aralıklarını kullanarak WhitespaceTokenizersınıf. Ayrıca, jetonları konumlarıyla birlikte yazdırır. Bu programı adıyla bir dosyaya kaydedinWhitespaceTokenizerSpans.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()));
}
}
Kaydedilen java dosyasını aşağıdaki komutları kullanarak komut isteminden derleyin ve yürütün
javac WhitespaceTokenizerSpans.java
java WhitespaceTokenizerSpans
Yürütüldüğünde, yukarıdaki program verilen String'i (ham metin) okur, onu tokenize eder ve aşağıdaki çıktıyı görüntüler.
[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)
Aşağıda, ham metnin belirteç aralıklarını kullanarak TokenizerMEsınıf. Ayrıca, jetonları konumlarıyla birlikte yazdırır. Bu programı adıyla bir dosyaya kaydedinTokenizerMESpans.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()));
}
}
Kaydedilen Java dosyasını aşağıdaki komutları kullanarak Komut isteminden derleyin ve yürütün -
javac TokenizerMESpans.java
java TokenizerMESpans
Yürütüldüğünde, yukarıdaki program verilen String'i (ham metin) okur, onu tokenize eder ve aşağıdaki çıktıyı görüntüler -
[0..5) Hello
[6..10) John
[11..14) how
[15..18) are
[19..22) you
[23..30) welcome
[31..33) to
[34..48) Tutorialspoint
Tokenizatör Olasılığı
TokenizerME sınıfının getTokenProbabilities () yöntemi, tokenizePos () yöntemine yapılan en son çağrılarla ilişkili olasılıkları almak için kullanılır.
//Getting the probabilities of the recent calls to tokenizePos() method
double[] probs = detector.getSentenceProbabilities();
Aşağıdaki program, tokenizePos () yöntemine yapılan çağrılarla ilişkili olasılıkları yazdırmaktır. Bu programı adıyla bir dosyaya kaydedinTokenizerMEProbs.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]);
}
}
Kaydedilen Java dosyasını aşağıdaki komutları kullanarak Komut isteminden derleyin ve yürütün -
javac TokenizerMEProbs.java
java TokenizerMEProbs
Yürütüldüğünde, yukarıdaki program verilen dizgeyi okur ve cümleleri belirtip, yazdırır. Ek olarak, tokenizerPos () yöntemine yapılan en son çağrılarla ilişkili olasılıkları da döndürür.
[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