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