问题 sharpNLP as .nbin文件扩展名[关闭]


我从这个网站下载了SharpNLP http://sharpnlp.codeplex.com/ 但它下载了.nbin文件,我不知道如何处理。 任何帮助pleeeeeeeease?


3446
2017-07-01 01:56


起源



答案:


我也是像你这样的用户。但是经过一些努力,我找到了几种使用Nbin文件的方法。如上所述,Nbin文件是经过训练的模型。我们可以使用创建Nbin文件 BinaryGisModelWriter。然而就像我一样,我相信你也不想创建自己的模型,而是在项目中有效地使用nbin文件。

为此你需要两个dll。

SharpEntropy.dll   OpenNLP.dll

除了这个快速入门,你可以下载 SharpNLP代码项目的示例项目

最好下载 .NET 2.0版本的示例

在里面你将有一个名为OpenNLP的项目。将该项目添加到您希望使用NLP或nbin文件的任何项目中,并将解决方案中的引用添加到“OpenNLP”项目中。

现在从您的主要解决方案,您可以初始化不同的工具,例如,我将向您展示句子检测器,标记器和PosTagger的初始化

 private string mModelPath = @"C:\Users\ATS\Documents\Visual Studio 2012\Projects\Google_page_speed_json\Google_page_speed_json\bin\Release\";
 private OpenNLP.Tools.SentenceDetect.MaximumEntropySentenceDetector mSentenceDetector;
 private OpenNLP.Tools.Tokenize.EnglishMaximumEntropyTokenizer mTokenizer;
 private OpenNLP.Tools.PosTagger.EnglishMaximumEntropyPosTagger mPosTagger;

mModelPath 是保存您希望使用的nbin文件路径的变量。

现在,我将向您展示如何使用上面定义的类的构造函数来使用nbin文件。

对于句子探测器

private string[] SplitSentences(string paragraph)
    {
        if (mSentenceDetector == null)
        {
            mSentenceDetector = new OpenNLP.Tools.SentenceDetect.EnglishMaximumEntropySentenceDetector(mModelPath + "EnglishSD.nbin");
        }

        return mSentenceDetector.SentenceDetect(paragraph);
    }

对于Tokenizer

private string[] TokenizeSentence(string sentence)
    {
        if (mTokenizer == null)
        {
            mTokenizer = new OpenNLP.Tools.Tokenize.EnglishMaximumEntropyTokenizer(mModelPath + "EnglishTok.nbin");
        }

        return mTokenizer.Tokenize(sentence);
    }

对于POSTagger

private string[] PosTagTokens(string[] tokens)
    {
        if (mPosTagger == null)
        {
            mPosTagger = new OpenNLP.Tools.PosTagger.EnglishMaximumEntropyPosTagger(mModelPath + "EnglishPOS.nbin", mModelPath + @"\Parser\tagdict");
        }

        return mPosTagger.Tag(tokens);
    }

你可以看到我用过了 EnglishSD.nbin,EnglishTok.nbin和EnglishPOS.nbin 对于 句子检测,标记化和POS标记 分别。 nbin文件只是预先训练的模型,一般可以使用SharpNLP或OpenNLP。

您可以从中找到最新的训练模型 官方OpenNLP工具模型或 从用于SharpNLP的Nbin文件的Codeplex存储库

使用上述方法和Nbin文件的样本POS标记符如下,

public void POSTagger_Method(string sent)
    {
        File.WriteAllText("POSTagged.txt", sent+"\n\n");
        string[] split_sentences = SplitSentences(sent);
        foreach (string sentence in split_sentences)
        {
            File.AppendAllText("POSTagged.txt", sentence+"\n");
            string[] tokens = TokenizeSentence(sentence);
            string[] tags = PosTagTokens(tokens);

            for (int currentTag = 0; currentTag < tags.Length; currentTag++)
            {
                File.AppendAllText("POSTagged.txt", tokens[currentTag] + " - " + tags[currentTag]+"\n");
            }
            File.AppendAllText("POSTagged.txt", "\n\n");
        }
    }

您可以通过使用可用的Nbin文件编写类似的分块,解析等方法,或者您可以训练自己的一个。

虽然我没有自己训练模型,但是从一个整齐的训练文本文件中训练模型的语法是

System.IO.StreamReader trainingStreamReader = new System.IO.StreamReader(trainingDataFile);
SharpEntropy.ITrainingEventReader eventReader = new SharpEntropy.BasicEventReader(new SharpEntropy.PlainTextByLineDataReader(trainingStreamReader));
SharpEntropy.GisTrainer trainer = new SharpEntropy.GisTrainer();
trainer.TrainModel(eventReader);
mModel = new SharpEntropy.GisModel(trainer);

我相信这篇文章将帮助您开始使用SharpNLP。请考虑讨论您遇到的任何问题。我很乐意回复。


14
2017-10-18 18:47



嘿,我是视觉工作室的新手和sharpNLP我已阅读你的帖子并尝试实施但我面临一些问题你可以帮我吗 - Adnan Ali
当然。让我知道您面临的问题。 - Arun Thundyill Saseendran
嗨@ArunTS感谢您的帖子,这真的很有帮助。 - Charitha Goonewardena


答案:


我也是像你这样的用户。但是经过一些努力,我找到了几种使用Nbin文件的方法。如上所述,Nbin文件是经过训练的模型。我们可以使用创建Nbin文件 BinaryGisModelWriter。然而就像我一样,我相信你也不想创建自己的模型,而是在项目中有效地使用nbin文件。

为此你需要两个dll。

SharpEntropy.dll   OpenNLP.dll

除了这个快速入门,你可以下载 SharpNLP代码项目的示例项目

最好下载 .NET 2.0版本的示例

在里面你将有一个名为OpenNLP的项目。将该项目添加到您希望使用NLP或nbin文件的任何项目中,并将解决方案中的引用添加到“OpenNLP”项目中。

现在从您的主要解决方案,您可以初始化不同的工具,例如,我将向您展示句子检测器,标记器和PosTagger的初始化

 private string mModelPath = @"C:\Users\ATS\Documents\Visual Studio 2012\Projects\Google_page_speed_json\Google_page_speed_json\bin\Release\";
 private OpenNLP.Tools.SentenceDetect.MaximumEntropySentenceDetector mSentenceDetector;
 private OpenNLP.Tools.Tokenize.EnglishMaximumEntropyTokenizer mTokenizer;
 private OpenNLP.Tools.PosTagger.EnglishMaximumEntropyPosTagger mPosTagger;

mModelPath 是保存您希望使用的nbin文件路径的变量。

现在,我将向您展示如何使用上面定义的类的构造函数来使用nbin文件。

对于句子探测器

private string[] SplitSentences(string paragraph)
    {
        if (mSentenceDetector == null)
        {
            mSentenceDetector = new OpenNLP.Tools.SentenceDetect.EnglishMaximumEntropySentenceDetector(mModelPath + "EnglishSD.nbin");
        }

        return mSentenceDetector.SentenceDetect(paragraph);
    }

对于Tokenizer

private string[] TokenizeSentence(string sentence)
    {
        if (mTokenizer == null)
        {
            mTokenizer = new OpenNLP.Tools.Tokenize.EnglishMaximumEntropyTokenizer(mModelPath + "EnglishTok.nbin");
        }

        return mTokenizer.Tokenize(sentence);
    }

对于POSTagger

private string[] PosTagTokens(string[] tokens)
    {
        if (mPosTagger == null)
        {
            mPosTagger = new OpenNLP.Tools.PosTagger.EnglishMaximumEntropyPosTagger(mModelPath + "EnglishPOS.nbin", mModelPath + @"\Parser\tagdict");
        }

        return mPosTagger.Tag(tokens);
    }

你可以看到我用过了 EnglishSD.nbin,EnglishTok.nbin和EnglishPOS.nbin 对于 句子检测,标记化和POS标记 分别。 nbin文件只是预先训练的模型,一般可以使用SharpNLP或OpenNLP。

您可以从中找到最新的训练模型 官方OpenNLP工具模型或 从用于SharpNLP的Nbin文件的Codeplex存储库

使用上述方法和Nbin文件的样本POS标记符如下,

public void POSTagger_Method(string sent)
    {
        File.WriteAllText("POSTagged.txt", sent+"\n\n");
        string[] split_sentences = SplitSentences(sent);
        foreach (string sentence in split_sentences)
        {
            File.AppendAllText("POSTagged.txt", sentence+"\n");
            string[] tokens = TokenizeSentence(sentence);
            string[] tags = PosTagTokens(tokens);

            for (int currentTag = 0; currentTag < tags.Length; currentTag++)
            {
                File.AppendAllText("POSTagged.txt", tokens[currentTag] + " - " + tags[currentTag]+"\n");
            }
            File.AppendAllText("POSTagged.txt", "\n\n");
        }
    }

您可以通过使用可用的Nbin文件编写类似的分块,解析等方法,或者您可以训练自己的一个。

虽然我没有自己训练模型,但是从一个整齐的训练文本文件中训练模型的语法是

System.IO.StreamReader trainingStreamReader = new System.IO.StreamReader(trainingDataFile);
SharpEntropy.ITrainingEventReader eventReader = new SharpEntropy.BasicEventReader(new SharpEntropy.PlainTextByLineDataReader(trainingStreamReader));
SharpEntropy.GisTrainer trainer = new SharpEntropy.GisTrainer();
trainer.TrainModel(eventReader);
mModel = new SharpEntropy.GisModel(trainer);

我相信这篇文章将帮助您开始使用SharpNLP。请考虑讨论您遇到的任何问题。我很乐意回复。


14
2017-10-18 18:47



嘿,我是视觉工作室的新手和sharpNLP我已阅读你的帖子并尝试实施但我面临一些问题你可以帮我吗 - Adnan Ali
当然。让我知道您面临的问题。 - Arun Thundyill Saseendran
嗨@ArunTS感谢您的帖子,这真的很有帮助。 - Charitha Goonewardena