当前位置: 首页>>代码示例>>C++>>正文


C++ TIntFltKdV::AddV方法代码示例

本文整理汇总了C++中TIntFltKdV::AddV方法的典型用法代码示例。如果您正苦于以下问题:C++ TIntFltKdV::AddV方法的具体用法?C++ TIntFltKdV::AddV怎么用?C++ TIntFltKdV::AddV使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在TIntFltKdV的用法示例。


在下文中一共展示了TIntFltKdV::AddV方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: AddFtr

void TFtrGenMultiNom::AddFtr(const TStrV& StrV, TIntFltKdV& SpV, int& Offset) const {
    // generate feature vector just for this feature generate
    TIntFltKdV MultiNomSpV(StrV.Len(), 0);
    for (int StrN = 0; StrN < StrV.Len(); StrN++) {
        const int FtrId = FtrGen.GetFtr(StrV[StrN]);
        // only use features we've seen during updates
        if (FtrId != -1) {
            MultiNomSpV.Add(TIntFltKd(Offset + FtrId, 1.0));
        }
    }
    MultiNomSpV.Sort();
    // merge elements with same id
    double NormSq = 0.0;
    int GoodSpN = 0;
    for (int SpN = 1; SpN < MultiNomSpV.Len(); SpN++) {
        if (MultiNomSpV[GoodSpN].Key == MultiNomSpV[SpN].Key) {
            // repeatition of previous id
            MultiNomSpV[GoodSpN].Dat += MultiNomSpV[SpN].Dat;
        } else { // new id
            // keep track of norm
            NormSq += TMath::Sqr(MultiNomSpV[GoodSpN].Dat);
            // increase the pointer to the next good position
            GoodSpN++;
            // and move the new value down to the good position
            MultiNomSpV[GoodSpN] = MultiNomSpV[SpN];
        }
    }
    // only bother if there is something to add
    if (MultiNomSpV.Len() > 0) {
        // update the norm with the last element
        NormSq += TMath::Sqr(MultiNomSpV[GoodSpN].Dat);
        // truncate the vector
        MultiNomSpV.Trunc(GoodSpN+1);
        // normalize
        double Norm = TMath::Sqrt(NormSq);
        TLinAlg::MultiplyScalar(1.0 / Norm, MultiNomSpV, MultiNomSpV);
        // add the the full feature vector and increase offset count
        SpV.AddV(MultiNomSpV);
    }
    // increase the offset by the dimension
    Offset += GetVals();
}
开发者ID:AlertProject,项目名称:Text-processing-bundle,代码行数:42,代码来源:ftrgen.cpp


注:本文中的TIntFltKdV::AddV方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。