我需要使用 spacy-pytextrank 来总结文档,在不增加机器资源的情况下使其更快的最佳方法是什么?
我正在考虑使用“并发 futures”来并行计算。然后将 texrank 应用于每个块。我知道通过这种方式 texrank 会独立评估每个块,但如果块足够长,我不认为这是一个问题。
大家有更好的想法吗?
pytextrank
是
spaCy
中的管道组件,因此任何并行处理都需要考虑spaCy
的运行方式及其架构。值得注意的是,每个大文本“块”(即源文档)都有一个 doc
,通过重用 doc
对象进行并行化可能没有意义,而是专注于重用 nlp
对象并通过同时运行多个 doc
管道进行并行化。这就是其他项目处理您所描述的这种情况的方式。作为 pytextrank
的提交者之一,是的,事实上我们一直在寻找利用 Python 中的并发 future 来帮助库内部并行化的方法。此外,我们为客户提供了一个副项目,我们通过
ray
使用类似的 Python 并发,尽管该语言的更高版本中的内置 asyncio
提供了我们所需的大部分功能。坦率地说,可能有更好的方法使用语言模型来总结文本,尽管pytextrank
中的提取方法是无监督的且
快速。我们并没有优先考虑摘要功能的开发;然而,似乎有很多人感兴趣。 了解以下内容会有帮助:在您的用例中,资源在哪里遇到瓶颈?换句话说,多核利用率是否较低,或者应用程序是否受 I/O 限制?然后我们可以优先考虑如何利用语言特性来实现并发。