From 9705782c98265c05bc87a10b1fb69bd35781c754 Mon Sep 17 00:00:00 2001 From: "philblunsom@gmail.com" Date: Tue, 29 Jun 2010 04:35:29 +0000 Subject: Update utility functions to work with pyp-topics. git-svn-id: https://ws10smt.googlecode.com/svn/trunk@49 ec762483-ff6d-05da-a07a-a48fb63a330f --- decoder/dict.h | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'decoder/dict.h') diff --git a/decoder/dict.h b/decoder/dict.h index 72e82e6d..bc3a904a 100644 --- a/decoder/dict.h +++ b/decoder/dict.h @@ -13,9 +13,12 @@ class Dict { typedef std::tr1::unordered_map > Map; + public: Dict() : b0_("") { words_.reserve(1000); } + inline int max() const { return words_.size(); } + inline WordID Convert(const std::string& word, bool frozen = false) { Map::iterator i = d_.find(word); if (i == d_.end()) { @@ -28,12 +31,26 @@ class Dict { return i->second; } } + + inline WordID Convert(const std::vector& words, bool frozen = false) { + std::string word= ""; + for (std::vector::const_iterator it=words.begin(); + it != words.end(); ++it) { + if (it != words.begin()) word += "__"; + word += *it; + } + + return Convert(word, frozen); + } + inline const std::string& Convert(const WordID& id) const { if (id == 0) return b0_; assert(id <= words_.size()); return words_[id-1]; } + void clear() { words_.clear(); d_.clear(); } + private: const std::string b0_; std::vector words_; -- cgit v1.2.3