5

スタンフォードのCoreNLPシステムによって前処理された文のコーパスがあります。それが提供するものの 1 つは、文の解析ツリー (Constituency ベース) です。(ツリーのように) 描画されたときの解析ツリーは理解できますが、この形式でそれを読み取る方法がわかりません。

例えば:

          (ROOT
          (FRAG
          (NP (NN sent28))
          (: :)
          (S
          (NP (NNP Rome))
          (VP (VBZ is)
          (PP (IN in)
          (NP
          (NP (NNP Lazio) (NN province))
          (CC and)
          (NP
          (NP (NNP Naples))
          (PP (IN in)
          (NP (NNP Campania))))))))
          (. .)))

元の文は次のとおりです。

sent28: Rome is in Lazio province and Naples in Campania .

このツリーをどのように読むべきですか、またはそれを適切に実行するコード (Python で) はありますか? ありがとう。

4

2 に答える 2

11

NLTKには、解析ツリーを読み取るためのクラスがあります: nltk.tree.Tree. 関連するメソッドが呼び出されfromstringます。その後、そのサブツリー、葉などを反復できます...

余談ですがsent28:、パーサーを混乱させるため、このビットを削除することをお勧めします (これも文の一部ではありません)。完全な構文木を取得するのではなく、文の断片だけを取得します。

于 2015-02-23T13:14:37.277 に答える
-3

次のようなスタンフォードパーサーを使用できます。

sentences = parser.raw_parse_sents(["Hello, My name is Melroy.", "What is your name?"])  #probably raw_parse(just a string) or parse_sents(list but has been splited)
for line in sentences:
    for sentence in line:
        ***sentence.draw()***
于 2017-04-21T13:40:04.363 に答える