使用 Python 和 Spacy 从列中添加列

Posted

技术标签:

【中文标题】使用 Python 和 Spacy 从列中添加列【英文标题】:Add column from column using Python and Spacy 【发布时间】:2022-01-23 12:31:44 【问题描述】:

我有一个 BigQuery 数据仓库,其中包含来自 mongodb 数据库的所有数据,这些数据每天同步一次。

我想在我的一个表中添加一列,该列是另一列的清理 + lemmatized 版本(类型是字符串)。我不能用 DBT 做到这一点,因为我需要使用 python 库 Spacy。我怎样才能在我的表上运行这样的转换,而不必在本地获取所有数据并在 bigquery 上发送 10M UPDATE ?是否有一些 GCP 工具可以针对诸如数据流之类的 bigquery 运行 python 函数?

更一般地说,当 DBT 等工具不够用时,如何转换数据?

感谢您的帮助!

【问题讨论】:

您考虑过创建视图吗? spaCy 库可以与 Dataflow 管道一起使用。您可以查看此链接以在 Dataflow 中创建pipeline。此外,正如stack thread 中所讨论的,对于像这样的大型 NLP 作业,最好将较大的作业拆分为较小的作业。 嗨@Agudolive,如果我的回答解决了您的问题,请考虑接受并投票。如果没有,请告诉我,以便我改进答案。 【参考方案1】:

您可以尝试 Dataflow 批处理以满足您的要求,因为 Dataflow 是一项完全托管的服务,无需在本地下载数据即可在您的表上运行转换,并且 spaCy 库可以与 Dataflow pipelines 一起使用。尽管 Bigquery 和 Dataflow 是一种可以处理大量数据的托管服务,但最好将较大的作业拆分为较小的作业用于较大的 NLP 作业,如 here 所述。

注意 - 由于您要添加一个列,该列是表中列的词形还原和清理版本,因此最好创建一个新的目标表。

【讨论】:

您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。 你知道如何在 DataFlow 上运行 Spacy 管道吗?使用常规的nlp("text") 效率不是很高 spaCy 只能与使用 nlp 的数据流一起使用。为了高效处理,您可以禁用不需要的组件,并使用 nlp.pipe 将文本作为流处理并批量缓冲它们。但是,如果您正在执行多处理并使用大型模型,那么它会产生开销并且可能需要时间来完成任务。 此外,这是对原始问题的新问题。所以,我会建议为同样的打开一个新线程。

以上是关于使用 Python 和 Spacy 从列中添加列的主要内容,如果未能解决你的问题,请参考以下文章

Python - 从列中提取/复制分隔文本到新列 xlsx

在python pandas中groupby之后从列中填充缺失的行

从列中搜索行(而不是 |)上的一组值

使用 SSIS 从列中删除特殊字符 " 和 '

PANDAS 从列中找到确切的给定字符串/单词

Excel从列中提取和平均值