我正在使用OpenNLP的NameFinder API示例文档。初始化名称查找器后,文档使用以下代码作为输入文本:
for (String document[][] : documents) {
for (String[] sentence : document) {
Span nameSpans[] = nameFinder.find(sentence);
// do something with the names
}
nameFinder.clearAdaptiveData()
}
然而,当我把它带入eclipse时,'documents'(而不是'document')变量给我一个错误,说变量文档无法解析。使用'documents'数组变量引用的文档是什么?我是否需要初始化一个名为“documents”的数组,该数组包含txt文件以便此错误消失?
感谢您的帮助。
答案 0 :(得分:16)
OpenNLP documentation表示输入文本应分段为文档,句子和标记。您提供的代码片段说明了如何处理多个文档。
如果您只有一个文档,则不需要第一个文档,只有内部文档具有句子数组,由一组标记组成。
要从文档创建句子数组,您可以使用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 documentation文档中学习如何使用SentenceDetector和Tokenizer。