OpenNLP名称查找器

Chr*_*ris 9 apache nlp data-mining opennlp

我正在使用OpenNLP的NameFinder API示例文档.初始化名称查找器后,文档使用以下代码作为输入文本:

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

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

  nameFinder.clearAdaptiveData()
}
Run Code Online (Sandbox Code Playgroud)

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

谢谢您的帮助.

wco*_*len 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)));
}
Run Code Online (Sandbox Code Playgroud)

您可以从OpenNLP文档文档中学习如何使用SentenceDetector和Tokenizer .