/* ReadBigram: load a bigram from given file */ static void ReadMatBigram(LModel *lm,char *fn) { Vector vec; char buf[132]; int P,p,j; float sum,x; LabId id; MatBiLM *matbi; if (trace&T_TIO) printf("\nMB "),fflush(stdout); if(InitSource(fn,&source,LangModFilter)<SUCCESS) HError(8110,"ReadMatBigram: Can't open file %s", fn); vec = CreateVector(&gcheap,MAX_LMID); ReadLMWord(buf);SkipWhiteSpace(&source); id=GetLabId(buf,TRUE); P = ReadRow(vec); if (P<=0 || P >MAX_LMID) HError(8151,"ReadMatBigram: First row invalid (%d entries)",P); matbi=CreateMatBigram(lm,P); matbi->wdlist[1] = id; for (p=1;p<=P;p++) matbi->bigMat[1][p]=vec[p]; id->aux=(Ptr) 1; Dispose(&gcheap,vec); for (sum=0.0, j=1; j<=P; j++) { x = matbi->bigMat[1][j]; if (x<0) HError(8151,"ReadMatBigram: In bigram, entry %d for %s is -ve (%e)", j,buf,x); sum += x; matbi->bigMat[1][j]=((x<MINLARG)?LZERO:log(x)); } if (sum < 0.99 || sum > 1.01) HError(-8151,"ReadMatBigram: Row %d of bigram %s adds up to %f",1,fn,sum); for (p=2; ReadLMWord(buf); p++) { if (trace&T_TIO) { if ((p%25)==0) printf(". "),fflush(stdout); if ((p%800)==0) printf("\n "),fflush(stdout); } if (p>P) HError(8150,"ReadMatBigram: More rows than columns in bigram %s",fn); id=GetLabId(buf,TRUE); if ((int)id->aux != 0) HError(8150,"ReadMatBigram: Duplicated name %s in bigram %s",buf,fn); id->aux = (Ptr) p; matbi->wdlist[p] = id; SkipWhiteSpace(&source); if (ReadRow(matbi->bigMat[p])!=P) HError(8150,"ReadMatBigram: Wrong number of items in row %d",p); for (sum=0.0, j=1; j<=P; j++) { x = matbi->bigMat[p][j]; if (x<0) HError(8151,"ReadMatBigram: In bigram, entry %d for %s is -ve (%e)", j,buf,x); sum += x; matbi->bigMat[p][j]=((x<MINLARG)?LZERO:log(x)); } if (sum < 0.99 || sum > 1.01) HError(-8151,"ReadMatBigram: Row %d of bigram %s adds up to %f",p,fn,sum); } if (P>p) HError(8150,"ReadMatBigram: More columns than rows in bigram %s",fn); if (trace&T_TIO) printf("\n"),fflush(stdout); CloseSource(&source); }
INT C2DRaw::InitSource(INT in_nSize) { return InitSource(in_nSize, in_nSize); }
CDisplaySpectrumSource::CDisplaySpectrumSource(CSignal* in_pSignal) { AttachSource(in_pSignal); InitSource(); }