快速/优化python中的N-gram实现

问题描述 投票:11回答:3

哪个ngram实现在python中最快?

我尝试剖析nltk和scott的zip(http://locallyoptimal.com/blog/2013/01/20/elegant-n-gram-generation-in-python/):

from nltk.util import ngrams as nltkngram
import this, time

def zipngram(text,n=2):
  return zip(*[text.split()[i:] for i in range(n)])

text = this.s

start = time.time()
nltkngram(text.split(), n=2)
print time.time() - start

start = time.time()
zipngram(text, n=2)
print time.time() - start

[[out]

0.000213146209717
6.50882720947e-05

在python中有更快的实现生成ngram的实现吗?

python nlp nltk information-retrieval n-gram
3个回答
8
投票

进行一些概要分析的尝试。我认为使用发电机可以提高速度。但是,与原始版本相比,改进并不明显。但是,如果您不需要同时使用完整列表,则生成器功能应该更快。


1
投票

扩展M4rtini's code,我用硬编码的n=2参数制作了三个附加版本:


0
投票
© www.soinside.com 2019 - 2024. All rights reserved.