diff options
author | Ulrich Germann <Ulrich.Germann@gmail.com> | 2015-12-10 06:17:36 +0300 |
---|---|---|
committer | Ulrich Germann <Ulrich.Germann@gmail.com> | 2015-12-11 04:09:22 +0300 |
commit | 29694af6e43c1cec7a6fd0b157eb44faca706129 (patch) | |
tree | acda250a83c5a3a4244be011f1f4b9e6337f5d6b /moses/ChartParser.cpp | |
parent | 240b88c6834c9c94e8a6448a34dc4ad33bdf3fbd (diff) |
Code cleanup and refactoring.
Diffstat (limited to 'moses/ChartParser.cpp')
-rw-r--r-- | moses/ChartParser.cpp | 50 |
1 files changed, 33 insertions, 17 deletions
diff --git a/moses/ChartParser.cpp b/moses/ChartParser.cpp index 2b49c9508..e0c84e199 100644 --- a/moses/ChartParser.cpp +++ b/moses/ChartParser.cpp @@ -44,17 +44,26 @@ ChartParserUnknown ChartParserUnknown::~ChartParserUnknown() { RemoveAllInColl(m_unksrcs); - // RemoveAllInColl(m_cacheTargetPhraseCollection); } -void ChartParserUnknown::Process(const Word &sourceWord, const Range &range, ChartParserCallback &to) +AllOptions::ptr const& +ChartParserUnknown:: +options() const +{ + return m_ttask.lock()->options(); +} + +void +ChartParserUnknown:: +Process(const Word &sourceWord, const Range &range, ChartParserCallback &to) { // unknown word, add as trans opt const StaticData &staticData = StaticData::Instance(); - const UnknownWordPenaltyProducer &unknownWordPenaltyProducer = UnknownWordPenaltyProducer::Instance(); + const UnknownWordPenaltyProducer &unknownWordPenaltyProducer + = UnknownWordPenaltyProducer::Instance(); size_t isDigit = 0; - if (staticData.options().unk.drop) { + if (options()->unk.drop) { const Factor *f = sourceWord[0]; // TODO hack. shouldn't know which factor is surface const StringPiece s = f->GetString(); isDigit = s.find_first_of("0123456789"); @@ -79,9 +88,9 @@ void ChartParserUnknown::Process(const Word &sourceWord, const Range &range, Cha } //TranslationOption *transOpt; - if (! staticData.options().unk.drop || isDigit) { + if (! options()->unk.drop || isDigit) { // loop - const UnknownLHSList &lhsList = staticData.GetUnknownLHS(); + const UnknownLHSList &lhsList = options()->syntax.unknown_lhs; // staticData.GetUnknownLHS(); UnknownLHSList::const_iterator iterLHS; for (iterLHS = lhsList.begin(); iterLHS != lhsList.end(); ++iterLHS) { const string &targetLHSStr = iterLHS->first; @@ -91,8 +100,8 @@ void ChartParserUnknown::Process(const Word &sourceWord, const Range &range, Cha //const Word &sourceLHS = staticData.GetInputDefaultNonTerminal(); Word *targetLHS = new Word(true); - targetLHS->CreateFromString(Output, staticData.options().output.factor_order, - targetLHSStr, true); + targetLHS->CreateFromString(Output, options()->output.factor_order, + targetLHSStr, true); UTIL_THROW_IF2(targetLHS->GetFactor(0) == NULL, "Null factor for target LHS"); // add to dictionary @@ -108,9 +117,8 @@ void ChartParserUnknown::Process(const Word &sourceWord, const Range &range, Cha targetPhrase->SetAlignmentInfo("0-0"); targetPhrase->EvaluateInIsolation(*unksrc); - AllOptions const& opts = staticData.options(); - if (!opts.output.detailed_tree_transrep_filepath.empty() || - opts.nbest.print_trees || staticData.GetTreeStructure() != NULL) { + if (!options()->output.detailed_tree_transrep_filepath.empty() || + options()->nbest.print_trees || staticData.GetTreeStructure() != NULL) { std::string prop = "[ "; prop += (*targetLHS)[0]->GetString().as_string() + " "; prop += sourceWord[0]->GetString().as_string() + " ]"; @@ -126,15 +134,15 @@ void ChartParserUnknown::Process(const Word &sourceWord, const Range &range, Cha TargetPhrase *targetPhrase = new TargetPhrase(firstPt); // loop - const UnknownLHSList &lhsList = staticData.GetUnknownLHS(); + const UnknownLHSList &lhsList = options()->syntax.unknown_lhs;//staticData.GetUnknownLHS(); UnknownLHSList::const_iterator iterLHS; for (iterLHS = lhsList.begin(); iterLHS != lhsList.end(); ++iterLHS) { const string &targetLHSStr = iterLHS->first; //float prob = iterLHS->second; Word *targetLHS = new Word(true); - targetLHS->CreateFromString(Output, staticData.options().output.factor_order, - targetLHSStr, true); + targetLHS->CreateFromString(Output, staticData.options()->output.factor_order, + targetLHSStr, true); UTIL_THROW_IF2(targetLHS->GetFactor(0) == NULL, "Null factor for target LHS"); targetPhrase->GetScoreBreakdown().Assign(&unknownWordPenaltyProducer, unknownScore); @@ -214,9 +222,7 @@ void ChartParser::Create(const Range &range, ChartParserCallback &to) if (range.GetNumWordsCovered() == 1 && range.GetStartPos() != 0 && range.GetStartPos() != m_source.GetSize()-1) { - bool always = m_ttask.lock()->options()->unk.always_create_direct_transopt; - // bool alwaysCreateDirectTranslationOption - // = StaticData::Instance().IsAlwaysCreateDirectTranslationOption(); + bool always = options()->unk.always_create_direct_transopt; if (to.Empty() || always) { // create unknown words for 1 word coverage where we don't have any trans options const Word &sourceWord = m_source.GetWord(range.GetStartPos()); @@ -291,4 +297,14 @@ long ChartParser::GetTranslationId() const { return m_source.GetTranslationId(); } + + +AllOptions::ptr const& +ChartParser:: +options() const +{ + return m_ttask.lock()->options(); +} + + } // namespace Moses |