2012-07-01 51 views

Trả lời

12

Tôi cũng là một người dùng như bạn. Nhưng với một chút đấu tranh, tôi đã tìm thấy một vài cách để sử dụng tệp Nbin. Như đã nêu Nbin tập tin được đào tạo các mô hình. Chúng tôi có thể tạo tệp Nbin bằng cách sử dụng BinaryGisModelWriter. Tuy nhiên cũng giống như tôi, tôi tin rằng bạn cũng không quan tâm để tạo ra mô hình của riêng bạn, nhưng để sử dụng các tập tin nbin hiệu quả trong dự án của bạn.

Vì vậy, bạn cần hai dll.

SharpEntropy.dll OpenNLP.dll

Ngoài này cho một sự khởi đầu nhanh chóng, bạn có thể tải về Sample Project from Code Project for SharpNLP

Nó là tốt hơn để tải về .NET 2.0 version of the sample

Bên trong bạn sẽ có một dự án có tên OpenNLP. Thêm dự án đó vào bất kỳ dự án nào mà bạn muốn sử dụng NLP hoặc các tệp nbin và thêm một tham chiếu từ giải pháp của bạn vào dự án "OpenNLP".

Bây giờ từ giải pháp chính của bạn, bạn có thể khởi tạo các công cụ khác nhau như thế nào, ví dụ tôi sẽ cho bạn thấy khởi tạo của một máy dò câu, tokenizer và 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; 

Các mModelPath được biến để giữ đường dẫn của các tệp nbin mà bạn muốn sử dụng.

Bây giờ tôi sẽ chỉ cho bạn cách sử dụng các tệp nbin bằng cách sử dụng hàm tạo của các lớp được xác định ở trên.

Đối Detector Câu

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

     return mSentenceDetector.SentenceDetect(paragraph); 
    } 

Đối Tokenizer

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

     return mTokenizer.Tokenize(sentence); 
    } 

Và đối với 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); 
    } 

Bạn có thể thấy rằng tôi đã sử dụng EnglishSD.nbin, EnglishTok.nbin và EnglishPOS.nbin cho S lần lượt tìm kiếm, gắn thẻ và gắn thẻ POS. Các tệp nbin chỉ là các mô hình được đào tạo trước có thể được sử dụng bằng cách sử dụng SharpNLP hoặc OpenNLP nói chung.

Bạn có thể tìm thấy các thiết lập mới nhất của mô hình đào tạo từ Các mô hình chính thức OpenNLP Tool hoặc Từ kho Codeplex file Nbin để sử dụng với SharpNLP

Một tagger mẫu POS sử dụng các phương pháp trên và các tập tin Nbin sẽ như sau,

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"); 
     } 
    } 

bạn có thể viết phương pháp tương tự cho chunking, phân tích, vv, bằng cách sử dụng các tập tin Nbin sẵn, hoặc bạn có thể đào tạo một trong những của riêng bạn.

Mặc dù tôi đã không được đào tạo một mô hình trên của riêng tôi, cú pháp cho việc đào tạo một mô hình từ một tập tin văn bản đào tạo gọn gàng hình thành là

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); 

Tôi tin rằng bài viết này sẽ giúp bạn bắt đầu theo cách của bạn với SharpNLP. Vui lòng thảo luận về bất kỳ vấn đề nào mà bạn gặp phải. Tôi sẽ rất vui khi được trả lời.

+0

hey i am new to visual studio và sharpNLP i đã đọc bài đăng của bạn và thử implementaion nhưng tôi đang gặp phải một số vấn đề bạn có thể giúp tôi –

+1

Chắc chắn. Hãy cho tôi biết những vấn đề mà bạn đang phải đối mặt. –

+1

Xin chào @ArunTS Cảm ơn bạn đã đăng bài, Điều này thực sự hữu ích. –

Các vấn đề liên quan