我刚开始使用openNLP来识别名字.我正在使用开放式NLP附带的模型(en-ner-person.bin).我注意到虽然它识别我们,英国和欧洲名字,却无法识别印度或日本的名字.我的问题是(1)是否已有可用于识别外国名称的模型(2)如果没有,那么我相信我需要生成新模型.在那种情况下,是否有可用的copora?
您可以使用名为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);
}
}
Run Code Online (Sandbox Code Playgroud)
我们的想法是,您的已知实体(数据中的通用名称)用于创建注释,这些注释用于生成模型,然后该模型用于生成更多名称和注释等...该工具将执行此操作根据"迭代"参数.您应该运行它,检查结果,应将任何不良命中添加到黑名单文件中,然后您可以再次运行培训.我用过这个并得到了不错的结果.如果您发现有问题,请在OpenNLP上订票.