使用 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。
我从来没有使用过 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))
我正在处理我的第一个 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。
我从来没有使用过 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))