void TNmObjBs::GetNmObjDIdV( const PBowDocBs& BowDocBs, TIntV& BowDIdV, const TStr& NmObjStr1, const TStr& NmObjStr2) const { // get first named-object-id int NmObjId1=GetNmObjId(NmObjStr1); TIntV NmObjDocIdV1; GetNmObjDocIdV(NmObjId1, NmObjDocIdV1); NmObjDocIdV1.Sort(); // get second named-object-id TIntV NmObjDocIdV2; if (!NmObjStr2.Empty()){ int NmObjId2=GetNmObjId(NmObjStr2); GetNmObjDocIdV(NmObjId2, NmObjDocIdV2); NmObjDocIdV2.Sort(); } // create joint doc-id-vector TIntV NmObjDocIdV; if (NmObjDocIdV2.Empty()){ NmObjDocIdV=NmObjDocIdV1; } else { NmObjDocIdV1.Intrs(NmObjDocIdV2, NmObjDocIdV); } // traverse named-object-documents to collect bow-document-ids BowDIdV.Gen(NmObjDocIdV.Len(), 0); for (int NmObjDocIdN=0; NmObjDocIdN<NmObjDocIdV.Len(); NmObjDocIdN++){ TStr DocNm=GetDocNm(NmObjDocIdV[NmObjDocIdN]); int DId=BowDocBs->GetDId(DocNm); if (DId!=-1){ BowDIdV.Add(DId); } } }
void TSkyGridEnt::GetDocCentroid(const TSkyGridBs* SkyGridBs, const PBowDocBs& BowDocBs, const PBowDocWgtBs& BowDocWgtBs, const uint64& MnTm, const int& TopWords, const double& TopWordsWgtSumPrc, int& Docs, TStrFltPrV& WordStrWgtPrV) const { // get doc-ids TIntV DocIdV; GetDocIdV(SkyGridBs, MnTm, 0, DocIdV); TIntV BowDIdV(DocIdV.Len(), 0); for (int DocN=0; DocN<DocIdV.Len(); DocN++){ int DocId=DocIdV[DocN]; TStr BowDocNm=TInt::GetStr(DocId); int BowDId=BowDocBs->GetDId(BowDocNm); BowDIdV.Add(BowDId); } // create concept vector PBowSim BowSim=TBowSim::New(bstCos); // similarity object PBowSpV ConceptSpV=TBowClust::GetConceptSpV(BowDocWgtBs, BowSim, BowDIdV); // get docs & word-vector Docs=DocIdV.Len(); ConceptSpV->GetWordStrWgtPrV(BowDocBs, TopWords, TopWordsWgtSumPrc, WordStrWgtPrV); }