在熊猫数据框架中加速NLTK POS Tagger

时间:2015-05-09 23:43:08

标签: python pandas nltk stanford-nlp pos-tagger

所以我试图在pandas数据帧列上使用nltk Stanford POS标记器。它是一列字符串,我试图提取每个字符串中的名词数量。这就是我所拥有的:

from nltk.tag.stanford import POSTagger
from collections import Counter
import os
java_path = "C:/Program Files (x86)/Java/jre1.8.0_45/bin/java.exe"
os.environ['JAVAHOME'] = java_path
st = POSTagger('.../stanford-postagger-2015-04-20/models/english-left3words-distsim.tagger', 
                '.../stanford-postagger-2015-04-20/stanford-postagger.jar')

def noun_count(x):
    listoflists = st.tag(x.split())
    flat = [y for z in listoflists for y in z]
    POS = [row[1] for row in flat]
    c = Counter(POS)
    nouns = c['NN']+c['NNS']+c['NNP']+c['NNPS']
    return nouns

然后我尝试使用apply在数据帧上运行它来创建一个新列。

df['noun_count'] = df['string'].apply(lambda row: noun_count(row),1)

它确实有效......过了一会儿。比如,至少一个小时,可能更长,我在那之后就停止了观看。有没有办法加快速度?我注意到的是它似乎调用.jar文件并为每个条目关闭它,其中我有很多(任务管理器一直显示java启动和停止)。任何使这项工作更快的想法?

0 个答案:

没有答案