繁体   English   中英

使用 Pandas 和 spaCy 进行分词

[英]Tokenizing using Pandas and spaCy

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

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

但肯定会感谢一些帮助/资源。

此处提供完整(尽管杂乱)代码

我从来没有使用过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))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM