>我正在使用斯坦福大学的节,但我找不到任何关于如何加载文档而不是字符串的文档。
例如,对于一个字符串,它的工作原理是这样的:
nlp_pos = stanza.Pipeline('it',processors='tokenize,mwt,pos,lemma,depparse')
doc = nlp_pos("hello how are you")
对于一个文档,我认为它会是这样的:
nlp_pos = stanza.Pipeline('it',processors='tokenize,mwt,pos,lemma,depparse')
filename = "example.txt"
with open(filename, 'r') as f:
doc = f.read()
但它不起作用。什么是替代方案?
下面是一个示例,略微改编自 Stanza 文档。我创建了一个文件句柄,并将其传递给文档 = nlp(....(。警告:我不是在写入原始文件 (Stanza_No_Tags.txt(,而是写入新文件 (Stanza_Tokenized.txt(。扬子晚报.
nlp = stanza.Pipeline(lang='zh', processors='tokenize')
Stanza_doc_open = open('Stanza_No_Tags.txt', 'r').read()
doc = nlp(Stanza_doc_open)
for i, sentence in doc.sentences:
print(f'====== Sentence {i+1} =======', file=open('Stanza_Tokenized.txt', 'a'))
@fpohlmann的答案应该可以,但不会关闭文件句柄。
只需对原始代码片段进行最少的编辑,就可以通过以下方式处理文件
nlp_pos = stanza.Pipeline('it',processors='tokenize,mwt,pos,lemma,depparse')
filename = "example.txt"
with open(filename, 'r') as f:
doc = nlp_pos(f.read())
并且访问注释信息的方式与处理字符串时访问doc
对象的方式相同。实际上,此代码段只是将该文件的全部内容读取为字符串,并将其传递到Stanza中。