13107b467c91c471ce4e00c5d8de559f7b0da2cd6Satoshi Kataoka/* 23107b467c91c471ce4e00c5d8de559f7b0da2cd6Satoshi Kataoka * Copyright (C) 2013 The Android Open Source Project 33107b467c91c471ce4e00c5d8de559f7b0da2cd6Satoshi Kataoka * 43107b467c91c471ce4e00c5d8de559f7b0da2cd6Satoshi Kataoka * Licensed under the Apache License, Version 2.0 (the "License"); 53107b467c91c471ce4e00c5d8de559f7b0da2cd6Satoshi Kataoka * you may not use this file except in compliance with the License. 63107b467c91c471ce4e00c5d8de559f7b0da2cd6Satoshi Kataoka * You may obtain a copy of the License at 73107b467c91c471ce4e00c5d8de559f7b0da2cd6Satoshi Kataoka * 83107b467c91c471ce4e00c5d8de559f7b0da2cd6Satoshi Kataoka * http://www.apache.org/licenses/LICENSE-2.0 93107b467c91c471ce4e00c5d8de559f7b0da2cd6Satoshi Kataoka * 103107b467c91c471ce4e00c5d8de559f7b0da2cd6Satoshi Kataoka * Unless required by applicable law or agreed to in writing, software 113107b467c91c471ce4e00c5d8de559f7b0da2cd6Satoshi Kataoka * distributed under the License is distributed on an "AS IS" BASIS, 123107b467c91c471ce4e00c5d8de559f7b0da2cd6Satoshi Kataoka * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 133107b467c91c471ce4e00c5d8de559f7b0da2cd6Satoshi Kataoka * See the License for the specific language governing permissions and 143107b467c91c471ce4e00c5d8de559f7b0da2cd6Satoshi Kataoka * limitations under the License. 153107b467c91c471ce4e00c5d8de559f7b0da2cd6Satoshi Kataoka */ 163107b467c91c471ce4e00c5d8de559f7b0da2cd6Satoshi Kataoka 173107b467c91c471ce4e00c5d8de559f7b0da2cd6Satoshi Kataoka#ifndef LATINIME_SCORING_H 183107b467c91c471ce4e00c5d8de559f7b0da2cd6Satoshi Kataoka#define LATINIME_SCORING_H 193107b467c91c471ce4e00c5d8de559f7b0da2cd6Satoshi Kataoka 203107b467c91c471ce4e00c5d8de559f7b0da2cd6Satoshi Kataoka#include "defines.h" 213107b467c91c471ce4e00c5d8de559f7b0da2cd6Satoshi Kataoka 223107b467c91c471ce4e00c5d8de559f7b0da2cd6Satoshi Kataokanamespace latinime { 233107b467c91c471ce4e00c5d8de559f7b0da2cd6Satoshi Kataoka 243107b467c91c471ce4e00c5d8de559f7b0da2cd6Satoshi Kataokaclass DicNode; 253107b467c91c471ce4e00c5d8de559f7b0da2cd6Satoshi Kataokaclass DicTraverseSession; 26d73edf23aca59e6a0a83a79cf24db3850ef473ffKeisuke Kuroyanagiclass SuggestionResults; 273107b467c91c471ce4e00c5d8de559f7b0da2cd6Satoshi Kataoka 283107b467c91c471ce4e00c5d8de559f7b0da2cd6Satoshi Kataoka// This class basically tweaks suggestions and distances apart from CompoundDistance 293107b467c91c471ce4e00c5d8de559f7b0da2cd6Satoshi Kataokaclass Scoring { 303107b467c91c471ce4e00c5d8de559f7b0da2cd6Satoshi Kataoka public: 313107b467c91c471ce4e00c5d8de559f7b0da2cd6Satoshi Kataoka virtual int calculateFinalScore(const float compoundDistance, const int inputSize, 3254622d38c246cb5b2ccb24c6756df25b0ce730f4Keisuke Kuroyanagi const ErrorTypeUtils::ErrorType containedErrorTypes, const bool forceCommit, 3354622d38c246cb5b2ccb24c6756df25b0ce730f4Keisuke Kuroyanagi const bool boostExactMatches) const = 0; 34d73edf23aca59e6a0a83a79cf24db3850ef473ffKeisuke Kuroyanagi virtual void getMostProbableString(const DicTraverseSession *const traverseSession, 35d73edf23aca59e6a0a83a79cf24db3850ef473ffKeisuke Kuroyanagi const float languageWeight, SuggestionResults *const outSuggestionResults) const = 0; 363107b467c91c471ce4e00c5d8de559f7b0da2cd6Satoshi Kataoka virtual float getAdjustedLanguageWeight(DicTraverseSession *const traverseSession, 373107b467c91c471ce4e00c5d8de559f7b0da2cd6Satoshi Kataoka DicNode *const terminals, const int size) const = 0; 3821e2380234f5f2bf069239e76b0fa8758b67b6a7Keisuke Kuroyanagi virtual float getDoubleLetterDemotionDistanceCost( 3921e2380234f5f2bf069239e76b0fa8758b67b6a7Keisuke Kuroyanagi const DicNode *const terminalDicNode) const = 0; 409ee90955287d616158ad4cf099c4772f58c16942Keisuke Kuroyanagi virtual bool autoCorrectsToMultiWordSuggestionIfTop() const = 0; 419ee90955287d616158ad4cf099c4772f58c16942Keisuke Kuroyanagi virtual bool sameAsTyped(const DicTraverseSession *const traverseSession, 429ee90955287d616158ad4cf099c4772f58c16942Keisuke Kuroyanagi const DicNode *const dicNode) const = 0; 433107b467c91c471ce4e00c5d8de559f7b0da2cd6Satoshi Kataoka 443107b467c91c471ce4e00c5d8de559f7b0da2cd6Satoshi Kataoka protected: 453107b467c91c471ce4e00c5d8de559f7b0da2cd6Satoshi Kataoka Scoring() {} 463107b467c91c471ce4e00c5d8de559f7b0da2cd6Satoshi Kataoka virtual ~Scoring() {} 473107b467c91c471ce4e00c5d8de559f7b0da2cd6Satoshi Kataoka 483107b467c91c471ce4e00c5d8de559f7b0da2cd6Satoshi Kataoka private: 493107b467c91c471ce4e00c5d8de559f7b0da2cd6Satoshi Kataoka DISALLOW_COPY_AND_ASSIGN(Scoring); 503107b467c91c471ce4e00c5d8de559f7b0da2cd6Satoshi Kataoka}; 513107b467c91c471ce4e00c5d8de559f7b0da2cd6Satoshi Kataoka} // namespace latinime 523107b467c91c471ce4e00c5d8de559f7b0da2cd6Satoshi Kataoka#endif // LATINIME_SCORING_H 53