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抽出に対してのみ実行しましたが、他のルールも追加できるように一般化するにはどうすればよいですか。これを行うために利用できるライブラリがあることは知っていますが、これを手動で行いたいと思いました。