OpenNLP Tokenizer中的圆括号

时间:2016-07-12 20:39:04

标签: java tokenize opennlp

我正在使用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 个答案:

答案 0 :(得分:2)

查看this article

它解决了这个问题:非标准句子结束(括号)

这意味着这里需要某种 预处理

并给出解决方案here

他基本上做的是通过在左侧放置一个空格来标记括号和括号,如下所示:

sent = untokenizedParenPattern1.matcher(sent).replaceAll("$1 $2");
sent = untokenizedParenPattern2.matcher(sent).replaceAll("$1 $2");

这不是在括号的两侧放置空间的唯一方法,但进行此预处理可帮助您获得所需的输出!

如果您的问题得到解决,请分享,希望这有帮助!