我正在使用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");`
例如,字符串是“像我这样的人正在关闭新闻”。结果是:像我这样的人正在关闭新闻
未识别“are”的左侧圆括号。此外,例如,“401(k)”转换为“401(k”和“)”。
我还尝试了“SimpleTokenizer”课程。它可以把括号分开,但也可以把“头版”和“头版”分开,这不是我想要的。
我想知道是否有解决办法?
谢谢。
看看这篇文章
它解决了这个问题:非标准的句子结尾(括号)
这意味着这里需要某种预处理!
这里给出了解决方案
他基本上是通过在括号和圆括号的两边加一个空格来标记括号和圆括号,如下所示:
sent = untokenizedParenPattern1.matcher(sent).replaceAll("$1 $2");
sent = untokenizedParenPattern2.matcher(sent).replaceAll("$1 $2");
这不是将空格放在括号两侧的唯一方法,但是这样做预处理可以帮助您获得所需的输出!
如果你的问题解决了,请分享,希望这对你有所帮助!
有关于OpenNLP中解析器标记含义的文档吗?我知道POS标记类型遵循树库约定,但不幸的是,我没有找到任何关于解析器标记的信息,例如“SBAR”等。 这个留档是存在于某个地方还是我必须自己弄清楚?
我在R中得到的POS标记文本形式如下: 身份证 ..... 我想检索它已标记的单词,例如,而不是带有所有值的列“type”,因为单词检索实际单词。我可以使用scan_tokenizer,但当有“不是”之类的形式时,问题就出现了,POS标记器将其分为“is”和“not”,这很好,但scan_tokenizer不会这样标记,它只是将其保持在“is't”。有人能帮我检索R已标记并用于POS标记的单词吗?
我正在尝试训练opennlp词性标记器,它会根据我的特定词汇在句子中标记单词。例如: 正常词性标注后: 句子:NodeManager/NNP失败/VBD to/TO start/VB the/DT server/NN 使用我的词性标注模型后: 句子:NodeManager/AGENT失败/其他到/其他启动/其他/其他服务器/对象 其中AGENT,OTHER,OBJECT是我定义的标签。 所以基本上
编辑1:主要的问题是在训练完一个NER模型后,我将它应用到令牌上。因此,它不会识别“轮滑”,因为在代币中,它们以“轮滑”和“滑冰”的形式出现,而NER模型现在无法识别这个爱好。
我正在尝试使用Apache OpenNLP API创建一个标记器。我已经从他们的网站中提取了代码,但在Tokenize类中,以下代码行出现了“不兼容类型”错误: Tokenize Tokenizer=new TokenizerME(模型); 有人知道这个错误的原因吗?因为看起来他们不应该不兼容? 这是主要类: 这是具有错误的Tokenize类:
基础示例 <vuep template="#example"></vuep> <script v-pre type="text/x-template" id="example"> <template> <div class="amap-page-container"> <el-amap vid="amapDemo" :zoom="zoom" :center="c