OpenNLP:外部名称无法识别

时间:2013-12-11 02:53:03

标签: nlp opennlp

我刚开始使用openNLP来识别名字。我正在使用开放式NLP附带的模型(en-ner-person.bin)。我注意到虽然它识别我们,英国和欧洲名字,却无法识别印度或日本的名字。我的问题是(1)是否已有可用于识别外国名称的模型(2)如果没有,那么我相信我需要生成新模型。在那种情况下,我可以使用copora吗?

1 个答案:

答案 0 :(得分:7)

您可以使用名为modelbuilder-addon的opennlp插件创建自己的数据模型,如果您尝试它,您可能是第一个除此之外的人...它是全新的。

这是非常新的,但它对我有用。

你喂它以下:

  • 通过文件列出“已知实体”,其中每一行都是一个名称
  • 您的数据通过文件的句子列表,其中每行是一个句子
  • (可选)黑名单以消除误报

你可以在这里查看插件

https://svn.apache.org/repos/asf/opennlp/addons/modelbuilder-addon

你可以用它来开始

import java.io.File;
import opennlp.addons.modelbuilder.DefaultModelBuilderUtil;

public class ModelBuilderAddonUse {

  public static void main(String[] args) {
    File fileOfSentences = new File("path to your sentence file");
    File fileOfNames = new File("path to your file of person names");
    File blackListFile = new File("path to your blacklist file");
    File modelOutFile = new File("path to you where the model will be saved");
    File annotatedSentencesOutFile = new File("path to your sentence file");

    DefaultModelBuilderUtil.generateModel(fileOfSentences, fileOfNames, blackListFile, modelOutFile, annotatedSentencesOutFile, "person", 3);


  }
}

我们的想法是,您的已知实体(数据中的通用名称)用于创建注释,这些注释用于生成模型,然后该模型用于生成更多名称和注释等...将根据“iterations”参数执行此操作。您应该运行它,检查结果,应将任何不良命中添加到黑名单文件中,然后您可以再次运行培训。我用过这个并得到了不错的结果。如果您发现问题,请在OpenNLP上填写一张票。