【问题标题】:OpenNLP Name FinderOpenNLP 名称查找器
【发布时间】:2012-04-28 03:44:37
【问题描述】:

我正在使用 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'(不是 'document')变量给我一个错误,提示 无法解析变量文档。 'documents' 数组变量引用的文档是什么?我是否需要初始化一个名为“documents”的数组,该数组包含 txt 文件才能消除此错误?

感谢您的帮助。

【问题讨论】:

    标签: apache nlp data-mining opennlp


    【解决方案1】:

    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。

    【讨论】:

    • 感谢您的回复!我将其插入但仍然出现错误:“类型不匹配:无法从元素类型字符串转换为字符串 []”,并且句子变量在第 5 行对我出错:for(字符串 [] 句子:句子){
    • 是的,出现错误。刚刚从 for (String sentence[] : sentence) 中删除了 []。谢谢。
    • wcolen,感谢您的所有帮助。当我删除数组语法 [] 时,唯一的问题是下一行现在对我咆哮,因为 find 方法将数组作为参数,所以句子不起作用: Span nameSpans[] = nameFinder.find(sentence);
    • 哎呀......再次抱歉。我现在看到了。缺少标记化命令。我会为你修好。
    • 我还改进了示例输出。 nameSpans 指向标记数组的开始和结束索引,所以我们应该使用方法 Span.spansToStrings 来打印输出。
    猜你喜欢
    • 2018-07-05
    • 2017-09-13
    • 1970-01-01
    • 1970-01-01
    • 2013-12-28
    • 1970-01-01
    • 1970-01-01
    • 2013-07-12
    • 1970-01-01
    相关资源
    最近更新 更多