我正在使用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"类。它可以分开括号,但也可以分开"前页"到"前面"和"页面"这不是我想要的。
我想知道是否有任何解决方案?
感谢。
答案 0 :(得分:2)
它解决了这个问题:非标准句子结束(括号)
这意味着这里需要某种 预处理 !
并给出解决方案here
他基本上做的是通过在左侧放置一个空格来标记括号和括号,如下所示:
sent = untokenizedParenPattern1.matcher(sent).replaceAll("$1 $2");
sent = untokenizedParenPattern2.matcher(sent).replaceAll("$1 $2");
这不是在括号的两侧放置空间的唯一方法,但进行此预处理可帮助您获得所需的输出!
如果您的问题得到解决,请分享,希望这有帮助!