Hi,

 

Have you added the “HybKen.cpp” after “alias LM” in the Jamfile?

 

I hope this helps.

 

Regards,

Christian Hadiwinoto

 

From: [email protected] [mailto:[email protected]] On 
Behalf Of HOANG Cong Duy Vu
Sent: Friday, August 15, 2014 10:44 AM
To: [email protected]
Subject: [Moses-support] Add a new LM feature in Moses

 

Hi,

 

I would like to add a new simple LM named HybLanguageModelKen (HybKen.h and 
HybKen.cpp) which will inherit from LanguageModelKen.

 

In Factory.cpp, I added as follows:

 

...

//#include "moses/LM/Ken.h"

#include "moses/LM/HybKen.h"

...

 

class KenFactory : public FeatureFactory

{

public:

  void Create(const std::string &line) {

    DefaultSetup(ConstructKenLM(line));

  }

};

 

class HybKenFactory : public FeatureFactory

{

public:

  void Create(const std::string &line) {

    DefaultSetup(ConstructHybKenLM(line));

  }

};

 

...

Add("KENLM", new KenFactory());

 

Add("HKENLM", new HybKenFactory());

 

...

 

I've created HybKen.h as follows:

 

#ifndef moses_LanguageModelHybKen_h

#define moses_LanguageModelHybKen_h

 

//#include <string>

//#include <boost/shared_ptr.hpp>

 

//#include "lm/word_index.hh"

 

//#include "moses/LM/Base.h"

//#include "moses/Hypothesis.h"

//#include "moses/TypeDef.h"

//#include "moses/Word.h"

 

#include "moses/LM/Ken.h"

namespace Moses

{

 

LanguageModel *ConstructHybKenLM(const std::string &line);

 

//! This will also load. Returns a templated KenLM class

LanguageModel *ConstructHybKenLM(const std::string &line, const std::string 
&file, const std::string &fileM, FactorType factorType, bool lazy);

 

void LoadMapping(const std::string &f, std::map<std::string, std::string>& m);

 

/*

 * An implementation of single factor LM using Kenneth's code.

 */

template <class Model> class LanguageModelHybKen : public 
LanguageModelKen<Model>

{

...

 

Factory.cpp, HybKen.h and HybKen.cpp are attached for your reference.

 

But I always got the compilation error message: "moses/FF/Factory.cpp:166: 
error: undefined reference to 'Moses::ConstructHybKenLM(std::string const&)'". 

I understand that Moses::ConstructHybKenLM(std::string const&) is already 
defined in Moses namespace.

 

May I ask for your help?

 

Thank you!

 

--
Cheers,
Vu

_______________________________________________
Moses-support mailing list
[email protected]
http://mailman.mit.edu/mailman/listinfo/moses-support

Reply via email to