首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从Pandas Series创建Python Spacy NLP对象的最佳方法

从Pandas Series创建Python Spacy NLP对象的最佳方法
EN

Stack Overflow用户
提问于 2020-07-23 23:25:50
回答 1查看 367关注 0票数 1

我想从存储在Pandas数据框列中的25万字符串对象中创建Spacy nlp对象。有没有办法优化下面的“应用”方法,也就是说,有没有办法向量化spacy nlp对象的调用?

代码语言:javascript
运行
复制
import pandas as pd
import spacy

nlp = spacy.load("en_core_web_sm")

df = pd.DataFrame({"id": [1, 2, 3], "text": ["this is a text", "another easy one", "oh you come on"]})

df["nlp"] = df.apply(lambda x: nlp(x.text), axis=1)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-08 12:21:19

根据我在29,071个字符串的语料库上的测试,使用nlp.pipe时比apply更快的方法

代码语言:javascript
运行
复制
import pandas as pd
import spacy
from time import time
from nltk.corpus import webtext

nlp = spacy.load("en_core_web_sm")  
texts = webtext.raw().split('\n')
df = pd.DataFrame({"text":texts})

#apply method
start = time()
df["nlp"] = df.apply(lambda x: nlp(x.text), axis=1)
end = time()
print(end - start)

# batch method
start = time()
df["nlp"] = [doc for doc in nlp.pipe(df["text"].tolist())]
end = time()
print(end - start)
#print(Counter([tok.dep_ for tok in doc if tok.pos_=='VERB']))

输出:

代码语言:javascript
运行
复制
apply method: 209.74427151679993
batch method: 51.40181493759155
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63057742

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档