Exemple #1
0
bool
Forest::
init_io(RuleSet& ruleSet)
{
	clock_t sec=clock();
	for(int i=0;(size_t)i<_sentence.size();i++)
	{
		Node& node=(*this)[i][i];
		string wrd=_sentence[i];
		pair<RuleSet::RSIter,RuleSet::RSIter> iterPair=ruleSet.query(wrd);
		for(RuleSet::RSIter iter=iterPair.first;iter!=iterPair.second;iter++)
		{
			double ruleScore=iter->second.prob; //when io, we use the original prob, not log
			Label label;
			label.init(iter->second.left,i,i,wrd);
			//label.word()=wrd;
			//jout<<wrd<<endl;
			label.addPreTermScore_io(ruleScore);
			if(node.find(label.nt())==node.end())
				node[label.nt()]=label;
		}
		genUnaryNode_io(ruleSet,(*this)[i][i]);
	}
	initime+=clock()-sec;
	//exit(1);
	return true;
}