如何使用openNLP检测日期

问题描述 投票:1回答:1

我想使用openNLP检测句子上的日期。它很容易使用id除了myslft训练之外还有一个现有的模型。任何人都可以指导我如何在java中做到这一点。

java date opennlp sentence
1个回答
2
投票
  • 首先从Date name finder model下载here(英文版-en tag)
  • 还下载Tokenizer model。因为Name Finder Model的输入应该是标记化数组
  • 将它们添加到项目文件夹或其他位置

加载两个模型

InputStream modelIn1 = new FileInputStream("en-ner-date.bin");
InputStream modelIn2 = new FileInputStream("en-token.bin");

创建Tokenizer模型和NamefinderModel

try {
  TokenizerModel model1 = new TokenizerModel(modelIn2);
  TokenNameFinderModel model2 = new TokenNameFinderModel(modelIn1);
}
catch (IOException e) {
  e.printStackTrace();
}
finally {
  if (modelIn1 != null) {
    try {
      modelIn1.close();
    }
    catch (IOException e) {
    }
  }
  if (modelIn2 != null) {
    try {
      modelIn2.close();
    }
    catch (IOException e) {
    }
  }
}

然后加载TokenizerME和NameFinderME

Tokenizer tokenizer = new TokenizerME(model1);
NameFinderME nameFinder = new NameFinderME(model2);

然后从tokenizer模型中获取令牌

String tokens[] = tokenizer.tokenize("An input sample sentence.");

然后将此令牌数组作为参数发送到namefinder模型

Span nameSpans[] = nameFinder.find(tokens);

这会将其转换为预测日期数组作为字符串

String[] array=Span.spansToStrings(nameSpans,tokens);
© www.soinside.com 2019 - 2024. All rights reserved.