NLTK を使用して名詞句を識別しようとしていますが、正規表現についてはまだ少し緑色です。
私はもともと次のような正規表現を使用していました:
NP: {<PP\$>?<JJ.*>*<NN.*>+}
しかし、前置詞で終わる表現を取得し続けることがわかりました。そのため、前置詞「for」で終わる「Demonstration projects for」などは一致しており、これは望ましくありません。(上記の構文を使用しても、まだ方法がわかりません---私が知る限り、これは常に少なくとも1つの名詞で終わる必要がありますよね?)
そこで、量指定子を次のように変更して、量指定子を遅延型に減らしました。
NP: {<PP\$>?<JJ.*>*<NN.*>+?}
しかし今では、「ニューオーリンズ」ではなく「オーリンズ」のような一致が得られます。フレーズがまったく一致していないようです。
最後に、先読み (ここで学んだこと) を使用して、端末の前置詞を明示的に削除しようとしました。
NP: {((?!<IN>$)(<PP\$>?<JJ.*>*<NN.*>+))+}
これはまったく効果がありませんでした---「Demonstration projects for」のようなものをまだ一致として取得しています。名詞句に終端前置詞がないようにするにはどうすればよいですか?
名詞句を取得するためのより簡単で最適化された方法があれば、それもありがたいです!