本文整理汇总了C++中Segment::ToTopologicalOrderedStruct方法的典型用法代码示例。如果您正苦于以下问题:C++ Segment::ToTopologicalOrderedStruct方法的具体用法?C++ Segment::ToTopologicalOrderedStruct怎么用?C++ Segment::ToTopologicalOrderedStruct使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Segment
的用法示例。
在下文中一共展示了Segment::ToTopologicalOrderedStruct方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: testToTopologicalOrderedStruct
/**
* Test the output a plan version of the segment method.
* TODO: Need to be more tough.
*/
void TestSegment::testToTopologicalOrderedStruct()
{
Segment* seg = Segment::CreateWithEndTime(0, 20000, NULL);
/* The following graph struct is tested.
* ->1-3-4-5->
* / \
* ->2 6->
*/
Token* tok1 = Token::CreateWithEndTime(0, 0, seg);
Token* tok2 = Token::CreateWithEndTime(0, 0, seg);
Token* tok3 = Token::CreateWithEndTime(0, 0, seg);
Token* tok4 = Token::CreateWithEndTime(0, 0, seg);
Token* tok5 = Token::CreateWithEndTime(0, 0, seg);
Token* tok6 = Token::CreateWithEndTime(0, 0, seg);
seg->AddFirstToken(tok1);
seg->AddFirstToken(tok2);
tok1->AddNextToken(tok3);
tok2->AddNextToken(tok4);
tok3->AddPrecToken(tok1);
tok3->AddNextToken(tok4);
tok4->AddPrecToken(tok2);
tok4->AddPrecToken(tok3);
tok4->AddNextToken(tok5);
tok4->AddNextToken(tok6);
tok5->AddPrecToken(tok4);
tok6->AddPrecToken(tok4);
seg->AddLastToken(tok5);
seg->AddLastToken(tok6);
vector<Token*> topo_seg = seg->ToTopologicalOrderedStruct();
// the size is suppose to be +1 (empty token at first)
assert(topo_seg.size() == 6);
//TODO put some more here
}
示例2: TestInsertions
void AlignmentTest::TestInsertions() {
Alignment* ali;
SegmentsGroup* sg;
std::size_t testIndex = 2; // simple insertion, one segment
ali = GetAlignmentFor(testIndex, &sg);
Segment* ref = sg->GetReference(0)[0];
Segment* hyp = sg->GetHypothesis(0)[0];
vector< Token* > refs = ref->ToTopologicalOrderedStruct();
vector< Token* > hyps = hyp->ToTopologicalOrderedStruct();
cout << "Single Insertion tests:" << endl;
cout << "\tCheck speech and segment...";
cout.flush();
Speech* refSpeech = ref->GetParentSpeech();
AlignedSpeech* asp = ali->GetOrCreateAlignedSpeechFor(refSpeech, false);
assert(refSpeech == asp->GetReferenceSpeech());
AlignedSegment* asg = asp->GetOrCreateAlignedSegmentFor(ref, false);
assert(ref == asg->GetReferenceSegment());
assert(asg->GetTokenAlignmentCount() == 3);
cout << " OK." << endl;
cout << "\tCheck tokens...";
cout.flush();
TokenAlignment* ta = asg->GetTokenAlignmentAt(0);
assert(ta->GetReferenceToken() == refs[0]);
assert(ta->GetTokenFor("hyp") == hyps[0]);
ta = asg->GetTokenAlignmentAt(1);
assert(ta->GetReferenceToken() == NULL);
assert(ta->GetTokenFor("hyp") == hyps[1]);
ta = asg->GetTokenAlignmentAt(2);
assert(ta->GetReferenceToken() == refs[1]);
assert(ta->GetTokenFor("hyp") == hyps[2]);
cout << " OK." << endl;
testIndex = 4; // only insertion, one segment
ali = GetAlignmentFor(testIndex, &sg);
ref = sg->GetReference(0)[0];
hyp = sg->GetHypothesis(0)[0];
refs = ref->ToTopologicalOrderedStruct();
hyps = hyp->ToTopologicalOrderedStruct();
cout << "Only Insertion tests:" << endl;
cout << "\tCheck speech and segment...";
cout.flush();
refSpeech = ref->GetParentSpeech();
asp = ali->GetOrCreateAlignedSpeechFor(refSpeech, false);
assert(refSpeech == asp->GetReferenceSpeech());
asg = asp->GetOrCreateAlignedSegmentFor(ref, false);
assert(ref == asg->GetReferenceSegment());
assert(asg->GetTokenAlignmentCount() == 3);
cout << " OK." << endl;
cout << "\tCheck tokens...";
cout.flush();
ta = asg->GetTokenAlignmentAt(0);
assert(ta->GetReferenceToken() == NULL);
assert(ta->GetTokenFor("hyp") == hyps[0]);
ta = asg->GetTokenAlignmentAt(1);
assert(ta->GetReferenceToken() == NULL);
assert(ta->GetTokenFor("hyp") == hyps[1]);
ta = asg->GetTokenAlignmentAt(2);
assert(ta->GetReferenceToken() == NULL);
assert(ta->GetTokenFor("hyp") == hyps[2]);
cout << " OK." << endl;
delete ali;
delete sg;
}