当要解析的文档包含多个句子时,我有一个关于格式化依赖解析模块的输出的查询。
Stanza 手册( https://stanfordnlp.github.io/stanza/depparse.html )中使用依赖解析模块的示例之一如下:
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')
这个例子只包含一个句子。我想为包含多个句子的文档修改此代码。更具体地说,我想修改代码,以便所有行都包含对相关句子编号的引用。
以下是我自己想出的:
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')
这似乎工作正常。但是,鉴于我没有编写代码的经验,我非常感谢知道我的想法是否可行,或者您是否会建议做一些不同的事情。
提前感谢您的时间和帮助。