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/TranslationModel/ProbingPT/querying.hh')
-rw-r--r--moses/TranslationModel/ProbingPT/querying.hh65
1 files changed, 65 insertions, 0 deletions
diff --git a/moses/TranslationModel/ProbingPT/querying.hh b/moses/TranslationModel/ProbingPT/querying.hh
new file mode 100644
index 000000000..c43c7f3b9
--- /dev/null
+++ b/moses/TranslationModel/ProbingPT/querying.hh
@@ -0,0 +1,65 @@
+#pragma once
+
+#include <boost/unordered_map.hpp>
+#include <sys/stat.h> //For finding size of file
+#include "vocabid.hh"
+#include <algorithm> //toLower
+#include <deque>
+#include "probing_hash_utils.hh"
+#include "hash.hh" //Includes line splitter
+#include "line_splitter.hh"
+#include "moses//Util.h"
+
+namespace Moses
+{
+
+class QueryEngine
+{
+ std::map<uint64_t, std::string> source_vocabids;
+
+ typedef std::vector<unsigned char> Alignments;
+ std::vector<Alignments> alignColl;
+
+ Table table;
+ char *mem; //Memory for the table, necessary so that we can correctly destroy the object
+
+ size_t table_filesize;
+ bool is_reordering;
+
+ void read_alignments(const std::string &alignPath);
+
+public:
+ int num_scores;
+ int num_lex_scores;
+ bool logProb;
+
+ QueryEngine(const char *);
+ ~QueryEngine();
+
+ std::pair<bool, uint64_t> query(uint64_t key);
+
+ const std::map<uint64_t, std::string> &getSourceVocab() const
+ { return source_vocabids; }
+
+ const std::vector<Alignments> &getAlignments() const
+ { return alignColl; }
+
+ uint64_t getKey(uint64_t source_phrase[], size_t size) const;
+
+ template<typename T>
+ inline bool Get(const boost::unordered_map<std::string, std::string> &keyValue, const std::string &sought, T &found) const
+ {
+ boost::unordered_map<std::string, std::string>::const_iterator iter = keyValue.find(sought);
+ if (iter == keyValue.end()) {
+ return false;
+ }
+
+ const std::string &foundStr = iter->second;
+ found = Scan<T>(foundStr);
+ return true;
+ }
+
+};
+
+}
+