将大文本提供给 PyTextRank

Posted

技术标签:

【中文标题】将大文本提供给 PyTextRank【英文标题】:Feed large text to PyTextRank 【发布时间】:2021-12-08 13:58:32 【问题描述】:

我想使用PyTextRank 进行关键词提取。如何将 500 万个文档(每个文档由几个段落组成)馈送到包中?

这是我在official tutorial 上看到的示例。

text = "Compatibility of systems of linear constraints over the set of natural numbers. Criteria of compatibility of a system of linear Diophantine equations, strict inequations, and nonstrict inequations are considered. Upper bounds for components of a minimal set of solutions and algorithms of construction of minimal generating sets of solutions for all types of systems are given. These criteria and the corresponding algorithms for constructing a minimal supporting set of solutions can be used in solving all the considered types systems and systems of mixed types.\n"
doc = nlp(text)
for phrase in doc._.phrases:
    ic(phrase.rank, phrase.count, phrase.text)
    ic(phrase.chunks)

我是否只能将数百万个文档连接成一个字符串并将其传递给nlp(text)?我不认为我可以使用nlp.pipe(texts),因为我想通过计算所有文档中的单词/短语来创建一个网络。

【问题讨论】:

【参考方案1】:

不,相反,并行运行这些任务几乎肯定会更好。 pytextrank 的许多用例都使用 Spark、Dask、Ray 等,通过 spaCy 管道和 pytestrank 并行运行文档以提取实体。 有关 Ray 并行化的示例,请参阅https://github.com/Coleridge-Initiative/rclc/blob/4d5347d8d1ac2693901966d6dd6905ba14133f89/bin/index_phrases.py#L45

一个问题是您如何将提取的实体与文档相关联?这些是否被收集到数据集,或者可能是数据库或键/值存储中?

无论如何收集这些结果,您都可以构建一个同时出现的短语的图表,还可以包含额外的语义来帮助构建结果。为此类用例创建了一个姊妹项目kglabhttps://github.com/DerwenAI/kglab。 kglab 项目附带的 Jupyter 笔记本中有一些示例;见https://derwen.ai/docs/kgl/tutorial/

FWIW,我们将在 ODSC West 上提供有关使用 kglabpytextrank 的教程,并且有几个在线视频(在 Graph Data Science 下)用于以前的会议教程。我们还通过https://www.knowledgegraph.tech/ 提供每月的公共办公时间——请在 Tw 上给我发消息 @pacoid 了解详情。

【讨论】:

以上是关于将大文本提供给 PyTextRank的主要内容,如果未能解决你的问题,请参考以下文章

将大文本文件加载到richtextbox c# [重复]

使用 Python 按行号将大文本文件拆分为较小的文本文件

sh 将大文件拆分为小文本文件(按行数)

如何将大文本输入 iOS 应用程序?

如何将大文本文件拆分为行数相等的小文件?

tds_fdw PostgreSQL 外部表将大文本截断为 2048 个字符