2012-07-01 15 views

Respuesta

12

Yo también era un usuario como tú. Pero con un poco de esfuerzo, he encontrado algunas maneras de usar el archivo Nbin. Como se dijo, los archivos Nbin son modelos entrenados. Podemos crear un archivo Nbin usando el BinaryGisModelWriter. Sin embargo, al igual que yo, creo que a usted tampoco le interesa crear su propio modelo, sino utilizar los archivos nbin de manera efectiva en su proyecto.

Para eso necesita dos dlls.

SharpEntropy.dll OpenNLP.dll

Aparte de esto para un inicio rápido, se puede descargar el Sample Project from Code Project for SharpNLP

Es mejor descargar el .NET 2.0 version of the sample

interior que tendrá un proyecto llamado OpenNLP. Agregue ese proyecto a cualquiera de los proyectos que desee hacer uso de NLP o los archivos nbin y agregue una referencia desde su solución al proyecto "OpenNLP".

Ahora desde su principal solución, puede inicializar diferentes herramientas como, por ejemplo, voy a mostrar la inicialización de un detector de condena, tokenizer y una 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; 

El mModelPath es la variable para contener la ruta de los archivos nbin que desea utilizar.

Ahora le mostraré cómo usar los archivos nbin utilizando el constructor de las clases definidas anteriormente.

para el detector de Sentencia

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

     return mSentenceDetector.SentenceDetect(paragraph); 
    } 

Para Tokenizer

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

     return mTokenizer.Tokenize(sentence); 
    } 

Y para 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); 
    } 

Se puede ver que he utilizado el EnglishSD.nbin, y EnglishTok.nbin EnglishPOS.nbin para S entence Detection, Tokenizing y POS Tagging respectivamente. Los archivos nbin son solo modelos pre-entrenados que pueden usarse con SharpNLP o OpenNLP en general.

Usted puede encontrar las últimas conjunto de los modelos de formación de Los modelos oficiales de herramientas OpenNLP o desde el repositorio CodePlex de archivos NBIN para su uso con SharpNLP

un etiquetador muestra de puntos de venta utilizando los métodos anteriores y los archivos NBIN será de la siguiente manera,

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

usted puede escribir métodos similares para la fragmentación, análisis, etc., haciendo uso de los archivos NBIN disponibles, o se puede formar una propia.

Aunque no he entrenado a un modelo en el mío propio, la sintaxis para la formación de un modelo desde un archivo de texto de entrenamiento perfectamente formado es

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

Creo que este post va a ayudarle a iniciar su camino con SharpNLP. Por favor, siéntete para discutir cualquier problema que enfrentes. Estaré encantado de responder.

+0

hey soy nuevo en visual studio y sharpNLP He leído su publicación e intenté implementarla, pero estoy enfrentando algún problema, ¿me pueden ayudar? –

+1

Claro. Déjame saber los problemas que estás enfrentando. –

+1

Hola @ArunTS Gracias por la publicación, Esto es realmente útil. –

Cuestiones relacionadas