Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions ift/encoder/activation_condition.cc
Original file line number Diff line number Diff line change
Expand Up @@ -371,10 +371,10 @@ StatusOr<double> ActivationCondition::Probability(
}

// TODO(garretrieger): The full probability bound should be utilized here.
return calculator.ComputeMergedProbability(union_segments).Min();
return calculator.ComputeMergedProbability(union_segments).Average();
}

return calculator.ComputeConjunctiveProbability(conjunctive_segments).Min();
return calculator.ComputeConjunctiveProbability(conjunctive_segments).Average();
}

StatusOr<double> ActivationCondition::MergedProbability(
Expand Down Expand Up @@ -431,10 +431,10 @@ StatusOr<double> ActivationCondition::MergedProbability(
union_segments.push_back(&merged_segment);
}

return calculator.ComputeMergedProbability(union_segments).Min();
return calculator.ComputeMergedProbability(union_segments).Average();
}

return calculator.ComputeConjunctiveProbability(conjunctive_segments).Min();
return calculator.ComputeConjunctiveProbability(conjunctive_segments).Average();
}

} // namespace ift::encoder
15 changes: 6 additions & 9 deletions ift/encoder/closure_glyph_segmenter.cc
Original file line number Diff line number Diff line change
Expand Up @@ -176,19 +176,16 @@ struct SegmentOrdering {

bool operator<(const SegmentOrdering& other) const {
if (group_index != other.group_index) {
// Group index ascending.
return group_index < other.group_index;
}

if (probability.Min() != other.probability.Min()) {
// Probability descending.
return probability.Min() > other.probability.Min();
}

if (probability.Max() != other.probability.Max()) {
// Probability descending.
return probability.Max() > other.probability.Max();
if (probability.Average() != other.probability.Average()) {
// Segment probability descending.
return probability.Average() > other.probability.Average();
}

// Break ties with original segment index ascending.
return original_index < other.original_index;
}
};
Expand Down Expand Up @@ -595,7 +592,7 @@ StatusOr<SegmentationCost> ClosureGlyphSegmenter::TotalCost(
double incremental_size =
non_ift_font_size / (double)non_ift.codepoints.size();
for (unsigned cp : non_ift.codepoints) {
double Pcp = probability_calculator.ComputeProbability({cp}).Min();
double Pcp = probability_calculator.ComputeProbability({cp}).Average();
ideal_cost += Pcp * incremental_size;
}

Expand Down
2 changes: 1 addition & 1 deletion ift/encoder/segment.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ struct Segment {
Segment(SubsetDefinition definition, freq::ProbabilityBound probability)
: definition(std::move(definition)), probability(probability) {}

double Probability() const { return probability.Min(); }
double Probability() const { return probability.Average(); }
const freq::ProbabilityBound& ProbabilityBound() const { return probability; }

const SubsetDefinition& Definition() const { return definition; }
Expand Down
1 change: 1 addition & 0 deletions ift/freq/probability_bound.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ struct ProbabilityBound {

double Min() const { return min_; }
double Max() const { return max_; }
double Average() const { return (min_ + max_) / 2.0; }

bool operator==(const ProbabilityBound& other) const {
return min_ == other.min_ && max_ == other.max_;
Expand Down
Loading