dynamic_program.cc (speech_tools-2.4-release) | : | dynamic_program.cc (speech_tools-2.5.0-release) | ||
---|---|---|---|---|
skipping to change at line 177 | skipping to change at line 177 | |||
l1 = lexical.length() + 1; | l1 = lexical.length() + 1; | |||
l2 = surface.length() + 1; | l2 = surface.length() + 1; | |||
vr1.resize(l1); | vr1.resize(l1); | |||
vr2.resize(l2); | vr2.resize(l2); | |||
// prepend null_syms | // prepend null_syms | |||
vr1[0] = null_sym; | vr1[0] = null_sym; | |||
vr2[0] = null_sym; | vr2[0] = null_sym; | |||
for (p=lexical.head(),i=1; p != 0; p = p->next(),i++) | for (p=lexical.head(),i=1; p != 0; p = inext(p),i++) | |||
vr1[i] = p; | vr1[i] = p; | |||
for (p=surface.head(),i=1; p != 0; p = p->next(),i++) | for (p=surface.head(),i=1; p != 0; p = inext(p),i++) | |||
vr2[i] = p; | vr2[i] = p; | |||
DP_path_i.resize(l1,l2); | DP_path_i.resize(l1,l2); | |||
DP_path_j.resize(l1,l2); | DP_path_j.resize(l1,l2); | |||
/* | /* | |||
cerr << "Pruning" << endl; | cerr << "Pruning" << endl; | |||
for(i=0;i<l1;i++) | for(i=0;i<l1;i++) | |||
{ | { | |||
for(j=0;j<l2;j++) | for(j=0;j<l2;j++) | |||
skipping to change at line 217 | skipping to change at line 217 | |||
if(!dp_sub(l1-1,l2-1, | if(!dp_sub(l1-1,l2-1, | |||
vr1,vr2, | vr1,vr2, | |||
DP_path_i,DP_path_j, | DP_path_i,DP_path_j, | |||
lcf,lpf,null_sym,cost)) | lcf,lpf,null_sym,cost)) | |||
{ | { | |||
cerr << "No path found (over pruning ?)" << endl; | cerr << "No path found (over pruning ?)" << endl; | |||
return FALSE; | return FALSE; | |||
} | } | |||
// make somewhere to record the relations | // make somewhere to record the relations | |||
//utt.create_relation("Match"); | //utt.create_relation("Match"); | |||
for (p = lexical.head(); p; p = p->next()) | for (p = lexical.head(); p; p = inext(p)) | |||
match.append(p); | match.append(p); | |||
/* | /* | |||
for(i=0;i<l1;i++) | for(i=0;i<l1;i++) | |||
{ | { | |||
for(j=0;j<l2;j++) | for(j=0;j<l2;j++) | |||
cerr << i << "," << j << "=[" << DP_path_i(i,j) << "," << DP_path_j(i ,j) << "] "; | cerr << i << "," << j << "=[" << DP_path_i(i,j) << "," << DP_path_j(i ,j) << "] "; | |||
cerr << endl; | cerr << endl; | |||
} | } | |||
cerr << endl; | cerr << endl; | |||
*/ | */ | |||
trace_back_and_link(l1-1,l2-1, | trace_back_and_link(l1-1,l2-1, | |||
match.last(), | match.rlast(), | |||
surface.last(), | surface.rlast(), | |||
DP_path_i,DP_path_j,null_sym); | DP_path_i,DP_path_j,null_sym); | |||
return TRUE; | return TRUE; | |||
} | } | |||
bool dp_sub(int i, int j, | bool dp_sub(int i, int j, | |||
const EST_Item_ptr_Vector &vr1, | const EST_Item_ptr_Vector &vr1, | |||
const EST_Item_ptr_Vector &vr2, | const EST_Item_ptr_Vector &vr2, | |||
EST_IMatrix &DP_path_i, EST_IMatrix &DP_path_j, | EST_IMatrix &DP_path_i, EST_IMatrix &DP_path_j, | |||
local_cost_function lcf, | local_cost_function lcf, | |||
skipping to change at line 392 | skipping to change at line 392 | |||
// reached start | // reached start | |||
return; | return; | |||
if(DP_path_i(i,j) == i-1) | if(DP_path_i(i,j) == i-1) | |||
{ | { | |||
if(DP_path_j(i,j) == j-1) | if(DP_path_j(i,j) == j-1) | |||
{ | { | |||
// match, or substitution | // match, or substitution | |||
//cerr << "sub " << p1->name() << " with " << p2->name() << endl; | //cerr << "sub " << p1->name() << " with " << p2->name() << endl; | |||
p1->append_daughter(p2); | p1->append_daughter(p2); | |||
p1=p1->prev(); | p1=iprev(p1); | |||
p2=p2->prev(); | p2=iprev(p2); | |||
} | } | |||
else | else | |||
// deletion | // deletion | |||
p1=p1->prev(); | p1=iprev(p1); | |||
} | } | |||
else | else | |||
{ | { | |||
// insertion | // insertion | |||
// p1->append_daughter(p2); // decorative | // p1->append_daughter(p2); // decorative | |||
p2=p2->prev(); | p2=iprev(p2); | |||
} | } | |||
trace_back_and_link(DP_path_i(i,j), DP_path_j(i,j), | trace_back_and_link(DP_path_i(i,j), DP_path_j(i,j), | |||
p1,p2, | p1,p2, | |||
DP_path_i,DP_path_j, | DP_path_i,DP_path_j, | |||
null_sym); | null_sym); | |||
} | } | |||
End of changes. 7 change blocks. | ||||
9 lines changed or deleted | 9 lines changed or added |