我需要对语料库中的文件进行 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 的类,我必须在其中访问我的语料库文本文件并对这些文件进行词性标注。任何人都可以帮助我如何利用 SharpNlp 来做到这一点

请提供这样做的步骤。

最佳答案

简而言之, SharpNLP

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

  • 需要注意的是,OpenNLP 库的移植相对非正式,具有各种类和属性名称更改,可能对特性和语义的保留松散,并且与原始 Java 项目的生命周期没有明显的联系。这种情况可能会确保 SharpNLP 的 OpenNLP 部分将更类似于远房表亲而不是双胞胎姐妹......

    尽管如此, 可以使用 OpenNLP 的示例和文档来补充 SharpNLP 提供的相对较薄的支持 Material 。在 SharpNLP 的源代码和 OpenNLP API referenceOpenNLP wiki 等资源之间,人们通常可以映射事物并相应地进行调整。

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

    一个更一般的提示是理解......
    ... 执行 POS 标记通常所需的步骤序列
    这是一个非常高级的近似描述,但我认为很有用。
  • 获取要标记的文本 = 文本字符串
  • 初始化文本 解析器
  • 解析它 = 一个“数组”(或其他容器),带有单独的 标记 ,即单词和标点符号。
  • 初始化 POS Tagger,特别是告诉它应该使用哪个 模型
  • 将 [ordered] token 序列提供给 POS 标记器
  • 达达!将 POS 标签用于 NLP 应用程序的最终目的。

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

    10-06 10:20