public TranslationResult Translate(IReadOnlyList <string> segment) { CheckDisposed(); TranslationResult smtResult = SmtEngine.Translate(segment); if (RuleEngine == null) { return(smtResult); } TranslationResult ruleResult = RuleEngine.Translate(segment); return(smtResult.Merge(0, RuleEngineThreshold, ruleResult)); }
public IEnumerable <TranslationResult> Translate(int n, IReadOnlyList <string> segment) { CheckDisposed(); TranslationResult ruleResult = null; foreach (TranslationResult smtResult in SmtEngine.Translate(n, segment)) { if (RuleEngine == null) { yield return(smtResult); } else { if (ruleResult == null) { ruleResult = RuleEngine.Translate(segment); } yield return(smtResult.Merge(0, RuleEngineThreshold, ruleResult)); } } }