11

このサイトhttp://sharpnlp.codeplex.com/から SharpNLP をダウンロードしまし たが、対処方法がわからない .nbin ファイルをダウンロードしました。助けてくれませんか?

4

1 に答える 1

14

私もあなたと同じユーザーでした。しかし、少し苦労して、Nbin ファイルを使用する方法をいくつか見つけました。述べたように、Nbin ファイルはトレーニング済みのモデルです。BinaryGisModelWriter を使用してNbinファイルを作成できます。しかし、私と同じように、あなたも独自のモデルを作成することには興味がなく、プロジェクトで nbin ファイルを効果的に使用することに興味があると思います。

そのためには、2 つの 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);
    }

トークナイザーの場合

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 を使い始めるのに役立つと信じています。あなたが直面しているどんな問題でも、気軽に話し合ってください。喜んで返信させていただきます。

于 2013-10-18T18:47:22.650 に答える