示例#1
0
void ShdCrfTagger::backtrack(vynode_t *p, label_t& labels)
{
   for (; p != NULL; p = p->p)
   {
      pair<int, int> label;
      label.first = p->h;
      label.second = p->l;
      labels.push_back(label);
   }
   reverse( labels.begin(), labels.end() );
}
示例#2
0
void ShdCrfTagger::tagging(sequence *s, label_t& ls)
{
   instance_t ins;
   this->ext(s, ins);
   // build lattice
   int length = ins.size();
   vlattice_t l(length);
   this->initlattice(l, ins);
   // backtrack pointer
   vynode_t *bt = this->viterbi(l);
   ls.resize(length);
   this->backtrack(bt, ls);
}
示例#3
0
void builder::node(label_t label, bool add_space) {
  if (!label || !*label)
    return;

  auto text = label->get();

  if (label->m_maxlen > 0 && text.length() > label->m_maxlen) {
    text = text.substr(0, label->m_maxlen) + "...";
  }

  if ((label->m_overline.empty() && m_counters[syntaxtag::o] > 0) ||
      (m_counters[syntaxtag::o] > 0 && label->m_margin > 0))
    overline_close(true);
  if ((label->m_underline.empty() && m_counters[syntaxtag::u] > 0) ||
      (m_counters[syntaxtag::u] > 0 && label->m_margin > 0))
    underline_close(true);

  if (label->m_margin > 0)
    space(label->m_margin);

  if (!label->m_overline.empty())
    overline(label->m_overline);
  if (!label->m_underline.empty())
    underline(label->m_underline);

  background(label->m_background);
  color(label->m_foreground);

  if (label->m_padding > 0)
    space(label->m_padding);

  node(text, label->m_font, add_space);

  if (label->m_padding > 0)
    space(label->m_padding);

  color_close(m_lazy && label->m_margin > 0);
  background_close(m_lazy && label->m_margin > 0);

  if (!label->m_underline.empty() || (label->m_margin > 0 && m_counters[syntaxtag::u] > 0))
    underline_close(m_lazy && label->m_margin > 0);
  if (!label->m_overline.empty() || (label->m_margin > 0 && m_counters[syntaxtag::o] > 0))
    overline_close(m_lazy && label->m_margin > 0);

  if (label->m_margin > 0)
    space(label->m_margin);
}
示例#4
0
CLabel::CLabel(CDataStorage &datastore, const label_t& labeldef) :
	CRecord(datastore)
{
	SetRecordType(labeldef.GetInSST() ? RECTYPE_LABELSST : RECTYPE_LABEL);
	AddValue16((unsigned16_t)labeldef.GetRow());
	AddValue16((unsigned16_t)labeldef.GetCol());
	AddValue16(labeldef.GetXFIndex());
	if(labeldef.GetInSST()) {
		size_t index = labeldef.GetGlobalRecords().GetLabelSSTIndex(labeldef);
		AddValue32(index);
	} else {
		AddUnicodeString(labeldef.GetStrLabel(), LEN2_FLAGS_UNICODE);
	}
	SetRecordLength(GetDataSize()-RECORD_HEADER_SIZE);
}
示例#5
0
void CGlobalRecords::AddLabelSST(const label_t& labeldef)
{
	if(labeldef.GetInSST()) {
		m_Labels.push_back(&labeldef);
	}
}