ApacheのOpenNLPを使用してコマンドパーサーを作成しています。問題は、OpenNLPが一部のコマンドを名詞句として認識することです。たとえば、「open door」のようなものを解析すると、OpenNLPは私に
(NP (JJ open) (NN door))
。言い換えれば、それはそのフレーズを「ドアを開ける」ではなく「ドアを開ける」と見なします。次のように解析したい
(VP (VB open) (NP (NN door)))
。 「ドアを開ける」を解析するとVPが生成されますが、限定詞を使用している人を当てにすることはできません。
私は現在、間違った解析ツリーで手術を実行する方法を見つけようとしていますが、APIドキュメントが大幅に不足しています。
多くの調査の後、私はNLTKを使用して同じ問題を抱えている人に出くわしました。コマンドの前に「they」のような代名詞を追加して、パーサーに入力を動詞句として表示させることにより、NLTKを「ハッキング」するようにアドバイスされました。だから私はOpenNLPに「彼らはドアを開ける」と言って戻ってきます
(S (NP (PRP they)) (VP (VBP open) (NP (NN door))))
、その時点で動詞句を抽出できます。それは確かに理想的ではありません!しかし今のところ、それは私の要件で機能します。