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:
Diffstat (limited to 'moses/src/PhraseDictionaryNodeMemory.h')
-rw-r--r--moses/src/PhraseDictionaryNodeMemory.h98
1 files changed, 98 insertions, 0 deletions
diff --git a/moses/src/PhraseDictionaryNodeMemory.h b/moses/src/PhraseDictionaryNodeMemory.h
new file mode 100644
index 000000000..ed410442c
--- /dev/null
+++ b/moses/src/PhraseDictionaryNodeMemory.h
@@ -0,0 +1,98 @@
+// $Id: PhraseDictionaryNodeMemory.h 2451 2009-08-04 13:46:24Z hieuhoang1972 $
+// vim:tabstop=2
+
+/***********************************************************************
+Moses - factored phrase-based language decoder
+Copyright (C) 2006 University of Edinburgh
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+***********************************************************************/
+
+#pragma once
+
+#include <map>
+#include <vector>
+#include <iterator>
+#include "Word.h"
+#include "TargetPhraseCollection.h"
+#include "PhraseDictionaryNode.h"
+
+namespace Moses
+{
+
+class PhraseDictionaryMemory;
+class PhraseDictionaryNewFormat;
+
+/** One node of the PhraseDictionaryMemory structure
+*/
+class PhraseDictionaryNodeMemory : public PhraseDictionaryNode
+{
+ typedef std::map<Word, PhraseDictionaryNodeMemory> NodeMap;
+
+ // only these classes are allowed to instantiate this class
+ friend class PhraseDictionaryMemory;
+ friend class PhraseDictionaryJoshua;
+ friend class std::map<Word, PhraseDictionaryNodeMemory>;
+
+protected:
+ NodeMap m_map;
+ TargetPhraseCollection *m_targetPhraseCollection;
+ const Word *m_sourceWord;
+
+ PhraseDictionaryNodeMemory()
+ :m_targetPhraseCollection(NULL)
+ ,m_sourceWord(NULL)
+ {}
+public:
+ ~PhraseDictionaryNodeMemory();
+
+ void CleanUp();
+ void Sort(size_t tableLimit);
+ PhraseDictionaryNodeMemory *GetOrCreateChild(const Word &word);
+ const PhraseDictionaryNodeMemory *GetChild(const Word &word) const;
+ const TargetPhraseCollection *GetTargetPhraseCollection() const
+ {
+ return m_targetPhraseCollection;
+ }
+ TargetPhraseCollection &GetOrCreateTargetPhraseCollection()
+ {
+ if (m_targetPhraseCollection == NULL)
+ m_targetPhraseCollection = new TargetPhraseCollection();
+ return *m_targetPhraseCollection;
+ }
+ size_t GetSize() const
+ { return m_map.size(); }
+
+ // for mert
+ void SetWeightTransModel(const PhraseDictionary *phraseDictionary
+ , const std::vector<float> &weightT);
+
+ const Word &GetSourceWord() const
+ { return *m_sourceWord; }
+ void SetSourceWord(const Word &sourceWord)
+ { m_sourceWord = &sourceWord; }
+
+ // iterators
+ typedef NodeMap::iterator iterator;
+ typedef NodeMap::const_iterator const_iterator;
+ const_iterator begin() const { return m_map.begin(); }
+ const_iterator end() const { return m_map.end(); }
+ iterator begin() { return m_map.begin(); }
+ iterator end() { return m_map.end(); }
+
+ TO_STRING();
+};
+
+}