我有以下代码在目录中打开文件,在它们上运行spaCy NLP,输出依赖项解析信息到新目录中的文件中。
import spacy, os
nlp = spacy.load('en')
path1 = 'C:/Path/to/my/input'
path2 = '../output'
for file in os.listdir(path1):
with open(file, encoding='utf-8') as text:
txt = text.read()
doc = nlp(txt)
for sent in doc.sents:
f = open(path2 + '/' + file, 'a+')
for token in sent:
f.write(file + '\t' + str(token.dep_) + '\t' + str(token.head) + '\t' + str(token.right_edge) + '\n')
f.close()
麻烦的是,这不会保留输出文件中依赖项的顺序。我似乎无法在API文档中找到对字符位置的任何引用。
答案 0 :(得分:1)
字符索引位于token.idx
。单词索引位于token.i
。我知道这不是特别直观。
代币也按位置进行比较,因此您可以这样做:
for child in sent:
word1, word2 = sorted((child, child.head))
这将为您提供按文档顺序排列的每个依赖关系弧。我不确定你在那里尝试用右边缘做什么,所以我不确定这是否符合你的要求。