【发布时间】:2013-12-28 20:49:26
【问题描述】:
我刚开始使用 openNLP 来识别名字。我使用的是开放 NLP 附带的模型(en-ner-person.bin)。我注意到虽然它可以识别我们、英国和欧洲的名字,但它无法识别印度或日本的名字。我的问题是(1)是否已经有可用的模型可以用来识别外国名称(2)如果没有,那么我相信我需要生成新模型。在这种情况下,有没有我可以使用的语料库?
【问题讨论】:
我刚开始使用 openNLP 来识别名字。我使用的是开放 NLP 附带的模型(en-ner-person.bin)。我注意到虽然它可以识别我们、英国和欧洲的名字,但它无法识别印度或日本的名字。我的问题是(1)是否已经有可用的模型可以用来识别外国名称(2)如果没有,那么我相信我需要生成新模型。在这种情况下,有没有我可以使用的语料库?
【问题讨论】:
您可以使用名为 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);
}
}
这个想法是您的已知实体(数据中的常用名称)用于创建注释,这些注释用于生成模型,然后该模型用于生成更多名称和注释等......该工具将根据“迭代”参数执行此操作。你应该运行它,检查你的结果,任何不受欢迎的命中都应该添加到黑名单文件中,然后你可以再次运行训练。我已经使用了这个并且得到了很好的结果。如果你发现它有问题,请在 OpenNLP 上提交一张票。
【讨论】: