私は、NLTKブックの第7章に従って、NLTKのカスケードチャンカーの使用方法を理解しようとしています。残念ながら、重要なチャンク対策を実行するときにいくつかの問題が発生します。
このフレーズから始めましょう:
"adventure movies between 2000 and 2015 featuring performances by daniel craig"
次の文法を使用すると、関連するすべてのNPを見つけることができます。
grammar = "NP: {<DT>?<JJ>*<NN.*>+}"
ただし、NLTKを使用してネストされた構造を構築する方法がわかりません。この本は次の形式を示していますが、明らかにいくつか欠けているものがあります(たとえば、実際に複数のルールをどのように指定するのですか?):
grammar = r"""
NP: {<DT|JJ|NN.*>+} # Chunk sequences of DT, JJ, NN
PP: {<IN><NP>} # Chunk prepositions followed by NP
VP: {<VB.*><NP|PP|CLAUSE>+$} # Chunk verbs and their arguments
CLAUSE: {<NP><VP>} # Chunk NP, VP
"""
私の場合、私は次のようなことをしたいと思います:
grammar = "MEDIA: {<DT>?<JJ>*<NN.*>+}
RELATION: {<V.*>}{<DT>?<JJ>*<NN.*>+}
ENTITY: {<NN.*>}"
CFGがこれに適しているかもしれませんが、この機能に対するNLTKのサポートに気付いたのは約5分前(この質問から)であり、機能に関する多くのドキュメントが存在しないようです。
それで、タスクにカスケードされたチャンカーを使用したい場合、どの構文を使用する必要がありますか?さらに、チャンカーを使用するときに、特定の単語(「directed」または「acted」など)を指定することは可能ですか?