斯坦福POS标记:将单词标记为单数名词(NN)

时间:2013-09-17 06:05:37

标签: java tagging stanford-nlp pos-tagger

public class Sample {
   public static void main(String[] args) throws IOException,
        ClassNotFoundException {

    // Initialize the tagger
    MaxentTagger tagger = new MaxentTagger("taggers/wsj-0-18-bidirectional-nodistsim.tagger");

    // The sample string
    String sample = "I am a good boy";
    String[] tokens = sample.split(" ");

    for(int i=0;i<tokens.length;i++){
        String tagged = tagger.tagString(tokens[i]);
         System.out.println(tagged);
    }

    // The tagged string
    //String tagged = tagger.tagTokenizedString(sample);

    // Output the result
    //System.out.println(tagged.startsWith("N"));

}
}

输出:

I_PRP 
am_VB 
a_DT 
good_JJ 
boy_NN

问: 我需要在上面的程序中打印boy作为输出,因为它被标记为单数名词(NN)

2 个答案:

答案 0 :(得分:1)

得到了解决方案:

MaxentTagger tagger = new MaxentTagger(“taggers / wsj-0-18-bidirectional-nodistsim.tagger”);

    // The sample string
    String s = "It implements all optional list operations and it also permits all elements, includes null.";
    String sample = s.replaceAll("\\W", " ");

    // The tagged string
    String tagged = tagger.tagTokenizedString(sample);

    // Output the result
    // System.out.println(tagged);
    String[] x = tagged.split(" ");
    ArrayList<String> list = new ArrayList<String>();  

    for(int i=0;i<x.length;i++)
    {
        if (x[i].substring(x[i].lastIndexOf("_")+1).startsWith("N"))
        {
            list.add(x[i].split("_")[0]);
        }
    }
    for(int i=0;i<list.size();i++)
    {
        System.out.println(list.get(i));
    }
}

<强>输出:

列表

操作

元素

答案 1 :(得分:0)

您可以先尝试将其放入数组中,然后获取包含NN的数据。

或其他解决方案,使用哈希映射也可以更容易地获取要打印的密钥。