00001
00002 #include <boost/algorithm/string.hpp>
00003
00004 #include "M2.h"
00005
00006 namespace MosesTuning
00007 {
00008
00009 namespace M2
00010 {
00011
00012 bool Annot::lowercase = true;
00013
00014 std::string Annot::transform(const std::string& e)
00015 {
00016 std::string temp = e;
00017 if(lowercase) {
00018 boost::erase_all(temp, " ");
00019 return ToLower(temp);
00020 } else
00021 return e;
00022 }
00023
00024 const std::string ToLower(const std::string& str)
00025 {
00026 std::string lc(str);
00027 std::transform(lc.begin(), lc.end(), lc.begin(), (int(*)(int))std::tolower);
00028 return lc;
00029 }
00030
00031
00032 Edit operator+(Edit& e1, Edit& e2)
00033 {
00034 std::string edit;
00035 if(e1.edit.size() > 0 && e2.edit.size() > 0)
00036 edit = e1.edit + " " + e2.edit;
00037 else if(e1.edit.size() > 0)
00038 edit = e1.edit;
00039 else if(e2.edit.size() > 0)
00040 edit = e2.edit;
00041
00042 return Edit(e1.cost + e2.cost, e1.changed + e2.changed, e1.unchanged + e2.unchanged, edit);
00043 }
00044
00045
00046 Edge operator+(Edge e1, Edge e2)
00047 {
00048 return Edge(e1.v, e2.u, e1.edit + e2.edit);
00049 }
00050
00051 std::ostream& operator<<(std::ostream& o, Sentence s)
00052 {
00053 for(Sentence::iterator it = s.begin(); it != s.end(); it++)
00054 o << *it << " ";
00055 return o;
00056 }
00057
00058
00059 }
00060
00061 }