Процесс разбиения данного предложения на более мелкие части (токены) известен как токенизация . В общем, данный необработанный текст маркируется на основе набора разделителей (в основном, пробелов).
Токенизация используется в таких задачах, как проверка орфографии, обработка запросов, определение частей речи, обнаружение предложений, классификация документов и т. Д.
Токенизация с использованием OpenNLP
Пакет opennlp.tools.tokenize содержит классы и интерфейсы, которые используются для выполнения токенизации.
Чтобы разбить данные предложения на более простые фрагменты, библиотека OpenNLP предоставляет три разных класса:
-
SimpleTokenizer — этот класс маркирует заданный необработанный текст с использованием классов символов.
-
WhitespaceTokenizer — этот класс использует пробелы для токенизации заданного текста.
-
TokenizerME — этот класс преобразует необработанный текст в отдельные токены. Он использует максимальную энтропию для принятия своих решений.
SimpleTokenizer — этот класс маркирует заданный необработанный текст с использованием классов символов.
WhitespaceTokenizer — этот класс использует пробелы для токенизации заданного текста.
TokenizerME — этот класс преобразует необработанный текст в отдельные токены. Он использует максимальную энтропию для принятия своих решений.
SimpleTokenizer
Чтобы токенизировать предложение с помощью класса SimpleTokenizer , вам необходимо:
-
Создайте объект соответствующего класса.
-
Токенизируйте предложение, используя метод tokenize () .
-
Распечатайте жетоны.
Создайте объект соответствующего класса.
Токенизируйте предложение, используя метод tokenize () .
Распечатайте жетоны.
Ниже приведены шаги, которые необходимо выполнить, чтобы написать программу, которая использует токен для данного необработанного текста.
Шаг 1 — Создание соответствующего класса
В обоих классах нет доступных конструкторов для их создания. Поэтому нам нужно создавать объекты этих классов, используя статическую переменную INSTANCE .
SimpleTokenizer tokenizer = SimpleTokenizer.INSTANCE;
Шаг 2 — Токенизация предложений
Оба этих класса содержат метод tokenize () . Этот метод принимает необработанный текст в формате String. При вызове он маркирует данную строку и возвращает массив строк (токенов).
Токенизируйте предложение, используя метод tokenizer (), как показано ниже.
//Tokenizing the given sentence String tokens[] = tokenizer.tokenize(sentence);
Шаг 3 — Распечатать токены
После токенизации предложения вы можете распечатать токены, используя цикл for , как показано ниже.
//Printing the tokens for(String token : tokens) System.out.println(token);
пример
Ниже приведена программа, которая токенизирует данное предложение с использованием класса SimpleTokenizer. Сохраните эту программу в файле с именем SimpleTokenizerExample.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); } } }
Скомпилируйте и выполните сохраненный файл Java из командной строки, используя следующие команды:
javac SimpleTokenizerExample.java java SimpleTokenizerExample
При выполнении вышеупомянутая программа читает данную строку (необработанный текст), токенизирует ее и отображает следующий вывод:
Hi . How are you ? Welcome to Tutorialspoint . We provide free tutorials on various technologies
WhitespaceTokenizer
Чтобы токенизировать предложение с помощью класса WhitespaceTokenizer, вам необходимо:
-
Создайте объект соответствующего класса.
-
Токенизируйте предложение, используя метод tokenize () .
-
Распечатайте жетоны.
Создайте объект соответствующего класса.
Токенизируйте предложение, используя метод tokenize () .
Распечатайте жетоны.
Ниже приведены шаги, которые необходимо выполнить, чтобы написать программу, которая использует токен для данного необработанного текста.
Шаг 1 — Создание соответствующего класса
В обоих классах нет доступных конструкторов для их создания. Поэтому нам нужно создавать объекты этих классов, используя статическую переменную INSTANCE .
WhitespaceTokenizer tokenizer = WhitespaceTokenizer.INSTANCE;
Шаг 2 — Токенизация предложений
Оба этих класса содержат метод tokenize () . Этот метод принимает необработанный текст в формате String. При вызове он маркирует данную строку и возвращает массив строк (токенов).
Токенизируйте предложение, используя метод tokenizer (), как показано ниже.
//Tokenizing the given sentence String tokens[] = tokenizer.tokenize(sentence);
Шаг 3 — Распечатать токены
После токенизации предложения вы можете распечатать токены, используя цикл for , как показано ниже.
//Printing the tokens for(String token : tokens) System.out.println(token);
пример
Ниже приведена программа, которая токенизирует данное предложение с использованием класса WhitespaceTokenizer. Сохраните эту программу в файле с именем WhitespaceTokenizerExample.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); } }
Скомпилируйте и выполните сохраненный файл Java из командной строки, используя следующие команды:
javac WhitespaceTokenizerExample.java java WhitespaceTokenizerExample
При выполнении вышеупомянутая программа считывает данную строку (необработанный текст), маркирует ее и отображает следующий вывод.
Hi. How are you? Welcome to Tutorialspoint. We provide free tutorials on various technologies
TokenizerME класс
OpenNLP также использует предопределенную модель, файл с именем de-token.bin, для токенизации предложений. Он обучен токенизации предложений в заданном необработанном тексте.
Класс TokenizerME пакета opennlp.tools.tokenizer используется для загрузки этой модели и токенизации заданного необработанного текста с использованием библиотеки OpenNLP. Для этого вам нужно —
-
Загрузите модель en-token.bin, используя класс TokenizerModel .
-
Создайте класс TokenizerME .
-
Токенизируйте предложения, используя метод tokenize () этого класса.
Загрузите модель en-token.bin, используя класс TokenizerModel .
Создайте класс TokenizerME .
Токенизируйте предложения, используя метод tokenize () этого класса.
Ниже приведены шаги, которые необходимо выполнить для написания программы, которая токенизирует предложения из заданного необработанного текста с использованием класса TokenizerME .
Шаг 1 — Загрузка модели
Модель для токенизации представлена классом с именем TokenizerModel , который принадлежит пакету opennlp.tools.tokenize .
Чтобы загрузить модель токенизатора —
-
Создайте объект InputStream модели (создайте экземпляр FileInputStream и передайте путь модели в формате String ее конструктору).
-
Создайте экземпляр класса TokenizerModel и передайте InputStream (объект) модели в качестве параметра ее конструктору, как показано в следующем блоке кода.
Создайте объект InputStream модели (создайте экземпляр FileInputStream и передайте путь модели в формате String ее конструктору).
Создайте экземпляр класса TokenizerModel и передайте InputStream (объект) модели в качестве параметра ее конструктору, как показано в следующем блоке кода.
//Loading the Tokenizer model InputStream inputStream = new FileInputStream("C:/OpenNLP_models/en-token.bin"); TokenizerModel tokenModel = new TokenizerModel(inputStream);
Шаг 2 — Создание класса TokenizerME
Класс TokenizerME пакета opennlp.tools.tokenize содержит методы для разбиения необработанного текста на более мелкие части (токены). Он использует максимальную энтропию для принятия своих решений.
Создайте экземпляр этого класса и передайте объект модели, созданный на предыдущем шаге, как показано ниже.
//Instantiating the TokenizerME class TokenizerME tokenizer = new TokenizerME(tokenModel);
Шаг 3 — Токенизация предложения
Метод tokenize () класса TokenizerME используется для токенизации необработанного текста, передаваемого ему. Этот метод принимает переменную String в качестве параметра и возвращает массив строк (токенов).
Вызовите этот метод, передав формат строки предложения этому методу следующим образом.
//Tokenizing the given raw text String tokens[] = tokenizer.tokenize(paragraph);
пример
Ниже приведена программа, которая токенизирует данный необработанный текст. Сохраните эту программу в файле с именем TokenizerMEExample.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); } }
Скомпилируйте и выполните сохраненный файл Java из командной строки, используя следующие команды:
javac TokenizerMEExample.java java TokenizerMEExample
При выполнении вышеупомянутая программа читает данную строку и обнаруживает предложения в ней и отображает следующий вывод:
Hi . How are you ? Welcome to Tutorialspoint . We provide free tutorials on various technologie
Получение позиций токенов
Мы также можем получить позиции или диапазоны токенов, используя метод tokenizePos () . Это метод интерфейса Tokenizer пакета opennlp.tools.tokenize . Поскольку все (три) класса Tokenizer реализуют этот интерфейс, вы можете найти этот метод во всех них.
Этот метод принимает предложение или необработанный текст в виде строки и возвращает массив объектов типа Span .
Вы можете получить позиции токенов, используя метод tokenizePos () , как показано ниже:
//Retrieving the tokens tokenizer.tokenizePos(sentence);
Печать позиций (пролетов)
Класс с именем Span пакета opennlp.tools.util используется для хранения начального и конечного целого числа наборов.
Вы можете сохранить диапазоны, возвращаемые методом tokenizePos (), в массиве Span и распечатать их, как показано в следующем блоке кода.
//Retrieving the tokens Span[] tokens = tokenizer.tokenizePos(sentence); //Printing the spans of tokens for( Span token : tokens) System.out.println(token);
Печать токенов и их позиций вместе
Метод substring () класса String принимает смещения начала и конца и возвращает соответствующую строку. Мы можем использовать этот метод для печати токенов и их диапазонов (позиций) вместе, как показано в следующем блоке кода.
//Printing the spans of tokens for(Span token : tokens) System.out.println(token +" "+sent.substring(token.getStart(), token.getEnd()));
Пример (SimpleTokenizer)
Ниже приведена программа, которая извлекает области маркеров необработанного текста с использованием класса SimpleTokenizer . Он также печатает токены вместе с их позициями. Сохраните эту программу в файле с именем 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())); } }
Скомпилируйте и выполните сохраненный файл Java из командной строки, используя следующие команды:
javac SimpleTokenizerSpans.java java SimpleTokenizerSpans
При выполнении вышеупомянутая программа читает данную строку (необработанный текст), токенизирует ее и отображает следующий вывод:
[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
Пример (WhitespaceTokenizer)
Ниже приведена программа, которая извлекает области маркеров необработанного текста с использованием класса WhitespaceTokenizer . Он также печатает токены вместе с их позициями. Сохраните эту программу в файле с именем WhitespaceTokenizerSpans.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())); } }
Скомпилируйте и выполните сохраненный файл Java из командной строки, используя следующие команды
javac WhitespaceTokenizerSpans.java java WhitespaceTokenizerSpans
При выполнении вышеупомянутая программа считывает данную строку (необработанный текст), маркирует ее и отображает следующий вывод.
[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
Пример (TokenizerME)
Ниже приведена программа, которая извлекает области маркеров необработанного текста с использованием класса TokenizerME . Он также печатает токены вместе с их позициями. Сохраните эту программу в файле с именем TokenizerMESpans.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())); } }
Скомпилируйте и выполните сохраненный файл Java из командной строки, используя следующие команды:
javac TokenizerMESpans.java java TokenizerMESpans
При выполнении вышеупомянутая программа читает данную строку (необработанный текст), токенизирует ее и отображает следующий вывод:
[0..5) Hello [6..10) John [11..14) how [15..18) are [19..22) you [23..30) welcome [31..33) to [34..48) Tutorialspoint
Вероятность токенизатора
Метод getTokenProbabilities () класса TokenizerME используется для получения вероятностей, связанных с самыми последними вызовами метода tokenizePos ().
//Getting the probabilities of the recent calls to tokenizePos() method double[] probs = detector.getSentenceProbabilities();
Ниже приведена программа для печати вероятностей, связанных с вызовами метода tokenizePos (). Сохраните эту программу в файле с именем TokenizerMEProbs.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]); } }
Скомпилируйте и выполните сохраненный файл Java из командной строки, используя следующие команды:
javac TokenizerMEProbs.java java TokenizerMEProbs
При выполнении вышеупомянутая программа читает заданную строку и маркирует предложения и печатает их. Кроме того, он также возвращает вероятности, связанные с самыми последними вызовами метода tokenizerPos ().