如何在我的C#应用​​程序中使用USE SharpNlp

时间:2010-11-12 15:16:22

标签: c# nlp

我要求在语料库中对我的文件进行POS标记。 我已成功遵循SharpNlp的安装说明 我正在使用二进制版本

I created a new c# project in:       E:\sharp\sharpapp
location of Models Folder is:        E:\sharp\sharpapp\bin\Models
location of my SharpNlp Binary is:   E:\sharp\SharpNLP-1.0.2529-Bin

我也按照说明修改.config文件“ParseTree.Exe”和“ToolsExamples.Exe”

现在在我的c#项目中,我有一个名为tagging.cs的类,我必须访问我的语料库文本文件并对这些文件进行POS标记。任何人都可以帮助我如何使用SharpNlp这样做

请提供相关步骤。

2 个答案:

答案 0 :(得分:10)

简而言之, SharpNLP

  • 指向OpenNLP ToolsOpenNLP MaxEnt
  • 的C#的端口
  • WordNet的连接器
  • 一组预先计算的模型,主要用于英语
  • 实用程序模块,例如与SQLLite集成

应该注意的是,OpenNLP库的端口是相对非正式的,具有各种类和属性名称更改,可能是对特性和语义的松散保留,并且与原始Java项目的生命周期没有明显的联系。这种情况可能会确保SharpNLP的OpenNLP部分会比孪生姐妹更类似于远房兄弟......

从不如此,可以使用OpenNLP中的示例和文档来补充SharpNLP提供的相对较薄的支持材料。在SharpNLP的源代码和OpenNLP API reference以及OpenNLP wiki之类的资源之间,人们通常可以映射事物并相应地进行调整。

一个松散的指挥可能是对这个source file的研究,它以一种看似接近你可能需要的方式使用OpenNLP。注意OpenNLP和SharpNLP之间的名称更改,例如 POSTTaggerME 类变为 MaximumEntropyPosTagger Parse()方法,并且其重载变为 TagSentence()等。

更一般的提示是理解......
... 执行POS标记通常所需的步骤序列 这是一个非常高级的近似描述,但我认为是有用的。

  • 获取要标记的文字=文字字符串
  • 初始化文字 解析器
  • 解析它=一个“数组”(或其他容器),其中包含单个 标记 ,即单词和标点字符。
  • 初始化POS Tagger,特别是告诉它应该使用哪个 模型
  • 将[有序]令牌序列提供给POS Tagger
  • Ta dah!将POS标签用于NLP应用程序的最终目的。

请注意上述顺序假定模型随时可用 该模型表示一般文本的统计“概况”,通过使用一组易于标记的文本训练Tagger获得。 SharpNLP附带通用英语语言模型,但为了标记其他语言或者标记的特定语料库属于特定领域(例如医学报告或推文或......),最好重新训练标记器以提高其精度。
Open / SharpNLP作为大多数POS标签器,无论是独立的还是它们的API,通常都包含训练它们的功能(=生成一个模型,给出一组容易标记的文本样本),并验证所生成的模型/标记器的质量(=将测试集上生成的标签与该集合预期的标签进行比较)。

答案 1 :(得分:1)

请仔细阅读我为此撰写的文章。它将为您提供详细的分步方法,并提供示例代码段。

Easy way of Integrating SharpNLP into your project in Visual Studio

我希望这很有用。