00001
00002 #include <cassert>
00003 #include <vector>
00004 #include "Alignments.h"
00005 #include "moses/Util.h"
00006
00007 using namespace std;
00008 using namespace Moses;
00009
00010 Alignments::Alignments(const std::string &str, size_t sourceSize, size_t targetSize)
00011 :m_alignS2T(sourceSize)
00012 ,m_alignT2S(targetSize)
00013 {
00014 vector<string> toks = Tokenize(str, " ");
00015 for (size_t i = 0; i < toks.size(); ++i) {
00016 string &tok = toks[i];
00017
00018 vector<int> point = Tokenize<int>(tok, "-");
00019 assert(point.size() == 2);
00020
00021 std::map<int, int>::iterator iter;
00022
00023
00024 std::map<int, int> &targets = m_alignS2T[ point[0] ];
00025 iter = targets.find(point[1]);
00026 if (iter == targets .end()) {
00027 targets[ point[1] ] = 0;
00028 } else {
00029 ++(iter->second);
00030 }
00031
00032
00033 std::map<int, int> &sources = m_alignT2S[ point[1] ];
00034 iter = sources.find(point[0]);
00035 if (iter == targets .end()) {
00036 sources[ point[0] ] = 0;
00037 } else {
00038 ++(iter->second);
00039 }
00040 }
00041
00042 }
00043
00044