【问题标题】:OpenNLP: foreign names does not get recognizedOpenNLP:外国名称无法识别
【发布时间】:2013-12-28 20:49:26
【问题描述】:

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

【问题讨论】:

    标签: nlp opennlp


    【解决方案1】:

    您可以使用名为 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 上提交一张票。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-24
    • 1970-01-01
    • 1970-01-01
    • 2012-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多