OpenNLP NameFinder Training on C#

本文关键字:on Training NameFinder OpenNLP | 更新日期: 2023-09-27 18:25:55

我想使用C#在OpenNLP中训练一个新模型。我在java部分使用了IKVM。这是我的火车方法:(我在jv中引用了java.io,在op中引用了open.tools)

 public string train(string lang, string entity, jv.FileInputStream taggedCorpusStream, jv.FileOutputStream modelStream)
    {
        //for encoding 
        java.nio.charset.Charset charset = java.nio.charset.Charset.forName("UTF-8");
        try
        {
            op.util.ObjectStream lineStream = new op.util.PlainTextByLineStream(taggedCorpusStream, charset);
            op.util.ObjectStream sampleStream = new op.namefind.NameSampleDataStream(lineStream);
            op.namefind.TokenNameFinderModel model;
            jv.OutputStream modelOut = null;
            try
            {
                model = op.namefind.NameFinderME.train(lang, entity, sampleStream, op.util.TrainingParameters.defaultParams(), new op.namefind.TokenNameFinderFactory());
                modelOut = new jv.BufferedOutputStream(modelStream);
                if (model != null)
                {
                    model.serialize(modelOut);
                }
                return entity + " model trained successfully";
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
            finally
            {
                sampleStream.close();
                if (modelOut != null)
                {
                    modelOut.close();
                }
            }
        } 
        catch (Exception e)
        {
            Console.WriteLine(e.ToString());
        }
        return "Something goes wrong with training module.";           
    }

在调用第五个参数(即TokenNameFinderFactor)中的NameFinder.train的部分,我得到了一个NullReference异常。现在我的问题是它的主要用途是什么,我可以用什么替代品或方法来解决这个问题?我需要创建自己的TokenNameFinderFactor吗?关于如何实现它,我在这里没有得到或理解它的文档。感谢您的帮助。谢谢

OpenNLP NameFinder Training on C#

你发布问题已经有一段时间了。不确定你是否找到了解决方案。我也遇到过类似的问题(更确切地说是这里描述的问题http://permalink.gmane.org/gmane.comp.apache.opennlp.user/937)。解决方案很简单。

将所有IKVM dll复制到您的项目文件夹中(调试/发布)。我只提到了几个,因此出现了错误。这很可能是为此目的所需的一两个dll,但我没有费心去确定具体的dll。

现在,我可以训练新的模特了。

谨致问候,Ram