簡體   English   中英

從 Pandas 系列創建 Python Spacy NLP 對象的最佳方法

[英]Best method for creating Python Spacy NLP objects from a Pandas Series

我想從存儲在 Pandas 數據框列中的 250k 字符串對象中創建 Spacy nlp 對象。 有沒有一種方法可以優化以下“應用”方法,即是否有某種方法可以對 spacy nlp object 的調用進行矢量化?

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)

根據我對 29,071 個字符串的語料庫的測試,比apply更快的方法是使用nlp.pipe

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']))

Output:

apply method: 209.74427151679993
batch method: 51.40181493759155

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM