blob: f2bc2474a7505b7224cd351dde256ef8c5a2360c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
#include "max_lex_target_given_source.h"
#include <cmath>
#include "../data_array.h"
#include "../translation_table.h"
MaxLexTargetGivenSource::MaxLexTargetGivenSource(
shared_ptr<TranslationTable> table) :
table(table) {}
double MaxLexTargetGivenSource::Score(const FeatureContext& context) const {
vector<string> source_words = context.source_phrase.GetWords();
source_words.push_back(DataArray::NULL_WORD_STR);
vector<string> target_words = context.target_phrase.GetWords();
double score = 0;
for (string target_word: target_words) {
double max_score = 0;
for (string source_word: source_words) {
max_score = max(max_score,
table->GetTargetGivenSourceScore(source_word, target_word));
}
score += max_score > 0 ? -log10(max_score) : MAX_SCORE;
}
return score;
}
string MaxLexTargetGivenSource::GetName() const {
return "MaxLexEgivenF";
}
|