6 #ifndef _FCITX_LIBIME_CORE_LANGUAGEMODEL_H_ 7 #define _FCITX_LIBIME_CORE_LANGUAGEMODEL_H_ 14 #include <string_view> 16 #include <fcitx-utils/macros.h> 18 #include <libime/core/libimecore_export.h> 22 using WordIndex =
unsigned int;
23 constexpr
const unsigned int InvalidWordIndex =
24 std::numeric_limits<WordIndex>::max();
25 constexpr
size_t StateSize = 20 +
sizeof(
void *);
26 using State = std::array<char, StateSize>;
30 class LanguageModelPrivate;
31 class LanguageModelResolverPrivate;
37 virtual WordIndex beginSentence()
const = 0;
38 virtual WordIndex endSentence()
const = 0;
39 virtual WordIndex unknown()
const = 0;
40 virtual const State &beginState()
const = 0;
41 virtual const State &nullState()
const = 0;
42 virtual WordIndex index(std::string_view view)
const = 0;
43 virtual float score(
const State &state,
const WordNode &word,
44 State &out)
const = 0;
45 virtual bool isUnknown(WordIndex idx, std::string_view view)
const = 0;
47 float singleWordScore(std::string_view word)
const;
48 float singleWordScore(
const State &state, std::string_view word)
const;
49 float wordsScore(
const State &state,
50 const std::vector<std::string_view> &word)
const;
65 std::unique_ptr<StaticLanguageModelFilePrivate> d_ptr;
73 std::shared_ptr<const StaticLanguageModelFile> file =
nullptr);
76 static size_t maxOrder();
78 std::shared_ptr<const StaticLanguageModelFile> languageModelFile()
const;
80 WordIndex beginSentence()
const override;
81 WordIndex endSentence()
const override;
82 WordIndex unknown()
const override;
83 const State &beginState()
const override;
84 const State &nullState()
const override;
85 WordIndex index(std::string_view word)
const override;
86 float score(
const State &state,
const WordNode &node,
87 State &out)
const override;
88 bool isUnknown(WordIndex idx, std::string_view word)
const override;
89 void setUnknownPenalty(
float unknown);
90 float unknownPenalty()
const;
92 unsigned int maxNgramLength(
const std::vector<std::string> &words)
const;
95 std::unique_ptr<LanguageModelPrivate> d_ptr;
107 std::shared_ptr<const StaticLanguageModelFile>
108 languageModelFileForLanguage(
const std::string &language);
112 languageModelFileNameForLanguage(
const std::string &language) = 0;
115 std::unique_ptr<LanguageModelResolverPrivate> d_ptr;
126 languageModelFileNameForLanguage(
const std::string &language)
override;
134 #endif // _FCITX_LIBIME_CORE_LANGUAGEMODEL_H_ a class that provides language model data for different languages.
Provide a DATrie implementation.