2012-07-01 4 views

답변

12

나 역시 당신 같은 사람이었습니다. 그러나 약간의 고심으로 Nbin 파일을 사용하는 몇 가지 방법을 발견했습니다. Nbin 파일은 훈련 된 모델입니다. BinaryGisModelWriter을 사용하여 Nbin 파일을 만들 수 있습니다. 그러나 나처럼, 당신도 당신 자신의 모델을 만드는 것에 관심이 없다고 생각하지만 프로젝트에서 nbin 파일을 효과적으로 사용한다고 믿는다.

두 개의 dll이 필요합니다.

SharpEntropy.dll OpenNLP.dll 외에도 빠른 시작이에서

, 당신은 .NET 2.0 version of the sample

내부를 다운로드하는 것이 좋습니다입니다 Sample Project from Code Project for SharpNLP

을 다운로드 할 수 있습니다 당신 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 (S) 엔테이스 탐지, 토큰 화 및 POS 태깅 각각. nbin 파일은 일반적으로 SharpNLP 또는 OpenNLP를 사용하여 사용할 수있는 미리 훈련 된 모델입니다.

당신은 SharpNLP

될 것입니다 위의 방법과 Nbin 파일을 사용하여 샘플 POS 술래와 함께 사용하기 위해 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

안녕하세요 저는 Visual Studio 및 sharpNLP에 처음입니다. 귀하의 게시물을 읽고 implementaion을 시도했지만 몇 가지 문제에 직면하고 있습니다. –

+1

예. 내가 직면 한 문제를 알려주십시오. –

+1

안녕하세요 @ArunTS 게시물에 감사드립니다. 이것은 정말 도움이됩니다. –

관련 문제