void TNytNGramBs::SaveTxt(const TStr& FNm){ TFOut FOut(FNm); FILE* fOut=FOut.GetFileId(); int NGrams=TermStrVH.Len(); for (int NGramId=0; NGramId<NGrams; NGramId++){ TStr NGramStr=GetNGramStr(NGramId); fprintf(fOut, "%d\t%s\n", NGramId, NGramStr.CStr()); } }
void TNGramBs::GetNGramStrV( const TStr& HtmlStr, TStrV& NGramStrV, TIntPrV& NGramBEChXPrV) const { TIntV NGramIdV; NGramStrV.Clr(); NGramBEChXPrV.Clr(); TNGramBs::GetNGramIdV(HtmlStr, NGramIdV, NGramBEChXPrV); NGramStrV.Gen(NGramIdV.Len(), 0); for (int NGramIdN=0; NGramIdN<NGramIdV.Len(); NGramIdN++){ TStr NGramStr=GetNGramStr(NGramIdV[NGramIdN]); NGramStrV.Add(NGramStr); } }
void TNytNGramBs::GetNGramStrV(const TStr& HtmlStr, TStrV& NGramStrV){ NGramStrV.Clr(); // prepare html parsing PSIn HtmlSIn=TStrIn::New(HtmlStr); THtmlLx HtmlLx(HtmlSIn); // process text TStrV StrV; while (HtmlLx.GetSym()!=hsyEof){ TStr Str=HtmlLx.ChA; Str.ToLc(); switch (HtmlLx.Sym){ case hsyUndef: case hsyUrl: case hsyMTag: case hsySSym: StrV.Clr(); break; case hsyStr: case hsyNum: NGramStrV.Add(Str); StrV.Add(Str); for (int NGramLen=2; NGramLen<=4; NGramLen++){ if (StrV.Len()<NGramLen){break;} TStrV TermStrV(NGramLen, 0); for (int StrN=StrV.Len()-NGramLen; StrN<StrV.Len(); StrN++){ TermStrV.Add(StrV[StrN]); } int NGramId; if (IsNGram(TermStrV, NGramId)){ TStr NGramStr=GetNGramStr(NGramId); NGramStrV.Add(NGramStr); } } break; case hsyBTag: case hsyETag: StrV.Clr(); break; case hsyEof: break; default: Fail; } } }