9

我正在使用 OpenNLP 的NameFinder API 示例文档。初始化 Name Finder 后,文档使用以下代码作为输入文本:

for (String document[][] : documents) {

  for (String[] sentence : document) {
    Span nameSpans[] = nameFinder.find(sentence);
    // do something with the names
  }

  nameFinder.clearAdaptiveData()
}

但是,当我将它带入 Eclipse 时,“文档”(不是“文档”)变量给我一个错误,说变量文档无法解析。'documents' 数组变量引用的文档是什么?我是否需要初始化一个名为“documents”的数组,该数组包含 txt 文件以使此错误消失?

感谢您的帮助。

4

1 回答 1

16

OpenNLP文档指出输入文本应该被分割成文档、句子和标记。您提供的这段代码说明了如何处理多个文档。

如果您只有一个文档,则不需要第一个文档,只需包含句子数组的内部文档,该句子由标记数组组成。

要从文档创建句子数组,您可以使用 OpenNLP SentenceDetector,对于每个句子,您可以使用 OpenNLP Tokenizer 来获取标记数组。

您的代码将如下所示:

// somehow get the contents from the txt file 
//      and populate a string called documentStr

String sentences[] = sentenceDetector.sentDetect(documentStr);
for (String sentence : sentences) {
    String tokens[] = tokenizer.tokenize(sentence);
    Span nameSpans[] = nameFinder.find(tokens);
    // do something with the names
    System.out.println("Found entity: " + Arrays.toString(Span.spansToStrings(nameSpans, tokens)));
}

您可以从OpenNLP 文档文档中了解如何使用 SentenceDetector 和 Tokenizer 。

于 2012-04-17T01:58:29.513 回答