现在的位置: 首页 > 综合 > 正文

调用srilm的接口

2013年09月05日 ⁄ 综合 ⁄ 共 843字 ⁄ 字号 评论关闭

    由于要写解码器,为了省却麻烦直接调用srilm,注意事项如下:

 

(1)makefile文件中的头文件和库文件的顺序。

 

LM_DIR=/home/share/MT/srilm
LM_INCLUDE=$(LM_DIR)/include
LM_LIB=lm/liboolm.a lm/libdstruct.a  lm/libmisc.a lm/liblattice.a lm/libflm.a (顺序不对话,一堆错误)
LM_OBJECT=IntervalHeap.o Map2.o Map.o NgramStats.o

 

 

$(CC) $(OBJECT) $(LM_OBJECT) $(LM_LIB) -o $(EXE_OUT)

 

(2)调用接口如下:

   file_name是语言模型文件名称。

 

   File fp(file_name.c_str(), "rb");

 _vocab = new Vocab;
 if(_vocab == NULL)
 {
  fprintf(stderr,"can't new vocab in %s %d/n", __FILE__, __LINE__);
  return(false);
 }

 _lm = new Ngram(*_vocab, _LM_order);
 if(_lm == NULL)
 {
  delete _vocab;
  fprintf(stderr,"can't new LM in %s %d/n", __FILE__, __LINE__);
  return(false); 
 }
 _lm->read(fp);

 

(3)概率计算接口

 

   概率计算接口为Ngram.h中的wordProb,参数为(word,context),非常要注意的是,context中的顺序为:“first second third ...”

  first是立word最近的词,second是与word隔了first的词,不要把顺序搞混了。

 

  context的最后一个元素必须为word_None表示结束。

 

感想:服了这些开放源码的人了,没有详细文档,只能看源代码。

抱歉!评论已关闭.