|
|
@ -55,25 +55,17 @@ print >> sys.stderr, "Trie has been built succesfully."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def __cut_all(sentence):
|
|
|
|
def __cut_all(sentence):
|
|
|
|
N = len(sentence)
|
|
|
|
dag = get_DAG(sentence)
|
|
|
|
i,j=0,0
|
|
|
|
old_j = -1
|
|
|
|
p = trie
|
|
|
|
for k,L in dag.iteritems():
|
|
|
|
while i<N:
|
|
|
|
if len(L)==1 and k>old_j:
|
|
|
|
c = sentence[j]
|
|
|
|
yield sentence[k:L[0]+1]
|
|
|
|
if c in p:
|
|
|
|
old_j = L[0]
|
|
|
|
p = p[c]
|
|
|
|
|
|
|
|
if '' in p:
|
|
|
|
|
|
|
|
yield sentence[i:j+1]
|
|
|
|
|
|
|
|
j+=1
|
|
|
|
|
|
|
|
if j>=N:
|
|
|
|
|
|
|
|
i+=1
|
|
|
|
|
|
|
|
j=i
|
|
|
|
|
|
|
|
p=trie
|
|
|
|
|
|
|
|
else:
|
|
|
|
else:
|
|
|
|
p = trie
|
|
|
|
for j in L:
|
|
|
|
i+=1
|
|
|
|
if j>k:
|
|
|
|
j=i
|
|
|
|
yield sentence[k:j+1]
|
|
|
|
|
|
|
|
old_j = j
|
|
|
|
|
|
|
|
|
|
|
|
def calc(sentence,DAG,idx,route):
|
|
|
|
def calc(sentence,DAG,idx,route):
|
|
|
|
N = len(sentence)
|
|
|
|
N = len(sentence)
|
|
|
|