17 std::map<std::string, size_t>
count;
31 for(
size_t i=0;i<=s.size()-
n;i++) {
32 auto x = s.substr(i,n);
33 auto y = s.substr(i,n-1);
34 count[x] =
get(
count, x, 0) + 1;
43 for(
size_t i=0;i<=s.size()-
n;i++) {
44 auto x = s.substr(i,n);
46 auto y = s.substr(i,n-1);
48 count[x] =
get(
count, x, 0) + 1;
73 return (
get(
count, x, 0) + lambda) / (
get(
count_nm1, x.substr(0,x.size()-1), 0) + lambda * alphabet_size);
int n
Definition: CharacterNGram.h:16
std::map< std::string, size_t > count_nm1
Definition: CharacterNGram.h:18
CharacterNGram(size_t _n)
Definition: CharacterNGram.h:22
Definition: CharacterNGram.h:14
void train(std::string s)
Definition: CharacterNGram.h:26
std::map< std::string, size_t > count
Definition: CharacterNGram.h:17
virtual double probability(const std::string &)=0
virtual double probability(const std::string &x) override
Definition: CharacterNGram.h:68
void masked_train(const std::string &s, char mask)
Definition: CharacterNGram.h:39
AddLambdaSmoothedNGram(int _n, int a, double l)
Definition: CharacterNGram.h:64
bool contains(const std::string &s, const std::string &x)
Definition: Strings.h:53
Definition: CharacterNGram.h:57