构建词性标签器(POS Tagger)

Sta*_*och 2 java nlp pos-tagger

我需要用Java构建一个POS标记器,并且需要知道如何开始.是否有代码示例或其他资源来帮助说明POS标记器的工作原理?

And*_*rey 5

您可以检查现有的标记器实现。

例如,请参阅 Java 中的斯坦福大学 POS 标记器(由 Kristina Toutanova),它在 GNU 通用公共许可证(v2 或更高版本)下可用,源代码编写得很好并且文档清晰:

http://nlp.stanford.edu/software/tagger.shtml

关于标记的好书是:Daniel Jurafsky, James H. Martin 的 Speech and Language Processing (2nd Edition)


wco*_*len 5

试试Apache OpenNLP.它包括一个POS Tagger工具.您可以从这里下载即用型英语模型.

该文档提供了有关如何从Java应用程序中使用它的详细信息.基本上你需要以下内容:

加载POS模型

InputStream modelIn = null;

try {
  modelIn = new FileInputStream("en-pos-maxent.bin");
  POSModel model = new POSModel(modelIn);
}
catch (IOException e) {
  // Model loading failed, handle the error
  e.printStackTrace();
}
finally {
  if (modelIn != null) {
    try {
      modelIn.close();
    }
    catch (IOException e) {
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

实例化POS标记器

POSTaggerME tagger = new POSTaggerME(model);
Run Code Online (Sandbox Code Playgroud)

执行它

String sent[] = new String[]{"Most", "large", "cities", "in", "the", "US", "had", "morning", "and", "afternoon", "newspapers", "."};          
String tags[] = tagger.tag(sent);
Run Code Online (Sandbox Code Playgroud)

请注意,POS标记符需要一个标记化的句子.Apache OpenNLP还提供了帮助完成这些任务的工具和模型.

如果您需要训练自己的模型,请参阅此文档.