解析対象のドキュメントに複数の文が含まれている場合に、依存関係解析モジュールの出力をフォーマットする方法について質問があります。
Stanza マニュアル ( https://stanfordnlp.github.io/stanza/depparse.html ) で依存関係解析モジュールを使用する例の 1 つを次に示します。
import stanza
nlp = stanza.Pipeline(lang='fr', processors='tokenize,mwt,pos,lemma,depparse')
doc = nlp('Nous avons atteint la fin du sentier.')
print(*[f'id: {word.id}\tword: {word.text}\thead id: {word.head}\thead: {sent.words[word.head-1].text if word.head > 0 else "root"}\tdeprel: {word.deprel}' for sent in doc.sentences for word in sent.words], sep='\n')
この例には、1 つの文のみが含まれています。複数の文を含むドキュメント用にこのコードを修正したいと思います。より具体的には、すべての行に関連する文番号への参照が含まれるようにコードを修正したいと思います。
以下は私自身が思いついたものです:
import stanza
nlp = stanza.Pipeline(lang='en', processors='tokenize,mwt,pos,lemma,depparse ')
doc = nlp("Chris Manning teaches at Stanford University. He lives in the Bay Area.")
for i, sentence in enumerate(doc.sentences):
print(*[f'sentence: {i+1}\tid: {word.id}\tword: {word.text}\thead id: {word.head}\thead: {sentence.words[word.head-1].text if word.head > 0 else "root"}\tdeprel: {word.deprel}' for word in sentence.words], sep='\n')
これは正常に動作しているようです。しかし、私はコードを書いた経験がほとんどないので、私が思いついたことが大丈夫かどうか、または別のことをお勧めするかどうかを教えていただければ幸いです.
どうぞよろしくお願いいたします。