2012-07-01 8 views

答えて

12

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

そのためには2つのdllが必要です。

SharpEntropy.dll OpenNLP.dll

クイックスタートのために、これとは別に

、あなたがSample Project from Code Project for SharpNLP

をダウンロードすることができますそのあなたの中.NET 2.0 version of the sample

をダウンロードすることをお勧めします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[] 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については

文検出器のため

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

     return mSentenceDetector.SentenceDetect(paragraph); 
    } 

とEnglishPOS.nbinSエンテンスの検出、トークン化、およびPOSタギングです。 nbinファイルはSharpNLPまたはOpenNLPを使用して一般的に使用できる、あらかじめ訓練されたモデルです。

あなたは上記の方法とNbinファイルを使用してサンプルPOSタガーはなりSharpNLP

で使用するためにNbinファイルのCodePlexにリポジトリから最新の 公式OpenNLPツールモデルから訓練されたモデルのセットや を見つけることができます、

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。あなたが直面している問題について話し合ってください。返信させていただきます。

+0

こんにちは私はビジュアルスタジオとsharpNLPに新しいです。私はあなたの投稿を読んでimplementaionを試しましたが、私はいくつかの問題に直面しています –

+1

確かに。あなたが直面している問題を教えてください。 –

+1

こんにちは@ArunTS投稿ありがとう、これは本当に便利です。 –