【问题标题】:Adding entities to Stanford NLP NER Classifier将实体添加到斯坦福 NLP NER 分类器
【发布时间】:2018-06-07 17:25:06
【问题描述】:

我有一个非常简单的方法可以从字符串中提取名称、组织和位置。我正在为斯坦福 NLP 使用 .NET Nuget 库。它看起来像这样。

CRFClassifier Classifier = CRFClassifier.getClassifier(StanfordNLPConfig.NER.ClassifierModel);

        List<IndexViewModel> ivms = new List<IndexViewModel>();

        try
        {
            foreach (List sentence in Classifier.classify(content).toArray())
            {
                NLPTranslator translator = new NLPTranslator();
                ivms.AddRange(translator.NERTranslate(sentence));
            }
        }
        catch (Exception ex)
        {
            throw ex;
            // Error silently
        }

        return ivms;

模型是它附带的 3class jar 文件 - english.all.3class.dissim.crf.ser.gz。

这对我来说真的很好用,但我想做的是与模型交互,以便在我需要时能够添加我自己的实体,这似乎非常以美国为中心,我想成为能够放置我自己的英国公司、地点等。

有什么方法可以添加这些实体,因为我一直在阅读有关训练它的信息,但是您可能无法扩展模型,如果是这种情况,我可以组合分类器并通过英国的分类器运行它/美国等。如果可能的话,我怎样才能真正制作自己的分类器,因为如果可能的话,我想在.NET中制作这些。

【问题讨论】:

  • 我目前有同样的问题,如果我能够找到如何做到这一点,我会在这里发布,如果你在我之前找到如何回答你自己的问题,我会问。谢谢。

标签: c# .net nlp stanford-nlp named-entity-recognition


【解决方案1】:

如果您想改变模型的工作方式,您需要提供训练数据并训练您自己的模型。出于许可原因,斯坦福大学不会分发公共模型训练所依据的数据,但您可以使用相同的功能。

您可以阅读有关如何训练模型的信息 here,但不幸的是,说明的第一句话是这样的:

用于训练您自己的分类器的文档介于糟糕和不存在之间。

如果这是您第一次使用 CRF,将会有很多东西需要学习,但它是易于管理的。查看其他软件包的文档可能会有所帮助,例如 CRFSuiteCRF++ - 它们通常都使用基本相同的训练数据格式并且在很多方面都相似。

另外请注意,现有模型不能通过仅在新输入上训练它们来扩展,系统不是这样设置的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-12
    • 2015-04-30
    • 1970-01-01
    相关资源
    最近更新 更多