【问题标题】:Round bracket in OpenNLP TokenizerOpenNLP Tokenizer 中的圆括号
【发布时间】:2016-07-12 20:39:04
【问题描述】:

我正在使用 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

“are”的左圆括号未识别。此外,例如,“401(k)”被转换为“401(k”和“)”。

我也试过“SimpleTokenizer”类。它可以分隔括号,但也可以将“首页”与“前”和“页面”分开,这不是我想要的。

请问有什么解决办法吗?

谢谢。

【问题讨论】:

    标签: java tokenize opennlp


    【解决方案1】:

    看看this article

    解决了这个问题:非标准句尾(括号)

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

    并给出解决方案here

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

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

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

    如果您的问题解决了,请分享,希望对您有所帮助!

    【讨论】:

      猜你喜欢
      • 2015-01-13
      • 2016-10-16
      • 1970-01-01
      • 1970-01-01
      • 2018-12-19
      • 1970-01-01
      • 1970-01-01
      • 2016-11-07
      • 2021-01-11
      相关资源
      最近更新 更多