如何使用openNLP检测日期

时间:2014-11-28 04:45:07

标签: java date opennlp sentence

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

1 个答案:

答案 0 :(得分:2)

  • 首先从here(英文版-en tag)
  • 下载Date name finder model
  • 同时下载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.");

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

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

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

String[] array=Span.spansToStrings(nameSpans,tokens);
相关问题