哪个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的实现吗?
进行一些概要分析的尝试。我认为使用发电机可以提高速度。但是,与原始版本相比,改进并不明显。但是,如果您不需要同时使用完整列表,则生成器功能应该更快。
扩展M4rtini's code,我用硬编码的n=2
参数制作了三个附加版本: