【问题标题】:spacy- why nlp() works for single string while nlp.pipe() works fine for a list of strings?spacy-为什么 nlp() 适用于单个字符串,而 nlp.pipe() 适用于字符串列表?
【发布时间】:2021-03-02 14:21:26
【问题描述】:

我最近在使用 spacy 时遇到了一个奇怪的行为, 这是我处理字符串的时候,

如果字符串是单个字符串对象, 我必须使用 nlp(string),

虽然我必须将 nlp.pipe(a list) 用于由字符串元素组成的列表。

示例如下。

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() 行为有关。

是什么原因?

谢谢。

【问题讨论】:

    标签: python nlp spacy


    【解决方案1】:

    Spacy 这样做是因为生成器效率更高。由于生成器仅在内存效率高于列表时才会被消耗。

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

    此外,您可以在nlp.pipe 中配置批量大小,以根据您的系统优化性能

    使用nlp.pipe 将文本作为流处理并缓冲 批量,而不是一个接一个。这通常效率更高。

    如果您的目标是使用nlp.pipe 处理大量数据流,那么编写流式传输器/生成器以根据需要从数据库/文件系统生成结果要比将所有内容加载到内存中然后处理它们要高效得多减一。

    spacy pipe

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-06
      • 2021-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-06
      • 2015-07-25
      相关资源
      最近更新 更多