【问题标题】:Count the Number of Each Part-of-Speech Using a POS Tagger使用词性标注器计算每个词性的数量
【发布时间】:2012-11-26 16:24:37
【问题描述】:

我想要计数例如副词,但是对于不同的类型有不同的标签,“_RB”、“_RBR”和“_RBS”。我尝试使用 3 个序列中的子字符串,但这消除了找到更长标签的可能性 - “_RB”与“_RBS”。我在 Java 中使用斯坦福 POS 标记器,但我不知道如何计算每种类型的标记。到目前为止,这是我所拥有的:

  int pos = 0;
  int end = tagged.length() - 1;

  int nouns = 0;
  int adjectives = 0;
  int adverbs = 0;

  while (pos < (end - 1)){
      pos++;
      String sequence = tagged.substring(pos - 1, pos + 2);
      //System.out.println(sequence);
      if (sequence.equals("_NN")){
          nouns++;
      }
      if (sequence.equals("_JJ")){
          adjectives++;
      }
      if (sequence.equals("_RB")){
          adverbs++;
      }
  }

tagged 是标记的字符串。

这是一个示例标记字符串:

This_DT is_VBZ a_DT good_JJ sample_NN sentence_NN ._. Here_RB is_VBZ another_DT good_JJ sample_NN sentence_NN ._.

【问题讨论】:

  • 标签之间的分隔符是什么?
  • 刚刚添加了一个输出样本。

标签: java string text-parsing part-of-speech


【解决方案1】:

在您的情况下,以下(尽管不是最佳)代码可以作为指导

public class Main {
    public static void main(final String[] args) throws Exception {
        final String tagged = "World_NN Big_RBS old_RB stupid_JJ";

        int nouns = 0;
        int adjectives = 0;
        int adverbs = 0;

        final String[] tokens = tagged.split(" ");

        for (final String token : tokens) {
            final int lastUnderscoreIndex = token.lastIndexOf("_");
            final String realToken = token.substring(lastUnderscoreIndex + 1);
            if ("NN".equals(realToken)) {
                nouns++;
            }
            if ("JJ".equals(realToken)) {
                adjectives++;
            }
            if ("RB".equals(realToken) || "RBS".equals(realToken)) {
                adverbs++;
            }
        }

        System.out.println(String.format("Nouns: %d Adjectives: %d, Adverbs: %d", nouns, adjectives, adverbs));
    }
}

还有一个fiddle

【讨论】:

  • realToken是下划线和空格之间的字符串吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多