我正在尝试使用下面提到的规则来提取短语,这些规则已被 POS 标记
1) NNP -> NNP (-> 表示后跟) 2) NNP -> CC -> NNP 3) VP -> NP 等。
我以这种方式编写了代码,有人可以告诉我如何以更好的方式做。
List<String> nounPhrases = new ArrayList<String>();
for (List<HasWord> sentence : documentPreprocessor) {
//System.out.println(sentence.toString());
System.out.println(Sentence.listToString(sentence, false));
List<TaggedWord> tSentence = tagger.tagSentence(sentence);
String lastTag = null, lastWord = null;
for (TaggedWord taggedWord : tSentence) {
if (lastTag != null && taggedWord.tag().equalsIgnoreCase("NNP") && lastTag.equalsIgnoreCase("NNP")) {
nounPhrases.add(taggedWord.word() + " " + lastWord);
//System.out.println(taggedWord.word() + " " + lastWord);
}
lastTag = taggedWord.tag();
lastWord = taggedWord.word();
}
}
在上面的代码中,我只对 NNP 进行了 NNP 提取,我如何对其进行概括,以便我也可以添加其他规则。我知道有库可用于执行此操作,但想手动执行此操作。