首页 > 解决方案 > 如何在斯坦福的 Stanza (StanfordNLP) 中加载文档而不是字符串?

问题描述

我正在使用斯坦福的 Stanza,但我找不到任何关于如何加载文档而不是字符串的文档。

例如,对于一个字符串,它的工作方式如下:

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()

但它不起作用。什么是替代方案?

标签: pythonpython-3.xnlpstanford-nlpstanford-stanza

解决方案


@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。


推荐阅读