From ef0c0284ff70077f4988d8445362b3ccd42de81e Mon Sep 17 00:00:00 2001 From: fxsjy Date: Tue, 9 Oct 2012 06:37:01 +0800 Subject: [PATCH] improve speed --- jieba/__init__.py | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/jieba/__init__.py b/jieba/__init__.py index c189c0f..a47dfbf 100644 --- a/jieba/__init__.py +++ b/jieba/__init__.py @@ -57,16 +57,13 @@ def __cut_all(sentence): i+=1 j=i -def calc(sentence,DAG,idx,route): - if idx in route: - return route[idx] - if idx>=len(sentence): - return (1.0,'') - next = DAG[idx] - best = max([ ( FREQ.get(sentence[idx:x+1],min_freq) * calc(sentence,DAG,x+1,route=route)[0],x )for x in next ]) - route[idx]=best - return best +def calc(sentence,DAG,idx,route): + N = len(sentence) + route[N] = (1.0,'') + for idx in xrange(N-1,-1,-1): + candidates = [ ( FREQ.get(sentence[idx:x+1],min_freq) * route[x+1][0],x ) for x in DAG[idx] ] + route[idx] = max(candidates) def __cut_DAG(sentence): N = len(sentence)