Python Spacy を使用して、複数の主語受動態文からエンティティを抽出しようとしています。
文 = 「ジョンとジェニーはデビッドによって犯罪で告発された」
私の意図は、文から「ジョンとジェニー」の両方をnsubjpassと.ent_として抽出することです。
ただし、「John」を nsubjpass として抽出することしかできません。
両方を抽出する方法は?
John は .ents のエンティティとして検出されますが、Jenny は nsubjpass ではなく conj と見なされることに注意してください。それを改善する方法は?
コード
each_sentence3 = "John and Jenny were accused of crimes by David"
doc=nlp(each_sentence3)
passive_toks=[tok for tok in doc if (tok.dep_ == "nsubjpass") ]
if passive_toks != []:
print(passive_toks)
結果:
[John]
エンティティ リストには次のものが表示されます。
コード
`
print(list(doc.ents)
結果
[John, Jenny, David]
ここで、文全体を調べると、次のようになります。
コード:
for tok in doc:
print(tok, tok.dep_)
結果
John nsubjpass
and cc
Jenny conj
were auxpass
accused ROOT
of prep
crimes pobj
by agent
David pobj
2 番目の受動的な主語 Jenny は、Spacy では nsubjpass ではなく conj として識別されることに注意してください。