Круглая скоба в 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");

Это не единственный способ поместить пространство по обе стороны от скобок, но выполнение этой предварительной обработки поможет вам получить желаемый результат!

Делитесь, если ваша проблема решена, надеюсь, это поможет!

Другие вопросы по тегам