add oovpt

This commit is contained in:
Hieu Hoang 2015-01-04 19:10:48 +05:30
parent b526efea23
commit 1e0a2835bf
4 changed files with 132 additions and 0 deletions

View File

@ -1995,6 +1995,16 @@
<type>1</type> <type>1</type>
<locationURI>PARENT-3-PROJECT_LOC/moses/TranslationModel/DynSuffixArray.h</locationURI> <locationURI>PARENT-3-PROJECT_LOC/moses/TranslationModel/DynSuffixArray.h</locationURI>
</link> </link>
<link>
<name>TranslationModel/OOVPT.cpp</name>
<type>1</type>
<locationURI>PARENT-3-PROJECT_LOC/moses/TranslationModel/OOVPT.cpp</locationURI>
</link>
<link>
<name>TranslationModel/OOVPT.h</name>
<type>1</type>
<locationURI>PARENT-3-PROJECT_LOC/moses/TranslationModel/OOVPT.h</locationURI>
</link>
<link> <link>
<name>TranslationModel/PhraseDictionary.cpp</name> <name>TranslationModel/PhraseDictionary.cpp</name>
<type>1</type> <type>1</type>

View File

@ -9,6 +9,7 @@
#include "moses/TranslationModel/PhraseDictionaryScope3.h" #include "moses/TranslationModel/PhraseDictionaryScope3.h"
#include "moses/TranslationModel/PhraseDictionaryTransliteration.h" #include "moses/TranslationModel/PhraseDictionaryTransliteration.h"
#include "moses/TranslationModel/PhraseDictionaryDynamicCacheBased.h" #include "moses/TranslationModel/PhraseDictionaryDynamicCacheBased.h"
#include "moses/TranslationModel/OOVPT.h"
#include "moses/TranslationModel/RuleTable/PhraseDictionaryOnDisk.h" #include "moses/TranslationModel/RuleTable/PhraseDictionaryOnDisk.h"
#include "moses/TranslationModel/RuleTable/PhraseDictionaryFuzzyMatch.h" #include "moses/TranslationModel/RuleTable/PhraseDictionaryFuzzyMatch.h"
@ -183,6 +184,7 @@ FeatureRegistry::FeatureRegistry()
MOSES_FNAME(PhraseDictionaryDynamicCacheBased); MOSES_FNAME(PhraseDictionaryDynamicCacheBased);
MOSES_FNAME(PhraseDictionaryFuzzyMatch); MOSES_FNAME(PhraseDictionaryFuzzyMatch);
MOSES_FNAME2("RuleTable", Syntax::RuleTableFF); MOSES_FNAME2("RuleTable", Syntax::RuleTableFF);
MOSES_FNAME(OOVPT);
MOSES_FNAME(GlobalLexicalModel); MOSES_FNAME(GlobalLexicalModel);
//MOSES_FNAME(GlobalLexicalModelUnlimited); This was commented out in the original //MOSES_FNAME(GlobalLexicalModelUnlimited); This was commented out in the original

View File

@ -0,0 +1,84 @@
// vim:tabstop=2
#include "OOVPT.h"
using namespace std;
namespace Moses
{
OOVPT::OOVPT(const std::string &line)
: PhraseDictionary(line)
{
ReadParameters();
}
void OOVPT::Load()
{
SetFeaturesToApply();
}
void OOVPT::InitializeForInput(InputType const& source)
{
ReduceCache();
}
void OOVPT::GetTargetPhraseCollectionBatch(const InputPathList &inputPathQueue) const
{
CacheColl &cache = GetCache();
InputPathList::const_iterator iter;
for (iter = inputPathQueue.begin(); iter != inputPathQueue.end(); ++iter) {
InputPath &inputPath = **iter;
const Phrase &sourcePhrase = inputPath.GetPhrase();
TargetPhrase *tp = CreateTargetPhrase(sourcePhrase);
TargetPhraseCollection *tpColl = new TargetPhraseCollection();
tpColl->Add(tp);
// add target phrase to phrase-table cache
size_t hash = hash_value(sourcePhrase);
std::pair<const TargetPhraseCollection*, clock_t> value(tpColl, clock());
cache[hash] = value;
inputPath.SetTargetPhrases(*this, tpColl, NULL);
}
}
TargetPhrase *OOVPT::CreateTargetPhrase(const Phrase &sourcePhrase) const
{
// create a target phrase from the 1st word of the source, prefix with 'OOVPT:'
assert(sourcePhrase.GetSize());
assert(m_output.size() == 1);
string str = sourcePhrase.GetWord(0).GetFactor(0)->GetString().as_string();
TargetPhrase *tp = new TargetPhrase(this);
Word &word = tp->AddWord();
word.CreateFromString(Output, m_output, str, false);
// score for this phrase table
vector<float> scores(m_numScoreComponents, 1.3);
tp->GetScoreBreakdown().PlusEquals(this, scores);
// score of all other ff when this rule is being loaded
tp->EvaluateInIsolation(sourcePhrase, GetFeaturesToApply());
return tp;
}
ChartRuleLookupManager* OOVPT::CreateRuleLookupManager(const ChartParser &parser,
const ChartCellCollectionBase &cellCollection,
std::size_t /*maxChartSpan*/)
{
assert(false);
return NULL;
}
TO_STRING_BODY(OOVPT);
// friend
ostream& operator<<(ostream& out, const OOVPT& phraseDict)
{
return out;
}
}

View File

@ -0,0 +1,36 @@
#pragma once
#include "PhraseDictionary.h"
namespace Moses
{
class ChartParser;
class ChartCellCollectionBase;
class ChartRuleLookupManager;
class OOVPT : public PhraseDictionary
{
friend std::ostream& operator<<(std::ostream&, const OOVPT&);
public:
OOVPT(const std::string &line);
void Load();
void InitializeForInput(InputType const& source);
// for phrase-based model
void GetTargetPhraseCollectionBatch(const InputPathList &inputPathQueue) const;
// for syntax/hiero model (CKY+ decoding)
ChartRuleLookupManager* CreateRuleLookupManager(const ChartParser&, const ChartCellCollectionBase&, std::size_t);
TO_STRING();
protected:
TargetPhrase *CreateTargetPhrase(const Phrase &sourcePhrase) const;
};
} // namespace Moses