使用 Pandas 和 spaCy 进行分词

Tokenizing using Pandas and spaCy

我正在处理我的第一个 Python 项目并且拥有相当大的数据集(数千行的 10 行)。我需要在 5 个文本列(每个 'cell' 的多个文本句子)上做一些 nlp(聚类,分类)并且一直在使用 pandas 到 organize/build 数据集。我希望对所有 nlp 使用 spaCy,但不太清楚如何标记我的专栏中的文本。我已经阅读了一堆 spaCy 文档,并四处搜索,但我发现的所有示例都是针对单个句子或单词的 - 而不是 pandas df.

中的 75K 行

我试过类似的东西: df['new_col'] = [token for token in (df['col'])]

但肯定会感激一些 help/resources。

full (albeit messy) code available here

我从来没有使用过 spaCy(nltk 总是为我完成工作)但是从文档中看了一下它看起来应该可以工作:

import spacy
nlp = spacy.load('en')

df['new_col'] = df['text'].apply(lambda x: nlp(x))

请注意,nlp 默认情况下运行整个 SpaCy 管道,其中包括词性标记、解析和命名实体识别。您可以通过使用 nlp.tokenizer(x) 而不是 nlp(x) 或在加载模型时禁用部分管道来显着加快代码速度。例如。 nlp = spacy.load('en', parser=False, entity=False).

使用 pandarallel 使其更快

import spacy
from pandarallel import pandarallel

pandarallel.initialize(progress_bar=True)    
nlp = spacy.load("en_core_web_sm")

df['new_col'] = df['text'].parallel_apply(lambda x: nlp(x))