Closed. This question needs details or clarity。它当前不接受答案。
想要改善这个问题吗?添加详细信息,并通过editing this post来解决问题。
4年前关闭。
Improve this question
我已经从此站点http://sharpnlp.codeplex.com/下载了SharpNLP。
但是它下载了.nbin文件,我不知道该如何处理。
有什么帮助吗?
mModelPath是用于保存您希望使用的nbin文件的路径的变量。
现在,我将向您展示如何使用上面定义的类的构造函数来使用nbin文件。
对于句子检测器
对于分词器
对于POSTagger
可以看到,我分别使用EnglishSD.nbin,EnglishTok.nbin和EnglishPOS.nbin进行了句子检测,标记化和POS标记。 nbin文件只是经过预先训练的模型,通常可以使用SharpNLP或OpenNLP来使用。
您可以从以下位置找到最新的经过训练的模型集
官方的OpenNLP工具模型或
来自Nbin文件的Codeplex存储库,可与SharpNLP一起使用
使用上述方法和Nbin文件的POS标记器示例如下所示,
您可以使用可用的Nbin文件编写类似的方法以进行分块,解析等,也可以训练自己的方法。
尽管我自己还没有训练过模型,但是从整齐的训练文本文件中训练模型的语法是
我相信这篇文章将帮助您开始使用SharpNLP。请随时讨论您遇到的任何问题。我会很乐意答复。
想要改善这个问题吗?添加详细信息,并通过editing this post来解决问题。
4年前关闭。
Improve this question
我已经从此站点http://sharpnlp.codeplex.com/下载了SharpNLP。
但是它下载了.nbin文件,我不知道该如何处理。
有什么帮助吗?
最佳答案
我也是像你这样的用户。但是经过一番努力,我发现了几种使用Nbin文件的方法。如上所述,Nbin文件是经过训练的模型。我们可以使用BinaryGisModelWriter创建Nbin文件。但是,就像我一样,我相信您也不会对创建自己的模型感兴趣,而是希望在您的项目中有效地使用nbin文件。
为此,您需要两个dll。
除了快速入门之外,您还可以下载Sample Project from Code Project for SharpNLP
最好下载.NET 2.0 version of the sample
在其中,您将有一个名为OpenNLP的项目。将该项目添加到您希望使用NLP或nbin文件的任何项目中,然后将解决方案中的引用添加到“OpenNLP”项目中。
现在,从您的主要解决方案中,您可以初始化各种工具,例如,我将向您展示句子检测器, token 化器和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工具模型或
来自Nbin文件的Codeplex存储库,可与SharpNLP一起使用
使用上述方法和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。请随时讨论您遇到的任何问题。我会很乐意答复。
关于c# - sharpNLP作为.nbin文件扩展名,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11279054/
10-13 02:33