spacy-为什么nlp()适用于单个字符串而nlp.pipe()适用于字符串列表?

3
我最近在使用spacy时遇到了一种奇怪的行为,即当我处理字符串时, 如果字符串是单个字符串对象,则必须使用nlp(string), 而对于由字符串元素组成的列表,我必须使用nlp.pipe(列表)。
以下是示例。
string='this is a string to be process by nlp'

doc =['this','is','a','string','list','to','be','processed','by','spacy']

stringprocess= list(nlp(string))

listprocess = list(nlp.pipe(doc))

listprocess

stringprocess

为什么会这样呢?我猜想这可能与生成器的nlp.pipe()行为有关。

原因是什么?

谢谢。

1个回答

3

Spacy使用生成器更高效,因为生成器只被消耗一次,所以比列表更节省内存。

根据他们的文档,Spacy会批量处理文本而不是逐个处理,并应用nlp管道。

此外,你可以在nlp.pipe中配置批量大小以优化系统性能。

使用nlp.pipe将文本作为流处理并将其缓冲在批处理中,而不是逐个处理。这通常更加高效。

如果你的目标是使用nlp.pipe处理大量数据流,编写一个流生成器来按需从数据库/文件系统生成结果会比将所有内容加载到内存中再逐个处理更加高效。

spacy pipe


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接