Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/moses-smt/mosesdecoder.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlrich Germann <Ulrich.Germann@gmail.com>2015-12-10 06:17:36 +0300
committerUlrich Germann <Ulrich.Germann@gmail.com>2015-12-11 04:09:22 +0300
commit29694af6e43c1cec7a6fd0b157eb44faca706129 (patch)
treeacda250a83c5a3a4244be011f1f4b9e6337f5d6b /moses/ChartParser.cpp
parent240b88c6834c9c94e8a6448a34dc4ad33bdf3fbd (diff)
Code cleanup and refactoring.
Diffstat (limited to 'moses/ChartParser.cpp')
-rw-r--r--moses/ChartParser.cpp50
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