Круглая скоба в OpenNLP Tokenizer
Я использую OpenNLP Java для преобразования строк в токены. Тем не менее, я считаю, что круглая скобка не может быть идентифицирована должным образом.
Код, который я использую: `
InputStream is = new FileInputStream("en-token.bin");
TokenizerModel model = new TokenizerModel(is);
Tokenizer tokenizer = new TokenizerME(model);
String tokens[] = tokenizer.tokenize("the string");`
Например, строка "люди, подобные мне, отключают новости". Вывод таков:
people
like
me
(are
)
turning
off
the
news
Левая круглая скобка "есть" не была идентифицирована. Также, например, "401(k)" преобразуется в "401(k" и ")".
Я также попробовал класс "SimpleTokenizer". Он может разделять квадратные скобки, а также разделять "переднюю страницу" на "переднюю" и "страницу", что не нужно.
Мне интересно, есть ли какое-нибудь решение?
Благодарю.
1 ответ
Посмотрите на эту статью
Это решило проблему: нестандартное предложение заканчивается (круглые скобки)
что означает, что здесь требуется какая-то предварительная обработка!
и решение дано здесь
то, что он в основном сделал, это заключил в скобки и скобки, поставив пробел с обеих сторон, как это:
sent = untokenizedParenPattern1.matcher(sent).replaceAll("$1 $2");
sent = untokenizedParenPattern2.matcher(sent).replaceAll("$1 $2");
Это не единственный способ поместить пространство по обе стороны от скобок, но выполнение этой предварительной обработки поможет вам получить желаемый результат!
Делитесь, если ваша проблема решена, надеюсь, это поможет!