00001 #pragma once 00002 00003 #include <string> 00004 #include "VWFeatureSource.h" 00005 00006 namespace Moses 00007 { 00008 00009 class VWFeatureSourceBigrams : public VWFeatureSource 00010 { 00011 public: 00012 VWFeatureSourceBigrams(const std::string &line) 00013 : VWFeatureSource(line) { 00014 ReadParameters(); 00015 00016 // Call this last 00017 VWFeatureBase::UpdateRegister(); 00018 } 00019 00020 void operator()(const InputType &input 00021 , const Range &sourceRange 00022 , Discriminative::Classifier &classifier 00023 , Discriminative::FeatureVector &outFeatures) const { 00024 for (size_t i = 1; i < input.GetSize(); i++) { 00025 outFeatures.push_back(classifier.AddLabelIndependentFeature("bigram^" + GetWord(input, i - 1) + "^" + GetWord(input, i))); 00026 } 00027 } 00028 00029 virtual void SetParameter(const std::string& key, const std::string& value) { 00030 VWFeatureSource::SetParameter(key, value); 00031 } 00032 }; 00033 00034 }